Keep track of all the latest news and events on developer tools and technologies you care about
Last week I had the pleasure of speaking to a few hundred people at Apps World on a session entitled Cross Platform Panel: Exploring Methodologies & Tools.
This is a fascinating area as today’s modern app developers are now ultimately having to become more agile in their abilities and use the best tools available to develop an app for as many platforms as possible within a shortest period of time to maximise the revenue their app or game can achieve.
However having to develop an application or game for a diverse range of mobile platforms iOS, Android, Windows Phone etc.. has a number of constraints which need to be taken into consideration for example each have their own ‘native’ development languages, UI/UX, developer tools and environments.
But for the modern developer there is an ever growing list of cross-platform frameworks that allow you to minimise the cost and effort of developing mobile apps, but which to choose?
Here is a list of some of the most common cross platform frameworks available for today’s mobile app builders.
Enyo is a free and open source (Apache 2.0 license) cross-platform and cross-browser application development framework that enables developers to create HTML5 applications and deploy them to many modern desktop browsers and mobile devices.
Enyo is built around the philosophy of fully-encapsulated components, which allow a developer to reuse component pieces (or even an entire application) in new or existing projects. It is possible to embed full Enyo applications in the DOM elements of existing Web pages.
Enyo has a dependency mechanism (package.js) to enable a basic modular approach to building applications. If you look at most Enyo projects, you will see references to a $lib directory in one or more package.js files, usually to include optional modules such as Layout (lists and responsive components) and Onyx (a widget library).
Intel App Framework is a framework for building cross-platform mobile application using HTML5 technologies. The framework started life as jqMobi, a mobile optimised version of jQuery, which was created by the team behind appMobi. Intel acquired the jqMobi tools and staff in February 2013.
Intel App Framework is free and open sourced under an MIT licence. Intel also offer XDK, which is a a full suite of tools built around the App Framework. XDK adds an IDE, build tools and an emulator.
jQTouch is a Zepto/jQuery plugin which provides a framework for developing iOS and Android applications. It is both open source and free to use.
jQTouch provides a structure on which to base the HTML, the majority of the application styling, page transition animations and touch based event handling; however, it’s not a fully featured application development solution.
iOS version uses the out-of-the-box jQuery Mobile styles
Windows Phone uses the jquery-metro-theme extensions to support the Windows UI style together with Windows Phone specific features such as the app-bar.
Kendo provide a suite of web development frameworks, all of which are built on top of the ‘core’ Kendo UI MVVM framework. The Kendo UI Mobile framework adds a set of UI widgets for the creation of mobile interfaces. The mobile framework has a look and feel that mimics the native Apple, Android and Windows Phone themes.
Lungo is a framework for developing cross-platform applications in HTML5. Lungo applications are run in the browser, similar to other HTML-based frameworks such as jQuery Mobile. Lungo provides 2 main workflows:
Lungo provides a rich set of classes to help decorate basic HTML5 markup. The markup is then given behaviour and interaction based on the structure by Lungo, without any developer code being required. Lungo’s philosophy is that you should be able to create a prototype of your application to show basic interaction and page flow without having to write any JS yourself.
Lungo also provides a JS API to interact and enhance the prototype. The Lungo API is similar to the common functionality you’d see in other mobile frameworks, such as DOM manipulation (through Quo.js), page routing and navigation, storage etc.
mgwt is an open source mobile widget framework build using GWT. mgwt provides a number of UI widgets, CSS styles and a PhoneGap API which make it easier to develop native-like applications using GWT.
PhoneJS is a commercial HTML5 framework for cross platform mobile application development from DevExpress. PhoneJS is free for non-commercial use.
PhoneJS uses the Knockout MVVM framework for structuring the application, with the PhoneJS CSS providing a native-styled UI for the various phone platforms. PhoneJS applications use PhoneGap for packaging.
DevExpress also offers a more integrated solution based on PhoneJS, called DXTREME Mobile, which adds Visual Studio tooling.
Titanium APIs provide an abstraction layer for the Android and iOS UI elements, allowing you to write your view code against the Titanium abstraction. Although, there are some view concepts which have not been abstracted, meaning that developers have to write platform specific view code
Xamarin have two commercial products, Xamarin.iOS for iOS development and Xamarin.Android. The Xamarin frameworks allow you to write applications using C# and the .NET framework. For each platform Xamarin provide bindings to the native platform APIs. As a result Xamarin applications make use of the native UI for each mobile platform. Xamarin do not provide a Windows Phone product because the C# and .NET code used for Android and iOS development is directly portable to Windows Phone.
What resources are available to help evaluate which is the best solution?
To help solve this problem PropertyCross presents a non-trivial application, for searching UK property listings, developed using a range of cross-platform technologies and frameworks. Property Cross has a simple aim is to provide developers with a practical insight into the strengths and weaknesses of each framework so this is a definite resource you should check out if your interested in cross platform development.
I would love to hear your experiences of developing apps and games for cross platform support and which tool you find the most useful?