HTML5 versus Android: Apps or Web for Mobile Development?

Reto Meier and Michael Mahemoff gave a talk at Google I/O 2011 about comparaison of developement of mobile applications as web-based or as native apps. Here is some comments token for this talk.


HTML5 rocks

HTML5 is HTML, CSS, JavaScript and related standards. HTML5 is mobile technology, is ubiquitous and very suitable for Magazine publishers who try to design for an ever-growing variety of devices and formats.
HTMLS is flexible, it support Separation of Concerns (SoC) as it relies on standard HTML for content rendering, Javascript for implementing logic and handling interaction with users, and CSS for styling and formatting.
However as a young standerdized technology, there is some differences between the existent implementation, i.e. browsers (e.g. firefox, chrome, etc.) do not interprent HTML5 tags the same way. For instance, some HTML5 elements are not supported (e.g. canvas), some attributes are not supported (e.g. type="file"), style may not be supported.
HTML5 is capable, it provides API for:
  • Input: geolocation, multi touch, device orientation, device API and speech recognition, 
  • Output: markup + styling with semantic tags and CSS3, rich graphics with Canvas, video (e.g. Just one more app)
  • Networking: Ajax (XMLHttpRequest), Cross-Origin Resource Sharing, WebSockets,
  • Local/Offline storage: Web SQL database, Indexed database, FileSystem.
HTML5 is open, standard-based with many implementations, and based on well understood technologies.
It is supported by a big community, there is many libraries out there (jQuery, MooTools, Closure, etc.), many debugging tools (Chrome Developer Tools, Firebug, Page Speed, Mobile Bookmarklet, etc.), as well as many blogs, forums, books, tutorials, etc.

The case for Native

Why someone would risk to build a mobile App that can run on a one single target platform?
One reason is that there is a lot of Android apps out there that are very optimized. But wait, what do we mean by Native
Native is anything build to run on Android and is developped with Dalvik SDK (Software Development Kit) using Java Syntax, with NDK (Native Development Kit), with Renderscript using C99, or with Android Scripting Layer using Python.
The advantages of building Native apps can be summarized into following:
  • Broader access to device hardware: Camera, Sensors, etc.
  • Closer integration with system features, the app will uses features specific to device where it is running
  • Ability to integrate with other Apps
  • More discoverable: widgets, search, and notifications
  • Faster, powerfull, smoother and more attractive.
"If you can't think of a way to improve your web app using Android SDK features that is because you're doint it wrong", Reto Meier.
Another reason is related to the continuous innovation in mobile development: new innovative hardware (new sensors, 3D camera and display), new software innovation (animations, background services, hardware acceleration, fragments and loaders, widgets).
Mobile manufactures all have same or similar software and these are trying to be differentiated with hardware advances. You want be first to try these advances just after there release without having to wait for standards as they have been always slow.
Innovation process in mobile developper is highly short compared to innovative stuff seeing with PC where things need for decades to change.
  • 2007: Multi-touch, accelerometers, microphone
  • 2008: Video, compass, background apps
  • 2009: Bluetooth, multiple screen sizes
  • 2010: Gyroscopes, front facing cameras
  • 2011: Barometer, NFC, tablets, USB accessories
  • 2012: Android accessories, Anroid@Home, 
  • 2013: ???  
These innovations in hardware technologies leverage extreme innovation in mobile softwares: LBS (Location-based services) thanks to Google Maps, Shazam (Audio input), Google Goggles (Video Input), Angry birds (touch screens), etc.
It is also leverage Hardware on new platforms and not only smartphone: tablets, television, cars, picture frames, fridges, washing machines, etc.

Each Android app is part of an ecosystem, it listens for system events, communicates with other apps, leverages functionnality from other apps, offer functionnality for use by other apps, and can be replaced or augmented.
Another advantage of native apps is that they can be truely background apps triggered by special events that can be triggered even when an app isn't running, for example: 

  • C2DM (Cloud to Device Messaging) for server-based events
  • Set alarms that can be triggered at set time or interval
  • Set alarms that can be triggered by system events

These alarms allows running concurrent apps. Another feature is the the full offline support, a native app can run without ever being online. Also, search functions are still available, and actions (like send, delete, move) can all be cached and executed when connectivity changes. 
A specificity for Android apps is that they are more than a shortcut, there is home screen widgets and live wallpapers, quick search box, rich notifications, and apps can build on top of each other. These allows content to be more engaged.
Here is a summary of what an Android native app can do: 

  • Geo services, sensors, 
  • Interprocess communications (Intent), 
  • Background, scheduled and concurrent apps, 
  • Home screen widgets and quick search boxes, 
  • Rich multimedia, 
  • Native (C/C++) development, 
  • Full database / SQLite support, 
  • Camera and microphone access, 
  • Deep system integration / replacement





(00:36:40) to be continued.
Here is the whole talk, you can also visit TalkMiner to look for the talk part that most interest you.

5 commentaires:

  1. Great information provided. I appreciate your work.
    Mobile Development

    RépondreSupprimer
  2. Somebody necessarily help to make severely posts I might state. This is the first time I frequented your website page and to this point? I surprised with the research you made to create this particular post extraordinary. Well done admin..
    Mobile App Development Company in Dubai
    Android App Development Company in Dubai
    Mobile App Development Company
    Android App Development Company in UAE

    RépondreSupprimer
  3. As we all know that HTML5 is basically used for front end development, If you are looking to hire HTML5 Development Company for your next web application development then you can contact QSS Technosoft for the same.

    RépondreSupprimer
  4. Really its very useful information.we understand that bringing an idea for an application into reality can be overwhelming at times. If you have an idea for an application but are unsure whether to pursue the development of a native mobile app or a web app, we’re here to help!Difference Between Mobile Application Development And Web Application Development

    RépondreSupprimer
  5. I really appreciate your post and it's really excellent. Want to read some more posts from your blog

    Machine Learning Training in Bangalore

    RépondreSupprimer