In our 2012 analysis of the cross-platform development tools (CPT) sector, we have identified five distinct technology approaches being used:
Each technology targets a slightly different developer audience – from non-developers to seasoned programmers – and addresses different application use cases. These technology approaches are not mutually exclusive; many tools use a combination of technologies. For example some runtime-based CPT solutions are adding a webview component, which enables them to create hybrid web app wrappers.
App factories are code-free, visual design tools for quickly building simple mobile applications. They consist of a development environment (installable or cloud-based) that uses template-based, drag and drop or wizard-based capabilities to generate the app code. At their simplest, app factories can be used to create RSS-based news readers or no-frills branded apps. At the next level up they provide a basic drag and drop designer. At their most advanced they provide a code-free, component-based design approach that includes device and cloud integration.
App factories allow non-developers to “create their own app”. Some app factories allow developers to view and tweak the code generated by the tool. Others include a range of post-download services including analytics, push notifications and ad management. Examples include AppMkr, AppsGeyser, Wix Mobile, Tiggr, Mobile Nation HQ, Mobjectify, Red Foundry and Spot Specific.
A runtime is an execution environment and cross-platform compatibility layer that sits atop the native operating system. A runtime essentially shields the app from differences between underlying platforms. Runtimes vary in size and complexity, and execute code on the device using several different methods – virtualization, interpretation, just-in-time compilation or ahead-of-time compilation.
Java ME, BREW, Flash Lite and Openwave MIDAS were early runtime pioneers. These heavyweight execution environments seemed half way between a browser and a full operating system. They lost popularity in the late 2000s due to their poor developer story (platform fragmentation and no direct route to market), poor handset OEM proposition (integration complexity), and competition with Android, iOS and HTML5 browsers.
Today’s cross-platform runtimes offload complexity from the device software layer to the design-time development tool. Often, part of the cross-platform translation happens at design-time (through translation into bytecode) and part at run-time (by executing that bytecode). Examples of runtimes are Appcelerator, Adobe Flex (and AIR), Corona, AppMobi, Antix and Unity. Runtimes target software developers looking for broad reach across native platforms or across screens (mobile, PCs, games consoles, TVs).