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
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. href="http://www.oracle.com/technetwork/java/javame/index.html">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.
Consistent performance, disconnected operation capable, close
integration with all device services such as GPS, camera, calendar
applications, contact lists, etc.
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 href="http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html">JavaServer
Faces / href="http://myfaces.apache.org/trinidad/index.html">
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.
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.
Limited support for integrating with device native services
like camera and calendars, which are increasingly critical for mobile
applications. Limited offline capabilities.
- Hybrid client:
Hybrid clients are generally consisted of both native application layer
and web-based application content. The native application
layer generally provides three functions: it gives an on-device
presence to the application (i.e. an icon I can click on), it provides
a web-container for the web content, and it can provide integration
with device native services such as camera or calendar. Many
of the "native" applications on Apple's App Store or Android Market
Place are in fact hybrid applications. Mobile OS' SDK has
long supported "browser view" control already that essentially embeds
the web content into a browser. Furthermore, it is also now
possible to deploy HTML(5) pages along with the native application in
these platforms, which allows the user to construct user interface
entirely based on HTML(5). More recently, products like href="http://www.phonegap.com/">Phone Gap have
been developed to provide the interface between the web-based UI and
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.
by mobile enterprise applications. Lack of
robust/enterprise-grade tool that can support rapid development of
mobile enterprise applications.
Overall, while native application development can potentially result in
the richest mobile application possible (assuming developers actually
have time to thoroughly learn that platform), hybrid client appears to
strike the optimal balance between functionality and development
effort. Afterall, mobile platforms are evolving very rapidly,
and mobile user requirements also changes quickly. Mobile
developers need a platform that can stay with the rapidly evolving (and
fragmented) mobile operating systems, while adopt the application
quickly to meet new mobile needs. Good mobile applications
are these that serve a specific purpose for mobile users, and
developers need to be able to scale and quickly develop these special
purposed mobile apps for the ever-demanding users.
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 href="mailto:email@example.com">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.