Mobile programming: Native vs. HTML 5 vs. Titanium
Which platform to choose? The advantages and disadvantages when considering all aspects of development.
But what are the aspects to consider? These are the ease of development, reusability of code, abilities and limitations of the platform, and therefore the quality of the application, its fluidity, its appearance.
But we must also consider the benefits to the application once finished: compatibility with operating systems, access to shops, the future of devices supported.
Depending on these factors, we can determine in which scope each platform will offer the best support. If one knows a little these technologies, one can guess already the trend, but it's nice to know exactly what you can expect from each.
Coding in HTML 5 can be very difficult. We must work with a dynamic language, manage the offline mode, tweak the sound if necessary and especially test the application on multiple browsers. For a business application it may be easier thanks to the many frameworks that support the association of data with the interface.
If it is based on standards, such API developed by Mozilla for mobile application, it will be here to stay indefinitely (on the horizon of computers).
Thanks to the Canvas tag that provides a drawing surface or animation, all graphical applications are possible. The sound is also available but not very effective. WebGL offers 3D but it is an emerging technology. APIs provide access to the equipment, with a lower reactivity than native applications.
The application works on all operating systems and types of computers or mobile. It will also work on Windows 8 Metro.
The same code can be reused on a website, a local application, a mobile application.
HTML 5 applications have potential access to the AppStore, and Facebook for mobile. It has the advantage of supporting all the systems which affects a broader echo in the media.
The application should depend little upon mobile specific functions, such as sensors. This is the case of games, but so far it's not the best platform for them. The sound is poor for now. Actually, there is a lot of games on Canvas.
Practical applications or Internet-related or which get data from a database are the easiest to achieve.
Language and programming tools are system dependent. iOS uses Cocoa and the Objective C language, for Android it is the Dalvik virtual machine and Java. Dalvik is ported on other systems, with a rather average user experience.
The platform is in second place in terms of difficulty. It has generally interface development based on Eclipse with emulators on the desktop. There is an application generator for Android. When you program regularly natively, it seems simpler than HTML, but the opposite is true for a first application.
New versions of the OS or different devices may make the application obsolete. It will therefore need to be updated regularly.
Speed, fluidity, access to native graphics components and other system components.
Regarding Android, fragmentation is important. An application for Android 4 will not work on 2.3. Developers tend to limit the application to find the common denominator. For each OS, you must rewrite the application to port it to another.
An iOS application can enter the Apple AppStore. It is not guaranteed. Once the entry fee paid, the application may be refused. And if accepted, you have to leave 30% of revenues to the firm. In return, the application will have a wider exposure and wider sales on devices of the manufacturer.
One can access all the possibilities of the device, and more even to the many devices that were invented to extend the mobile. Natively, all types of applications can be made.
To the extent the same code is used for all systems, it is the easiest to use ... According to the publisher, we program faster than with Objective C or Java. In fact it is surprising to see that less lines of code are required for the same result.
Uploading the app on app stores is automatic.
The future of the platform is linked to that of the publisher. If it withdraws trade, there will be no more updates. But the code is open source, and he could always find a buyer.
Adds cloud services to applications with notifications, and a statistical service to know how is used the application.
Compatible with all phones, tablets, and desktops.
Applications are accepted on the AppStore since a policy change from Apple.
As native applications, they have access to device functions, but the platform is generic and therefore not being close to any system, it will be less suitable. What it supports is the common denominator of all the OSs. It is therefore suitable for a mobile application especially but not to a particular device.
Second part: Choices made by some actors and their experience.