Today most enterprises want to build and deploy awesome mobile apps on multiple devices for their employees and customers. But when it comes to UI technology most are stumped. If I were to pick the most common question that we encounter in discussions with customers it would be, How do I build apps for all devices? (this is typically iOS and Android). Follow-ups to that are: What UI should I choose? How can I build once and run anywhere? What skills should we ramp up on? The list is endless.
First up the UI choice needs to lend itself to your need and not the other way round. At Unvired our normal approach is to find out what that need is and then recommend the technology solution.
I want to deploy native apps with fantastic user experience, fast performance, hardware integration and so on.
If your need falls into this category you are typically looking to build native applications using the vendor’s prescribed technology. These are:
- iOS – Objective C (more recently Swift) using the XCode IDE from Apple
- Android – Java using the Eclipse IDE or the Android Studio
- Windows – C#/.Net using the Visual Studio IDE
All platforms come with their own set of challenges based on the OS version to support. This is more under control with Apple where you are usually covered if you support the latest version and the one lower (for e.g. iOS 8.x and 7.x). It’s more complicated with Android given the disparate devices and OS distribution and you should opt for the OS version with the most installed base for e.g Kitkat or 4.4. You are also well served if you use the standard APIs and do not depend on any vendor/device dependent APIs from Samsung, Sony, etc.
I want to build apps once and deploy them on multiple devices.
This is the trickier questions as there are a few choices. This usually needs further qualification on what skills the company has or alternatively what they would prefer in addition to the end application’s requirements.
Web technology, hybrid apps that do not require any major hardware integration, etc.
The most obvious choice, in this case, is to build hybrid HTML5/JavaScript apps using the Apache Cordova/PhoneGap (http://cordova.apache.org/) plugin. This allows to build, host and deploy hybrid (native-like) apps that render the UI in a web view with standard HTML5 look and feel. The advantage is that the technologies used are typical web technologies like HTML5, JavaScript and CSS and web developers will be able to code them. Some understanding of the mobile paradigm is definitely necessary. The plethora of CSS/JavaScript frameworks can be utilized to build some really cool apps. However, performance can be an issue with lag on some devices, transitions not being smooth, low touch sensitivity etc. This technology is evolving and will only improve further.
Native apps that can be deployed on any device
Xamarin (http://xamarin.com) is your best choice here (at least for now, more on that later). Mobile applications can be developed in C#/.Net and deployed on iOS, Android and Windows tablets. The code compiles into native applications and hence offer a native user experience. The User interface can be developed once for multiple devices using Xamarin Forms or alternatively, separate UI for Android and iOS devices can be developed with common business logic.
A new kid on the block here is Telerik NativeScript (http://www.telerik.com/nativescript) with an imminent release in April/May 2015. Telerik is positioning NativeScript as a JavaScript framework that can be used to develop mobile applications that are finally packaged as native applications. So these applications will not render in a web view on the device but will render as native applications. This is new technology under development and needs validation/adoption.
So now that you know them all, what’s your choice?