News & Analysis

Comment


danh

8/4/2010 2:29 PM EDT

Interesting article. The always-moving target and difficult trade-off decisions ...

More...



Frida189

8/2/2010 8:57 AM EDT

Although the question whether to choose web or native approach towards mobile ...

More...

Mobile application platforms: A developer's perspective

Vyacheslav Zavadsky

7/19/2010 12:45 PM EDT

I recently had a nightmare. I had been called into the boardroom and told that we needed to make sure Product X would work in a mobile environment. That got me scrambling, asking what, exactly, was meant by "mobile environment," which features of X would really be needed in that environment, what the use cases were-you know, the usual stuff a development manager will say to cover his butt and buy himself some time.

In my nightmare, I quickly had to decide what kind of platform we would develop and make sure that we positioned ourselves for growth of the X product line in the years to come. In the light of day, the relevant questions center on target market segments, the installed customer base, a rich API, access to trained engineers and developers, and a comprehensive development ecosystem.;

Whatever X is (an office or business workflow application, a game or an app to track baby weight), it is important to realize that it will exist in multiple editions-such as an ultimate desktop edition, a Web-hosted version and a mobile device edition-all with potentially different slices of functionality. (In a more pleasant dream, they might all be derived from the same code base.)

Figure 1. The relative importance of mobile platforms used to run Facebook Mobile in late 2009.
Click on image to enlarge.

Though the market buzz currently centers on Android and iPhone, there are a few more platforms worth mentioning: Java Micro Edition as an overall platform (to some extent it overlaps with Android), Microsoft, Palm, BlackBerry, MeeGo and Adobe Flash Lite. I would also argue that Bada/HTML5 apps will have a piece of the action in the nearby future.

And since just about everyone (Android, Bada, iPhone, Maemo, MeeGo, Moblin, Palm) provides some kind of Unix-like OS for smartphones (and other portable stuff), we should not forget about plain, ordinary C/C++/Python/TK and the like-or about Posix application development, for that matter. (To get a feel for the relative importance of the various platforms, see Figure 1, which shows the results of a 2009 analysis by Dirty Aura of the platforms used to run Facebook Mobile.)

To develop for a mobile platform, I would want to have access to both development talent and a strong ecosystem (consultants, training, user groups, community, open-source libraries, code samples and so on).

My first sad realization was that Bada, BlackBerry, Brew and Palm (webOS) would require me to sign a quite restrictive nondisclosure/license agreement before I could even get my hands on the development documentation and software development kit. That might have flown a couple of years ago, but nowadays mobile applications are becoming mainstream, so a platform has scant chance of success without public visibility, scrutiny and coverage in independent textbooks and courses.

The restricted platforms' limited exposure in this article (a missed media opportunity) is just another example of the impact of restrictive licensing practices.




Nic_Mokhoff

7/20/2010 2:40 PM EDT

Open platform development is the way to go. Write once and be available across multiple devices. Do these guys have the right idea? http://www.nitobi.com/products/phonegap/

Sign in to Reply



LarryM99

7/20/2010 4:41 PM EDT

For a brief period of time about six years ago I did game porting across cell phone platforms. At the time BREW was the closest thing to an OS environment that we had. Java was the language of choice on many handsets, but the libraries were, to put it kindly, sparse.
Just a history lesson to put things into perspective... :-)

Larry M.

Sign in to Reply



Mark Wehrmeister

7/21/2010 2:26 AM EDT

This is a great article about the complexities of writing code these days for mobile devices. Which platforms to support is always a moving target and who knows what the next great platform will be. Open source platforms are great for developers and hopefully eventually for consumers, but it's hard to argue with Apple's Market share in the mobile market and the ease with which applications can be written for that platform. As an iPhone user, I am thrilled by the depth and breadth of the applications available for my use and would have a hard time switching to an open source-based mobile device even if that platform is better for developers.

Sign in to Reply



MikeLC

7/21/2010 11:57 PM EDT

Yes, a great article.

I have been developing games for the iPhone/iPod Touch/iEtc for almost two years now and find it a fairly easy platform to develop for. Open Source is used underneath many of the game engines that I use, but still use much Objective-C at the higher levels of control. Still, using C++ for general algorithms, OpenGL, OpenAL, and such, combined with other Open Source libraries increases my ability to port.

Also, I believe the Android will be an ever increasing market and that the chart above is just too old to show it.

Finally, some of the commercial game engines are ramping up to support more than one mobile platform. I believe, for this reason, that we will see more usage of game engines to produce game, as well as non-game software, on mobile devices.

Sign in to Reply



Frida189

8/2/2010 8:57 AM EDT

Although the question whether to choose web or native approach towards mobile applications still holds ground, using the native platform is definitely my preferable line of choice. Simply because it gives more freedom to do cool stuff.

Regards...
Frida from Rapidsoft Technologies

Sign in to Reply



danh

8/4/2010 2:29 PM EDT

Interesting article. The always-moving target and difficult trade-off decisions seem to be characteristic of software development.

One correction i might make, though, is that Objective-C is not "a collection of macros for C that attempt to make it object-oriented". It has not been preprocessed into C since at least 1991 (when i first programmed on a NeXT): gcc compiles it directly. I think it's treatment of objects is something like Java (or at least like Java was last time i programmed in it a few years ago): every method is "virtual" so that you don't even need to know what "virtual" means.

This makes it somewhat more object oriented than C++ but probably somewhat less object oriented than some interpreted languages like javascript (where new methods can be added to objects at runtime).

Sign in to Reply



Please sign in to post comment

Navigate to related information

EE Buzz DesignCon

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)

Feedback Form