Archives

Archives / 2013 / September
  • Hybrid mobile applications–what is it–what are the tools

    As mentioned in a previous blog post I am going to write some observation posts on development tools that can be used to write hybrid mobile applications. What is a hybrid mobile application in my thoughts? I see it as a:

    • platform specific native “shell” application
    • utilizes a browser control as its rendering surface
    • provides an API that gives access to native device functions (camera, contacts, …)
    • makes the API available to Javascript running in the browser control
    • the application functionality is written using HTML, CSS and Javascript in the spirit of building web apps
    • the application specific code can be bundled and ”injected” into the shell application
    • the functionality provided by the shell application can be extended with plugins that are written for the native platform and provides additional API functions to the Javascript running in the browser control

    There are many other possible ways to think about hybrid mobile apps, but the slice of approaches I’m most interested in is the one where you utilize web standards to build your mobile applications. There is a great blog post by Udayan Banerjee called Cross-Platform Hybrid Mobile Application Development – a Tool Comparison where he goes into great detail on the huge set of different tools that are available in the broad sense of hybrid mobile apps. He divides the tools into:

    • Mobile Web (JavaScript-CSS library), (see this)
    • Visual Tool (No access to Code), (see this)
    • App Generator (Native application for multiple platforms), (see this)
    • Hybrid App (Leverages embedded browser control), (see this)
    • Game Builder (see this)

    I will only discuss tools that are in the Hybrid App space.

    See the following post for some of my observations on tools in this space: (not written in the specified order)

    • Cordova (to be written)
    • PhoneGap / PhoneGap Build (to be written)
    • Intel XDK (to be written)
    • Red-gate Nomad (to be written)
    • Icenium (to be written)
    • DevExpress DevExtreme (to be written)

    I will update the links when the posts are written.

  • Developing mobile apps–too many options?

    It is unbelievable how many companies jumped on the mobile app development bandwagon.

    In the early days life was easy. When you developed for iOS (iPhone, iPod Touch and iPad) you bought a Mac, downloaded XCode and started programming in Objective-C. For Android you grabbed a PC, downloaded the Android SDK and Java was your best friend. And for Windows Phone (yes it still exists) you downloaded a version of Visual Studio, the Windows Phone SDK and you started to hack away in good old C#.

    The new trend for mobile apps that don’t ask too much from the platform (say non-game, and non-multimedia applications) is to develop them cross-platform without the need to rewrite the applications multiple times in different languages.

    Wikipedia gives a nice overview of some of the available mobile application development platforms at http://en.wikipedia.org/wiki/Mobileapplicationdevelopment. And this overview is even far from complete.

    Within the development platforms you see broadly two options for developing your cross-platform mobile apps:

    1. Development in one language for a native UI, where the interaction patterns are phone specific
    2. Development one one language for a cross-platform UI, where the interaction patterns are app specific

    Of course there are all kind of mixes of the above two options, for example Appcelerator where you develop your code in Javascript with a platform independent API to create native UI elements, or a lot of JavaScript libraries like PhoneJS en KendoUI where you render web technology widgets using HTML, CSS and Javascript that try to behave like native widgets.

    I am very interested in the Xamarin approach where you can use C# as the common app language, but create a native UI per platform. But I am also a strong believer of the “hybrid” development approach where you develop your application using HTML, CSS and Javascript, and wrap your “application” in a host application for packaging and deploying to the app stores.

    In some following posts I will dive into a few of the development options for creating hybrid mobile applications using tooling like:

    All above options have their roots in the Cordova project.