Why HTML5 Is Not Enough

As enterprises begin to explore their options for extending IT infrastructure into the mobile space, one of the questions we often hear  is “Why not  just develop my solution using HTML5?”.  I’ll take a stab at answering that, and describe how ICEmobile addresses the issues you will encounter using raw HTML5, CSS3 and Javascript to build mobile web applications.

 

Preface

HTML5/CSS3/Javascript are the standards on which modern mobile browsers are based, with WebKit being the predominant browser core used in iOS, Android, Blackberry, and other platforms.  Given a precise combination of HTML5/CSS3/Javascript, a mobile browser can present a web application that is practically indistinguishable from a native mobile application.  This is profound statement that, when proven to be true,  validates the web-based approach to delivering enterprise applications to mobile devices.  Given the proliferation of devices, and the challenges with supporting BYOD strategies, this is very good news for enterprise IT departments, where web-based applications are predominate on the desktop, and for good reason.  We’ve learned the hard lessons associated with supporting platform-specific applications, and must avoid spiralling back into that abyss with mobile solutions.

That’s enough preaching to the choir though.  If you are considering an HTML5-based approach, you have already bought into the idea that web applications are the way forward for enterprise mobility solutions.  Now back to the question.  Why not  just develop my solution using HTML5?  There are a number of old and new pitfalls you will encounter should you proceed down the path of using HTML5/CSS3/Javascript to roll your own mobility solution.  The ICEmobile project is painstakingly addressing these pitfalls, enabling enterprise Java developers to effectively build mobile solutions using common Java EE web technologies and tools.  We will now explore the various pitfalls and describe how ICEmobile addresses them.

 

Not all browsers are created equal - not even WebKit-based browsers

This has been, and always will be, a huge problem for web applications.  The same markup will not produce the same results on all platforms.  This leaves you 2 choices, find some lowest common denominator in the markup that will function, or deliver customized markup for different devices.  The LCD solution simply doesn’t cut it, except for the most basic UIs, and it certainly doesn’t cut it when you want to support native look and feel for each device type, like we do in ICEmobile.  To solve this problem on your own you will end up tinkering endlessly with your markup, looking for a combination that is acceptable across platforms, and employing fragile special casing on a platform by platform basis.  And once you are done, you will realize that your markup has become horribly inefficient, so you will need to optimize it, leading to another painful iteration of markup tuning.

ICEmobile uses a sophisticated device detection mechanism to identify the precise type and capabilities of each connecting client.  The core rendering engine then tailors the generated HTML5 markup specifically for each device, tailoring the CSS to match the native look and feel of the device.  Additionally, the markup for each web control has been optimized for efficiency in mobile environments.  From the developer’s perspective, it is all completely transparent.  You build your page using a suite of ICEmobile web controls, and the underlying framework ensures that optimized markup is delivered to each device type.

 

HTML5 is not a development language

HTML5 is markup – it is the stuff that a web app produces and browsers consume – its not a programming language onto itself.  When someone says they are going to build it with HTML5, what it really means is they are going to write a whole heap of Javascript to make that HTML5 markup do what it is supposed to do. Historically, Javascript has proven to be a pretty fragile development platform requiring specialty skill sets.  Cross-browser idiosyncrasies abound, complicating the development process further – back to the not-all-browsers-are-created-equal problem.  Enterprise Java developers don’t want to work with low-level Javascript development.  They want to use the web-based tools and techniques they are familiar with.

ICEmobile fits in the Enterprise Java ecosystem where Java EE developers typically use presentation layer technologies like JSF and JSP to develop applications.  ICEmobile includes a suite of core mobile controls that provide the building blocks for a mobile web application.  These building blocks manifest themselves as both JSF components and JSP tags, addressing the widest spectrum of Java EE developers possible.  The core rendering engine renders these controls using device-specific HTML5/CSS3 markup, based on the detected device type.  This means that the developer can work with high level building blocks, and familiar development techniques and tools to produce mobile applications that automatically adapt their look, feel, and capabilities to the device they are accessed from. ICEmobile’s JSP support is augmented with comprehensive integration with Spring MVC, one of the industry’s most widely used web application technologies.  So whether it is JSF, JSP, and/or Spring MVC, ICEmobile cuts the widest swath through the Java EE landscape, enabling the widest cross-section of enterprises to enter the mobile realm, while leveraging existing skill sets and enterprise-hardened technologies and tools.

 

HTML5 does not do push

Collaboration is central to the mobile ecosystem, and push is central to delivering collaborative features in a web application.  We consider push capabilities to be table-stakes for any credible mobile solution.  HTML5 offers nothing in this arena, and developing a Javascript push solution of your own is a hugely onerous task.

The ICEpush notification mechanism (hardened through multiple generations of development) is fully integrated in ICEmobile, bringing spontaneous updates to both JSF and JSP applications.  ICEpush is further enhanced with Cloud Push capabilities that use device-specific notification mechanisms to get critical notifications to clients, even if they are not actively using the application.  Without a doubt, ICEmobile provides the most comprehensive push/notification mechanism in the industry, and it is dead simple to use, so adding push to your application is easy.

 

HTML5 lacks comprehensive native support

HTML5 provides standard ways to access certain native device features like playback of audio and video, but does not address other capabilities like the camera or microphone.  Over time, more native features will be addressed by the spec, but you can’t afford to move at spec speed, so if you need hybrid capabilities you will need to augment your HTML5 strategy in some way.

ICEmobile includes native devices containers that extend beyond the reach of HTML5, providing access to features like the device camera, microphone and address book. Device capabilities are exposed through web controls, so they can be accessed directly through the web application, provided that the container is installed on the device.  The ICEmobile containers and native controls enable you to build cross-platform, hybrid, mobile applications using pure web-based techniques.

 

Conclusions

Modern mobile browsers are amazing. Deliver the right combination of HTML5-based markup to them, and you can produce amazing mobile applications, but don’t kid yourself into thinking it is just that easy.  Using low-level HTML5-based techniques,  your efforts to arrive at that magical, optimized, cross-platform markup will be fraught with peril and pain.   So to answering the question “Why not  just develop my solution using HTML5?” we say “It is simply too painful.”  Try ICEmobile, and see how it  takes that pain away.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Meet BridgeIt
Easily add native mobile features
to your web apps
Close