Development Applications on big devices vs mobile phones: Similarities/Disimilarities [closed]
I saw a news document on applications running in mobile devices. And, I believe that might be interesting for people where I 开发者_StackOverflow中文版live (Internet is not developed - but the cellphone networks are much better).
So here are my questions:
- Where can I find documentation for beginners on that matter
- (And most importantly) Am I gonna be able to take advantage of acquired knowledge in .NET framework (C#, MVC, JQuery, XHTML, ...)?
- Am I gonna need my laptop or a special device to develop applications?
- Am I gonna need Visual Studio?
- And so on...
Bref, What are similarities/dissimilarities between developments for applications running in big machines and those running on mobile phones?
Thanks for helping
In your situation, Windows Phone 7 may be a real contender - devices are around 3-6 months away from launch, but the developer tools are already available as a free download.
The application development environment is a pure .NET stack: C#, WPF, Silverlight frameworks or XNA (aimed at games), all hosted on Visual Studio 2010, and with a pretty decent emulator available.
I'm more of a kernel guy myself, but I found the development environment and the ease of development of very attractive applications extremely appealing.
BUT one thing I notice from your original mail is that it seems like you may be targeting developing country markets. In this case, it may be that iPhone, Android and Windows Phone 7 are really too expensive for many people, and you would be better off targetting lower cost devices. These are most often Java (J2ME), but on CDMA 2000 networks, BREW is also pretty common.
In the overall scheme of things, there is not so much difference in principle between desktop GUI application development and mobile application development for the more fully featured OS targets (Android, WP7, iPhone). From a practical perspective, however, you need to think about a few things you likely wouldn't worry about on a desktop device:
- Battery life, battery life, battery life. You need to structure your application to use energy like the precious resource it is. Polling is definitely out, and your application should try to be power aware.
- Memory usage needs to be considered carefully. There's rarely very much user RAM available on even fairly high-end devices (I think about 360MB on a Google Nexus One (Android) for example. This tends to mean that you will make use of persistent storage mechanisms rather than large on-memory data structures.
- Your GUI probably needs to be structured around a set of 'screens' rather than a single workspace (as is common on the desktop).
- Mobile versions of libraries tend to be somewhat less complete than their desktop counterparts.
- On many platforms, your application may get 'killed' by the OS if it is running low on memory, and your application needs to be aware of this. Again, persistent storage mechanisms tend to be preferred because of this.
If you decide to target J2ME or BREW, things are far more restricted still. J2ME apps can only rely on about 128kB of RAM, have a very limited set of screen widgets and need to deal with many different screen sizes. The upside is that there are hundreds of millions of J2ME capable devices out there - even very inexpensive devices support it.
On balance, if you want to stick with what you know, Windows Phone 7 is very compelling, but it's going to be a very high end platform to start with (1 GHz CPU, large WVGA display etc). Android may require a bit of learning, but has the significant advantage that some lower cost (say 199 USD) devices are starting to come out, but it remains a very capable and relatively unrestricted (compared to J2ME) platform.
BREW is something of a niche, but if you have a CDMA 2000 network locally, it's worth investigating. It's a bit painful (basically like COM programming, but in the RAW without the excellent Microsoft tools support), but you can get excellent results, and the distribution approach is actually pretty good.
First you should decide, if you want to specialize for a specific mobile device (e.g. Android, or IPhone) With your background you could also have a look on windows mobile devices. Documentations are available for all platforms and can easily be found via google. You CAN develop for both without an actual device, using only simulators or emulators, i would recommend the usage of a mobile device though.
For Android you need the Android SDK (obviously) And for the IPhone you need the IPhone SDK and a MAC.
Similiraties:
- Language (Java/ObjectiveC)
- Most of the well known design patterns can be applied in the mobile environment as well
Dissimilarities:
- Performance difference between mobile devices and big machines
- Different user interaction paradigms
The single biggest difference I can think of: The desktop paradigm "We have infinite RAM at our disposal, so let's just 'new' these objects up for later use." is fundamentally not successful on a mobile device with seriously constrained RAM space.
精彩评论