Mobile development -- develop for which platform(s)?

Just when we thought development was boring and done, along comes a plethora of new hand held devices, tablets, pads, smart devices and phones.  Apple, with it's iPhone and iPad, has turned the thermostat up for developers.  Apple iOS, Google Android, Windows Phone 7 have all raised the level of capabilities and programmability way beyond the mobile development of the past 10 years.

Gartner Group, in a research report back in September, said "Symbian and Android will dominate by 2014".  Gartner said that they would account for almost 60 percent of the worldwide mobile OS market.  IDC, in their IDC mobile OS research report around the same time, also said that Symbian and Android would be number one and two.  They both also listed RIMM's Blackberry and Apple's iOS platform as the next in line by market share.  Microsoft, with the recent rebirth of Windows mobile (called Windows Phone 7) is also mentioned in both reports.

For developers, all of this renewed vitality brings a cornucopia of opportunities as well as the challenge of which platforms to support.  In this multi-part Computerworld blog I will give an overview of each of the popular (and not so popular) mobile OS options for developers.  In each part, I will cover the programming languages, SDKs, the marketplaces and example applications for one of the platforms.

Here is an overview of the available mobile platform OS SDKs (there are platforms but according to marketshare and excitement, these are the choices that developers should care about):

Symbian (Nokia) -" the world's most widely used smartphone platform".  Developers can use C, C++, Python, Ruby, Flash Lite and Java ME programming languages (.NET was supported at one time, but is no longer available). C++ developers can use the Nokia Qt UI framework.  Web application developers can also use HTML, JavaScript, CSS and AJAX.

Android (Google)- Java based software stack for mobile application development.  The Android SDK includes: Linux kernel, application framework libraries (window manager, activity manager, package manager, resource manager, telephony manager, location manager, notification manager, view system).  The Dalvik virtual machine, integrated browser (based on Webkit engine),   2D and 3D graphics libraries, SQlite for structured data, support for audio, video and image formats, eclipse development plug-in.  Developers can also build high performance portions of their applications using native code (C, C++, assembler).

Blackberry (RIMM) - Java development tools for the Blackberry application platform used by "over 41 million" Blackberry users.  Java application development is based on Java 6 - includes rich client UI APIs, device integration APIs, WiFi geolocation and travel time APIs, the Java runtime, Eclipse development plug-in or legacy Blackberry Java Development Environment (JDE).  Blackberry Web development is based on the Webkit rendering engine and includes support for HTML5, CSS3 and JavaScript.  The Blackberry application platform services include:  locate service, push service, advertising service, payment service and web signals.

iOS (Apple) - SDK for building iPhone, iPad and iPod touch applications.   Application developers can use several frameworks to build iOS applications: OSX kernel, BSD sockets, Cocoa touch framework (uses MVC pattern), UIkit framework, Quartz  2D and OpenGL ES 3D graphics, Game kit, WebKit, Core Data (data model framework), Core Animation, Media player framework, HTTP live streaming, audio/video foundation, accessibility APIs, and SQLite.  Development environments include command line tools, Apple XCode development environment and the  MonoDevelop for Macintosh IDE. Programming language support includes C, C++, Objective C, C#, Delphi Prism and other native and managed code languages (note:  the original iOS4 SDK had a clause that restricted what programming languages and runtimes you could use.  Apple has now said that developers can use anything to create iOS applications).

Windows Phone 7 (Microsoft) - Microsoft's next generation mobile platform.  Developers can chose to build application using the Silverlight or XNA frameworks.  Use Silverlight for rich internet style user interfaces using event driven, embedded video, web browser and phone control based applications. Use XNA for high performance 2D and 3D games.  The platform architecture comprises 4 main technologies:  runtime, tools, cloud services and portal services.  The phone frameworks include:  sensors, camera, device integration, map control, push notification, web browser control and pause/resume.   There is also a common base class library for use with both Silverlight and XNA frameworks.  Developers can use any .NET programming language including C#, VB.NET, Delphi Prism and others.

With the competition for smartphones, tablets/pads and devices heating up, these are spectacular times for developers.  While the pace of innovation on desktop PCs and servers has slowed down, the pace of innovation for these new mobile platforms is "hot, hot, hot"!

In future editions of this blog, I will dig deeper into each of the mobile platforms and the opportunities and challenges they hold for developers.

Programming is Life!

Recent news for developers:

David Intersimone (David I) is the Vice President of Developer Relations and Chief Evangelist for Embarcadero Technologies. My company blog is at Note: This is a weblog of David Intersimone. The opinions expressed are those of David Intersimone and may not represent those of Computerworld.

Copyright © 2010 IDG Communications, Inc.

7 inconvenient truths about the hybrid work trend
Shop Tech Products at Amazon