We currently deploy our app to Android and Apple based devices. Other platforms are in development (as of January 2013). Via Titanium we can create native applications, where possible, or mobile web based applications where native SDK’s are not available.
For a more in-depth discussion of the various methods to mobile application development see below.
There are three principal architectures used in mobile application development to date. I’ll try to give a short explanation of each along with pros and cons. My list of pros and cons are not necessarily exhaustive.
- Mobile web apps.
- Hybrid apps.
- Native apps.
Mobile Web Apps
They may or may not be able to access device features like GPS, PIM, BBM, etc.
- mobile web apps can target every smart phone device with modern web support. Blackberry OS 6.0 or greater, Android based smart phones, all iOS (Apple) devices, Windows Mobile 7 devices, etc.
- potentially short time to market relative to other options (hybrid or native)
- potentially cheapest option available as some technologies are open source.
- user experience is relatively slow due to the use of a web container to render the app among other issues.
- may not be able to provide the same end user experience that users come to expect from mobile apps. Due to the web based user interface. Although the look and feel can be very similar.
- frameworks may have a delay in updating API to address new device technology.
Hybrid Apps (like UManitoba)
Hybrid apps use a combination of web based technologies along with native api in order to address some of the short comings of mobile web apps.
Some hybrid architectures perform complex compilation and optimization schemes in order to create truly native app binaries while others provide “hooks” to native api in a similar fashion to some mobile web app technologies.
The overall goal of Hybrid technologies is to be able to use a common code base from which to deploy a “native” mobile app to all devices available. Like mobile web apps are able to do.
- Targets almost all device manufactures, depending on architecture used.
- Write once deploy to many device types as a native app.
- Native access to device features like GPS, accelerometer, Calendar, push technology, file system, without the need to go through an interpreter like Web Apps have to.
- faster user experience due to being a native app, some frameworks are better then others in this regard in my opinion.
- like mobile web apps, more cost effective since there is a common code base, using more commonly known web technology.
- almost NO current developer of Hybrid frameworks are able to fully support apps across all device platforms, “natively”.
- development is more complex due to the need to tweak the codebase for specific device types and in some cases maintain multiple code bases.
- Potentially need to learn new languages such as Ruby & Rails, Lua, etc. Which will increase cost and time to market of apps.
- Cost to license some frameworks could be prohibitive, some are open source while others are not.
- Due to the hybrid space being relatively new, technologies are not as mature as Native languages so certain components may not be available to the developer.
- As new device features and native api are developed there is a delay in those new features becoming available to hybrid developers, not always but usually.
- they are slower then truly native apps. Most Hybrid frameworks have some degree of interpreter between the UI layer and the device layer. Even the frameworks that claim to create fully native apps have some sort of bridge or interpreter. Some are worse then others.
Native apps are those apps written using specific programming languages, design and developed for a specific device. Apple devices (iPod,iPhone,iPad) use iOS, Android OS is a Java based operating system that has become the most widely adopted platform in the smart phone market to date. Blackberry uses another Java based operating system for their devices, while Nokia has adopted Windows Mobile as their operating system.
Native apps are written to harness all the device capabilities in the most efficient way possible for a specific device platform. Thus native apps are typically the best choice if a developer needs to have the best end user experience possible and maximise the capabilities of a device (i.e. games).
- native apps are written for a specific device type thus they should be able to provide the best end user experience available for the given platform.
- native apps have the best and most efficient access to device features (hardware layer access).
- typically the fastest type of app you can make.
- access to most current API and developer software from device manufacturers.
- need to maintain a code base for each device type
- potentially long time to market for apps due to developers having to learn multiple relatively complex languages (Objective-C and Java)
- high cost!
If I have missed anything or information provided is inaccurate or needs further clarification please let me know .