By Joe Huang on Jul 08, 2011
This is the first is a series of articles that discusses emerging mobile technology areas that would be relevant to the next generation ADF Mobile framework. Today's topic is "Comparing Mobile Application Client Architectures" as it evolved between thick/native, web-based, and hybrid clients. For the purpose of these blogs, I will exclude laptop PC as a category of mobile device, and instead focus on phone and tablet form factors.
It is to state the obvious that mobile technologies have been evolving rapidly in recent years, especially since the release of the iPhone that unleashed huge amount of creativity (and money) into mobile application development. Suddenly software development is at least as critical as hardware design for a successful mobile device, and must work completely in concert with each other. The rise of Apple's iPhone and the downward spiral of Nokia's Symbian devices are perfect illustration of how software development and user interface/design can make or break a mobile platform. Therefore, against this trend, there are greater needs than ever for a mobile application client platform that can not only deliver this mobile-optimized user experience, but also support the increasingly complex business logic that the application must support.
Mobile application client architecture has has evolved between Thick/Native client, web/browser-based client, and the hybrid (Native+Web) clients. Let's take a look at each one of them on how they have evolved and their pros/cons:
client: the earliest mobile applications are thick clients
that run on the device. JavaME
of course is a popular choice of technology for building thick
client-based apps that can run across multiple devices.
Virtually all mobile device platforms also provide
native application development capabilities. One of the
earliest enterprise mobile application I can recall (Siebel Handheld)
was developed for early versions of Windows Mobile/CE running on HP
Jornada in the early 2000's - the device basically resembles an
over-grown HP scientific calculator.
New mobile operating systems, languages, and tools have appeared since then, and mobile devices have more processing and memory than desktop PCs just a few years ago. However, this architecture remains as the most common type amongst all mobile applications.
- Pros: Consistent performance, disconnected operation capable, close integration with all device services such as GPS, camera, calendar applications, contact lists, etc.
- Cons: Except for JavaME-based apps, the application is specific to a platform, which requires the same application to be developed over and over again. The learning curve for native applications is very high. Development knowledge are generally not portable across platforms, except for (somewhat) JavaME-based devices. This has largely kept most of the enterprises' IT developers away from being able to develop mobile apps.
client: As web technology support matures on
mobile devices, thin clients based on web technologies start to emerge.
Basic WAP browsers that was popular 5-6 years ago can no
longer be found, and instead powerful WebKit-based browsers with full
JS/AJAX/HTML5 support are now on virtually all smart phone on the
market today. Many of the early mobile web applications are
essentially dumbed down version of a desktop-based web page.
However, since the introduction of iPhone in 2007, the focus
has shifted to developing mobile-optimized web pages that are intended
specifically for mobile users. As some of you may recall,
the earliest iPhone apps were just WebApps. It is now possible to build
web-based UIs that are as rich and functional as native UIs using
technologies like JavaServer
Mobile Browser, or emerging HTML5 technologies
using controls like JQueryMobile.
Except a few limited use cases that truly require native UI
controls, HTML5 controls can generally support very rich, interactive,
and compelling use cases.
- Pros: Develop once, and deploy to large number of mobile platforms. Allows web-developers to easily transition into mobile development. Able to support mobile-optimized UI that supports a variety of use cases. More likely to be able to reuse existing modules to integrate into backend applications.
- Cons: Limited support for integrating with device native services like camera and calendars, which are increasingly critical for mobile applications. Limited offline capabilities.
- Pros: Combines the ease of web development with the power of native applications. Most of the code can be reused and shared across multiple mobile platforms. Good integration with device native services. Can support offline operations.
To that end, hybrid client appears to be a good strategic direction for an enterprise mobile application platform.
Please share your thoughts by commenting on this blogs or by emailing to me. I'd like to hear what you think.
In the future articles, we will be exploring different aspects of the mobile client, technology, and development tools.