Based on analyst reports, smart mobile operating systems are expected to eclipse desktop OSs in prevalence and importance within the next few years. Consequently, more people will be using mobile devices as their primary mode of digital communication and network interaction. Apple, BlackBerry, Google, Microsoft, Nokia, and others are fiercely competing to dominate this latest computing frontier—with each company luring application developers with rich SDKs that are designed to accelerate the development experience while providing as much access to native device functionality as the specific mobile OS will allow. However, the time and effort required to master these native SDKs is substantial. Unsurprisingly, our corporate competitors use this constraint to their advantage, recognizing that few developers have the bandwidth to attain Zen-like specialization in more than one or two platforms. And even that goal is elusive, considering the frequency of SDK updates, hardware upgrades, the on-device application testing requirements, and other activities that consume a developer's day.
There has to be a better way. I'll take a look here at several tools that claim to make cross-platform mobile application development an easier, more unified experience. Some of the solutions reviewed include features that are still under development and that may change before the final shipping release. This simply underscores the fact that the market demand for such tools is shifting and expanding faster than almost any other segment of the IT sector. It also emphasizes the growing demand for a killer, all-encompassing solution. Do any of the six products evaluated in this article approach the silver bullet dream? Let's take a look.
Adobe Flash Professional CS5
One of the first cross-platform mobile development solutions to appear on the scene was Adobe's Flash technology. With its Flash Player already ubiquitous in the desktop computing space, Adobe defined its strategy early on to make its Flash runtime available to as many mobile OSs as possible. What the company failed to anticipate was Apple's initial reluctance to allow the deployment of the Flash runtime to the iPhone, a significant impasse that stunted the expansion of Flash on one of the most popular mobile platforms to date. In response to this constraint, Adobe introduced functionality for compiling its runtime into Flash-coded applications. However, Apple countered by initially barring such third-party–compiled applications from its iTunes App Store, nearly killing the project. This affected not only Adobe but several other companies and open source project frameworks as well. Fortunately, Apple eventually relented and allowed the deployment of apps built with third-party toolkits into its distribution network, and Adobe's iOS app strategy was back on track.
The tool itself is called Packager for iPhone, and it comes bundled with Adobe Flash Professional CS5. Figure 1 shows the UI that Flash Professional CS5 provides to configure Packager settings.
Figure 1: Adobe Flash Professional CS5 for packaging native iOS applications using a PC or Mac
The tool is very easy to use and can compile Flash applications to iOS-native executable .ipk files on both Mac OS X and Windows platforms. Pre-constructed templates for both the iPhone/iPod Touch and iPad form factors make it very easy for designers and developers to resize visual assets and to port code from existing projects. And even though the Flash source code is based on ActionScript 3, performance is snappy enough, for the most part. For this, we can thank the fact that the code is compiled into standard native iOS executables, as no runtime interpreter could be used to run typical Flash bytecode.
As for other mobile platforms, such as Android and Windows Mobile (with plans to have the runtime available for Windows Phone 7), Flash app deployment and instantiation is similar to its Flash for Desktop counterpart. Using the mobile web browser, go to a web page that has an embedded Flash presentation, and you'll see that the Flash runtime kicks in and interprets the embedded .swf file. While this makes life easier for developers who are deploying and maintaining their Flash programs across a variety of OSs, the user experience is affected by the lowest-common–denominator approach that is required to ensure platform compatibility and adequate rendering performance for less powerful mobile devices. Nevertheless, Adobe's solution is a win for the legion of Flash developers who have accumulated years of experience, code, and media assets.
- established developer base
- excellent iOS app-conversion facilities
- entrenched technology with extensive documentation and resources
- unpredictable Flash runtime support on Android OS devices
- potentially resource intensive, especially on older mobile hardware
- multiple testing scenarios on various devices running different versions of Flash
Rating: 4/5 stars
Genuitec's MobiOne Studio
Rather than creating a tool that compiles native applications, Genuitec has taken the iPhone 1.0 approach of building web-centric programs for browser-based network apps. Think of it as Adobe Dreamweaver specifically tailored for the iPhone, Palm Pre, and (soon to come) Android web browsers. As shown in Figure 2, MobiOne Studio's drag-and-drop toolkit allows for extremely fast creation of mobile web browser UIs.
Figure 2: MobiOne Studio's drag-and-drop HTML/CSS code generator, geared toward mobile device browsers
It is excellent for both rapid prototyping and template construction for further HTML code editing in a design tool such as Dreamweaver. As such, MobiOne Studio is tailored more toward designers, although developers seeking a mobile web app GUI builder will be pleasantly surprised by how easy and intuitive it is to use. Simply select an item from the tabbed palette of tools, drag it onto the design surface, set the object's properties, export the project to HTML, and you're done. MobiOne handles the HTML and CSS and even integrates with jQTouch for attractive, native-like iPhone page-transition animations.
The tool currently runs on Windows, although a Mac OS X version is under consideration. And while designers may be able to replicate the functionality in the more expensive and steeper–learning-curve Dreamweaver, MobiOne Studio's approach fills the niche for rapid mobile web GUI toolsets especially well.
- simple drag-and-drop, HTML-centric GUI toolkit
- supports jQTouch (jQuery plug-in for mobile web development)
- reasonably priced
- currently supports only iOS and Palm Pre browsers (Android due first half of 2011)
- executes exclusively on Windows (although a Mac OS X version is being considered)
- does not generate native application files (although determined developers could bundle the HTML output into a standalone reader application)
Rating: 3/5 stars
MoSync Basic Pro
Of all the solutions examined in this article, none suits the full range of mobile devices better than MoSync. This open source, cross-platform, Eclipse-based IDE—preconfigured with support for Android, iOS, Java ME, Symbian, and Windows Mobile devices—offers C++ developers the latitude to develop an application that takes advantage of phone hardware features such as GPS and Bluetooth (see Figure 3).
Figure 3: MoSync Basic Pro's multifaceted development environment for C++ developers
A number of custom classes help abstract GUI and other functional elements to deliver a multi-device application requiring little or no source code modification. For example, using the MoSync API for User Interfaces (MAUI), developers can create a consistent look and feel across the range of devices that MoSync supports.
Although the product is sophisticated and its price is right, MoSync is still a work in progress. Some of the more sophisticated features, including access to accelerometer hardware and push notification APIs, are not yet available. Additionally, the learning curve can be steep, especially if C++ is not your primary programming language. Nevertheless, for those seeking an ecosystem capable of compiling C++ code to a wide and expanding universe of diverse mobile devices, MoSync may help you achieve that goal.
- supports a broad range of mobile platforms
- extensive API supports Bluetooth, GPS, camera, and other phone hardware
- open source model protects against proprietary API lock-in
- iOS-targeted apps require iPhone SDK and Xcode to finalize the build.
- Generic software emulators make hardware deployment and testing mandatory.
- Some features (GUI builder) and advanced APIs (e.g., sensor, messaging, .camera) have yet to be constructed.
Rating: 4/5 stars
Price: Free to $4100; $272 for annual Basic Pro subscription
Novell's MonoDroid and MonoTouch
The legions of Windows platform developers skilled in the C# language are the primary market for MonoDroid and MonoTouch (see Figures 4 and 5, respectively).
Figure 4: Novell MonoDroid: C# development alternative to native Android SDK
Figure 5: Novell MonoTouch UI for seasoned C# developers
These commercial development environments, based on the foundation of the open source Mono Project, let you create Android or iOS applications using the C# syntax and base assemblies that are already familiar to experienced C# developers.
The iOS-focused MonoTouch has some system requirements that may deter Windows-centric developers. MonoTouch requires the Apple iPhone or iPad SDK (or both), which runs only on newer Mac hardware and which also requires annual Apple developer membership dues to deploy compiled programs to an iOS device. Therefore, MonoTouch is far more developer platform-centric than the Android-targeted MonoDroid. (For a more comprehensive review of MonoTouch Enterprise, go to tinyurl.com/48ntmwz.) MonoDroid can run either as a Visual Studio plug-in on a Windows-based computer or within the same MonoDevelop IDE that MonoTouch requires on the Mac.
Since both MonoDroid and MonoTouch are tailored to the mobile platforms they target, the code base for a MonoDroid application will take some effort to port to the MonoTouch environment, and vice versa. Forward-thinking developers may be able to abstract out a good deal of functionality into classes that don't rely on the target platform hardware, but doing so will require intelligent planning and application architecture design skills. For the most part, though, these Mono products are distinct and highly specific to the platforms they target. The binaries they generate take advantage of all the hardware, UI, and design guidelines of either the Android or iOS platforms, and they perform so well that few users will even know they are running a Mono-based application.
- excellent development solution for seasoned C# developers
- produces binary apps that have a native platform look and feel
- libraries that offer the same level of access to mobile hardware as found in each platform's native SDKs
- MonoTouch requires Apple hardware running OS X v10.6 or later.
- MonoTouch and MonoDroid are two separate platforms; you cannot recompile projects from one to the other without significant code modification.
- No Linux version of MonoDroid is available.
Rating: 4/5 stars
Website: www.monotouch.net, www.monodroid.net
Price: MonoTouch—starts at $399 ($99 for student edition); go to monodroid.net for MonoDroid pricing
Radical Breeze's Illumination Software Creator 3.0
Radical Breeze makes the bold claim that Illumination Software Creator lets anyone create their own software applications without writing a single line of code. The product includes a REALbasic-based visual code generator that lets users link form elements to actions, as seen in Figure 6.
Figure 6: Illumination Software Creator: native platform code based on diagramming of UI and application flow
For example, by pressing a button on one form, you can display the results of a calculation on another form. The tool can be used to generate code for various desktop and mobile platforms, which can then be brought into those respective platform compilers to generate native applications.
Using the software is simple enough. You can select various UI elements, variables, and control flow operations from an organized drop-down list. You can then drag these items onto the project palette and link them to various exposed methods. The design metaphor will be familiar to anyone who has used Apple's Interface Builder tool. Once the application logic has been drawn, the Run icon generates—and in the case of Flex apps, compiles and executes—the design (assuming the Flex SDK is installed in the correct location on the system).
Although Illumination Software Creator does succeed in its claims, its use beyond simple form flow is severely restricted. Anything beyond simple calculations requires the insertion of code to help with the logic generation, and this code often requires further tweaking to get it working as intended on the target platform. Additionally, form elements cannot be visually positioned and manipulated to appear in precise locations, but instead require further editing and tweaking of the forms within the native target IDEs. Lastly, editing anything more than a dozen items within the design palette becomes unruly, since there is currently no support (at the time of this review) for collapsing and expanding related items; for performing group-lock, group-move, or group-delete operations; and for easily managing large, complex project flows.
I appreciate the lofty goal that this tool strives for, and I can see it being used for extremely simple multiplatform app-screen prototyping. I think it could also be useful as a simple utility to help novice developers get acquainted with the code syntax and function calls for the supported mobile platforms.
- generates native code output for Android, iOS (iPhone, iPod Touch, and iPad), and Windows Phone 7 environments
- useful for prototyping designs and for learning differences in code for each supported platform
- requires SDKs for each platform to compile generated code
- no control over placement of UI elements on form mockups
- limited functionality beyond generic UI, rudimentary control flow, and calculations
Rating: 3/5 stars
RunRev's LiveCode 4.5
Although the RunRev LiveCode multi-OS development environment has been around for some time, the company has released a series of mobile deployment packs within the last year that allow RunRev projects to migrate to mobile platforms such as iPhone/iPad, Windows Mobile, and (arriving some time in 2011) Android.
The RunRev development experience is somewhat based on the old HyperCard programming model (en.wikipedia.org/wiki/Hypercard); those old enough either to remember or to have developed HyperCard stacks will see a number of similarities in RunRev. The product, shown in Figure 7, also looks as though it was inspired by AppleScript and even by Visual Basic in its code syntax and structure.
Figure 7: LiveCode mobile deployment packs for deploying single code base to Android, iPhone, and Windows Mobile
After negotiating the relatively easy learning curve, creating new LiveCode programs that take advantage of hardware features found in the iOS and Android platforms (such as multi-touch, accelerometers, and device orientation and location information) is fast and straightforward. And few if any code changes must be made to run the same project on an iPhone versus an Android OS. One of the cooler features RunRev is working on is a "live deploy" feature that will allow developers to update their own iOS and Android development devices to instantly test revisions of their applications.
- excellent platform-specific support from a single code base
- adequate documentation and active, company-sponsored forum participation
- intuitive, easy-to-use form design tools
- weak support for native UI controls
- proprietary code syntax
- expensive commercial license
Price: $99 to $1499
Platform-specific SDKs such as those for Apple's iPhone or Google's Android will continue to be the best way to develop native applications for those operating systems. None of the tools reviewed here can replace the depth and specificity that those explicitly targeted software tools deliver. That said, the time and effort required to learn the nuances and very different language and development philosophies of the leading mobile devices is exceptionally demanding and may not be necessary if you intend to deliver a relatively simple application that does not rely on exclusive hardware-specific features that each platform has to offer.
If I had to pick a favorite among the products highlighted in this article, I'd cast my vote for RunRev LiveCode. This product delivers a consistent UI to several popular desktop and mobile platforms from the same code base. While it could do better at supporting native UI controls on mobile devices such as the iPhone, its support for native hardware features such as accelerometers, multi-touch displays, and GPS, coupled with its simple syntax, makes RunRev useful for both prototyping and end-product delivery. Running a close second is MoSync for C++ developers, and MonoDroid and MonoTouch for C# programmers. Smart developers should be able to abstract away enough of the base functionality of their applications to libraries that can be easily recompiled on their target mobile OS of choice. Running a distant third is Adobe's Flash. While the ability to compile a Flash presentation into a native iPhone application is attractive, running Flash on Android is still a limited and unpredictable venture. The runtime resources can also be a constraint on older or less-capable Android hardware.
Regardless of the winning solution, the fact remains that developing native mobile applications for a broad variety of platforms is a challenge that has yet to be perfected. While it is in the best interests of the various OS and hardware manufacturers to have developers swear allegiance to the manufacturer's SDK, it is in the best interests of the developers to continue to seek and demand an ideal tool to write once, run anywhere. Sounds familiar, doesn't it?
Mike Riley ([email protected]) is an advanced computing professional specializing in emerging technologies and new development trends. He is also a contributing editor for DevProConnections. Follow Mike on Twitter @mriley.