Previously, we examined the business and technology concerns around building applications for each smartphone platform. Here we investigate the options for application development on each platform and what tools are are necessary to build them.
Unfortunately there is no universal tool for app development. For example, BlackBerry and Windows Mobile Development require a Windows Environment, where iPhone requires OSX. The closest thing to a consistent application model supported on all the smartphones is a Webapp but these take completely different forms on a BlackBerry than on a Palm Pre. Java developers with Eclipse experience have a bit of an edge because this covers BlackBerry, Android, Symbian, and JavaME. Similarly, if the iPhone is not the target device then Windows is the operating system of choice because it allows some form of development on every other platform.
Below is a chart contrasting all the programming languages, recommended IDEs, supported desktop environments, and limitations for each smartphone platform. Several things to note:
- Native, as used below, does not refer to machine code, but rather applications which interact with the OS to access all provided hardware and software facilities such as camera features and smartphone platform graphics.
- The Java ME column only refers to pure MIDP apps and excludes Java ME apps using extended libraries.
- Flash has not been considered here, as it will be covered in a separate, upcoming post.
- In discussing desktop operating systems we are only considering Windows, OS X, and Linux.
|Native Apps||Web Apps||Java ME (MIDP)|
|Android||Java SE + Android libs
||Only through the web browser||No|
|BlackBerry||Java ME + RIM libs
JDE on Windows only
Available through RAD
|iPhone||Objective-C + Cocoa Touch Library
(possible through jailbreaking)
Managed solutions also available
(not publicly available yet)
|Native apps are web apps||No|
|Windows Mobile||Native C/C++ using Visual Studio
Managed code with .NETCF
|Version 6.5 to support as .widget||Yes|
Research in Motion (RIM) provides a Windows-only Java Development Environment (JDE). An Eclipse plug-in is also provided, but again official support is only available for Windows. Limited functionality is possible in Linux and OS X through Wine/Darwine (respectively). Apps are written in Java Me using some RIM provided libraries for access to hardware such as the device PersistentStore and user interface elements. RIM has a unique approach to Web Apps by offering a Visual Studio plug-in to create RAD apps. BlackBerry devices also support MIDP apps.
Apple provides a full SDK for iPhone development that includes all the tools you will need to get started, but it is only available for OS X. Apps are written in Objective-C and make use of the Cocoa Touch library for UI. Anybody familiar with OSX programming will find themselves very much at home here. Web apps are supported on the iPhone, but Java ME is not.
Symbian supports a flavor of C++ for native development through the Eclipse-based Carbide.C++ IDE. Many Symbian devices also have support for OPL, Python, Visual Basic, Simkin, Perl, BREW, Ruby, Flash Lite, Java ME, and support for the .NET Compact Framework (.NETCF) via the commercial Net60. There are also plug-ins for Eclipse and Xcode. Symbian web apps are sandboxed so they have the advantage of not having to be Symbian Signed or certified like other Symbian OS apps.
The Windows Mobile Environment will be immediately recognizable to anybody already familiar with Windows Development tools. The phone supports native apps written in C/C++ or managed code taking advantage of the .NETCF. The ability to run Java ME binaries is also present. Web Apps are not currently available but are coming in the next release of Windows Mobile (6.5) due out this year.