HTML5 in mobile devices

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

In mobile devices, HTML5 is often used for mobile websites and mobile applications on mobile operating systems such as Firefox OS, Sailfish OS, Tizen and Ubuntu Touch.

Key features for mobile devices

Offline support

The AppCache, Indexed Database API, and Web storage makes it possible for mobile developers to store things locally on the device, so interruptions in connectivity will not affect the ability for someone to get their work done.[1]

Offline support helps browsers cache static pages. They depend more on HTTP response headers sent by web servers to fetch HTML, CSS and multimedia required to render the web page. If everything required to render is cached, then a page loads quickly, but even if one item is not cached then everything slows down dramatically.

To provide offline support, a cache manifest file should be created to specify the offline application's resources—i.e. its pages, images, and other files needed to run offline. Typically, the manifest also contains a comment that is changed when any of the resources change, prompting the browser to refresh the cache.

CACHE MANIFEST
# Version 0.1
offline.html
/iui/iui.js
/iui/iui.css
/iui/loading.gif
/iui/toolbar.png
/iui/whiteButton.png
/images/gymnastics.jpg
/images/soccer.png
/images/gym.jpg
/images/soccer.jpg

The "manifest" attribute of the app's "html" element should specify the URL of the manifest file.[2]

<html manifest="manifest.mf">

The proper MIME type "text/cache-manifest" should also be set on the server for the cache manifest.[2]

Canvas drawing

Sites can mark off a space on a page using a Canvas element where interactive pictures, charts and graphs, game components, and other imaginations can be drawn directly by programming code and user interaction — no Flash or other plug-ins are required.

Video and audio streaming support

Development is in the very early stages and subject to format disruption, but sites like YouTube and Pandora could one day skip Flash entirely and bring streaming audio and video, with timed playback and further features.[3]

GeoLocation API

This is actually not part of HTML5, but is a separate specification. The geolocation API lets you share your location with trusted web sites. (This is actually the physical location of the device or of your internet connection, decided based on some combination of GPS, accelerometers, cellphone tower triangulation, and ISP address records.) The latitude and longitude are available to JavaScript on the page, which in turn can send it back to the remote web server and show you location-aware content like local businesses or show your location on a map.[4]

Following is the prominent API for a geolocation.

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);

Geolocation is an object which is part of Navigator object. It uses the getCurrentPosition() method. Finding location is an asynchronous operation as it requires the user’s permission for access. Hence callback functions for success and failure are required.[5]

Advanced forms

Even simple things like the improvements in HTML5 for forms could make life easier for mobile applications. Fields that can be validated by the browser are improvements for mobile devices. The more that can be handled by the browser means less time downloading JavaScript code and fewer round trips to the server if validation can be found before the form is posted.[6]

HTML5 capabilities in top mobile devices

A Mobile Web Metrics Report demonstrates HTML5 capabilities in mobile devices. The report checked how many HTML5 features are supported by different devices that access the mobile web.

Top 5 supported features

GeolocationAPI, offline web application support, WebStorage, CSS3 Selectors and 2D animations are the top five supported features referred to by the term HTML5 across the top 15 mobile devices in all USA, UK, Germany, Malaysia, Australia markets examined.

Top 5 partially supported features

Misc. Element types and attributes, extended user interaction concept, CSS3 in General, extended form concept, and extended video / audio support are the top five partially supported HTML5 features across the top 15 mobile devices in all USA, UK, Germany, Malaysia, Australia markets examined.

Top 5 not supported features

Microdata, 3D animation rendering, FileReader API, IndexedDB, and local Device support or the WebWorkers feature respectively are the top five HTML5 features not supported across the top 15 mobile devices in all USA, UK, Germany, Malaysia, Australia markets examined.

This report concludes that HTML5 is a welcome addition to the mobile party, but it does not negate device and OS fragmentation.[7]

Frameworks for app development

With HTML5 and mobile web development, new tools and frameworks are popping up to provide a more consistent and comprehensive HTML5 support across mobile browsers.[8] Such HTML5 mobile web frameworks are:

Akula

Akula is an open and extensible enterprise mobile app platform for developing, securing, and governing native and hybrid apps. It is a Mobile App Server that integrates seamlessly with enterprise infrastructure, extending SOA to mobile devices. This structure enables development teams to focus on the user experience using the front-end tools and frameworks of their choice.

Appear IQ

Appear IQ is a mobility platform that simplifies the development and management of context-aware hybrid mobile web applications (HTML5, CSS3, JavaScript), native mobile applications as well as their integration with enterprise IT systems. It allows developers to make use of their web skills to craft powerful mobile applications that are optimized to the end user's needs.[9]

Enyo

Enyo is an object-oriented JavaScript cross platform and cross device application framework emphasizing modularity and encapsulation. It was originally launched for developers to create applications for the HP TouchPad with Enyo 1.0 which ran the mobile operating system WebOS version 3.0. In January 2012, Enyo 2.0 was released as an open source project with support for several mobile operating systems and browsers. Since then, Enyo has been updated to version 2.2 for support for many more mobile operating systems and browsers along many other additions of usability to the development framework.[10]

DaVinci Studio

DaVinci is a framework that supports HTML5 mobile app development. The tool has a WYSIWYG (What You See Is What You Get) authoring environment in which users may drag and drop components to build applications. It also comes with a jQuery framework as well as other libraries and allows users to integrate open source libraries of their choice into the tool.[11]

DHTMLX Touch

DHTMLX Touch is an HTML5-based JavaScript library for building mobile web applications, in the form of UI widgets and a cross-platform application framework compatible with the major web browsers for mobile platforms. Applications built with DHTMLX Touch will run smoothly on iPad, iPhone, Android-based smartphones, and other popular devices.[12]

Google Web Toolkit

Google Web Toolkit is a web app framework that can be used for developing mobile html5 apps in Java, especially in combination with optimized mobile widget libraries such as m-gwt

JavaScript

JavaScript, is a scripting language built into nearly every modern browser. In Windows 8 and Windows RT (both HTML Application and Windows Runtime), any HTML5 apps fully supported mobile operating systems (Firefox OS and WebOS, Tizen and Ubuntu Touch), event handling in HTML5 apps is made possible by JavaScript.

Jo

Jo is a JavaScript framework for HTML5 capable browsers and devices. It was originally designed to work on mobile platforms as a GUI and light data layer on top of PhoneGap. Since its creation, Jo also works as a lightweight framework for mobile browsers, newer desktop browsers, and dashboard widgets.[13]

jQuery Mobile

jQuery Mobile, is a unified user interface system across all popular mobile device platforms, built on jQuery and jQuery UI.[14]

jQT (formerly 'jQTouch')

jQTouch is jQuery plugin for mobile web development on the iPhone, iPod Touch, Android 2.3+, and other forward-thinking devices. This framework is heavy on the CSS, while light on the JavaScript.[15]

KonyOne

KonyOne is a multichannel mobile applications platform from Kony Solutions that supports all browsers including HTML5 across channels (phones, tablets, kiosks and desktops).[16]

LungoJs

LungoJs is a framework powered by HTML5, CSS3 for iOS, Android, BlackBerry and WebOS. It has support for touch events like tap, double-tap or swipe and does not use images (including the icons), as everything is vectorized.

M-Project

The-M-Project is an HTML5 JavaScript framework that targets iOS, Android, BlackBerry and webOS platforms. It makes use of jQuery on the JavaScript part and contains all UI and core files with features like offline support, internationalization and more.[17]

MobileNationHQ

MobileNationHQ is a web based tool that uses a visual programming paradigm to facilitate the creation of HTML5 mobile applications for iOS and android. The tool also supports the integration of custom JavaScript[18]

NSB/AppStudio

NSB/AppStudio is full development tool which creates hybrid web apps for iOS, Android and Window Phone, as well as desktop Windows. It features a drag and drop Design Screen, Project Explorer and ToolBox with preloaded jQuery Mobile, jqWidgets and other controls. Programming can be in JavaScript or VB style BASIC.

qooxdoo Mobile

qooxdoo is a universal JavaScript framework to create applications for a wide range of platforms. With its object-oriented programming model it allows to build native-like apps for mobile devices, leveraging an integrated tool chain and a state-of-the-art GUI toolkit.

Sencha Touch

Sencha Touch is the first HTML5 framework for mobile devices. This framework builds web applications that make sense for mobile devices. It comes with a comprehensive UI widget library, complete touch event management with CSS transitions and an extensive data package.[19]

Smart Mobile Studio

Smart Mobile Studio is an Object Pascal based compiler toolchain and IDE for HTML5 development. The compiler processes Object Pascal source code into a JavaScript driven web/mobile application. The IDE contains several components that can be organized in a visual designer. The Smart Pascal dialect supports various wrapping and mapping methods against the JavaScript language. Such as "asm sections" that contains pure JavaScript and "external method/class directive" that defines the interface in Smart Pascal and the implementation in JavaScript.[20]

SproutCore

SproutCore, is an open source HTML5/JavaScript for building web and mobile apps. Through the use of PhoneGap, SproutCore applications can be wrapped into native apps that run on iOS, Blackberry and Android platforms.

ViziApps

ViziApps is a mobile app development platform that supports creation of HTML5 web apps and hybrid apps for iPhones, iPads, Android phones, and Android tablets without coding. App developers use a drag-and-drop approach to design and build mobile apps with ViziApps and access data with Google spreadsheets, web services, SQL databases and other popular web data sources. In addition to no-coding app design, custom JavaScript can be added to include 3rd party libraries and to extend app functionality.[21]

IBM MobileFirst Platform

IBM MobileFirst Platform is a mobile application platform that supports the development of HTML5, hybrid and native mobile applications. The MobileFirst Studio - the platform's IDE - allows mobile developers to make full use of all existing HTML5 functionality as well as further enhance these capabilities with utilities and mechanisms required by modern organizations such as encryption of locally stored data, offline authentication, combined HTML5 and native coding, 3rd-party library integration with frameworks such as PhoneGap, Sencha Touch, JQuery, and more.[22]

Appzillon

Appzillon is a mobile application development platform from i-exceed technology solutions. Using Appzillon, developers can develop hybrid mobile apps, web applications, and support native mobile capabilities such as calls, SMS, camera, calendar, accelerometer, etc. The proprietary IDE of Appzillon contains a grid based designer that allows drag-and-drop of widgets and charts to design HTML5 screens. The Appzillon IDE provides an embedded simulator, adaptive widgets and deployment enabler. Appzillon supports integration with different types of enterprise services using their service formats.[23][24][25][26]

Hybrid Mobile Apps

A hybrid mobile application (or hybrid mobile app) is a mobile application that runs inside of a native container and leverages the device’s web browser to display locally hosted HTML pages.[27] Hybrid mobile apps are composed mostly of HTML, JavaScript, and CSS. Device specific functionalities such as camera access, geolocation, and accelerometer readings are exposed through a JavaScript API.

Differences from Native Apps and Mobile Web Apps

Hybrid mobile apps contain a mixture of native app and mobile web app concepts. They do contain native code but are not completely native. Typically the native code is provided by a framework and reveals a JavaScript API so that the app’s JavaScript code can perform native functions such as taking a picture with the camera. Extra functionality can also be implemented by creating native “plugin” components for the framework that perform a native task.

Unlike mobile web apps, which store source files on a server, hybrid mobile apps store HTML, JavaScript, and CSS files locally so no Internet access is required to launch a hybrid mobile app.[28][29] To the user a hybrid mobile app appears to be no different from a native app; it is launched and closed in the same manner as opposed to a mobile web app, which must be accessed through the device’s web browser app.

Pros and Cons of Hybrid Apps

Hybrid mobile apps have their pros and cons. When choosing what type of mobile application to develop it is important to keep these in mind.

Pros

  • Hybrid mobile apps allow code reuse across platforms. Let the library or framework you are using take care of the platform specific differences and use the same JavaScript code on both platforms.[28]
  • JavaScript is something that many developers are already familiar with where something like the iOS development tools are more specialized. It can be argued that there is less of a learning curve when developing hybrid mobile apps compared to native apps.[27]
  • The app's interface and logic can be built and debugged in the web browser using an emulation framework. This could lower development costs depending on the tools required to develop native apps for the target platforms.

Cons

  • Hybrid mobile apps are more susceptible to user interface lag due to the extra layers of abstraction.[27]
  • Only a certain subset of native functionality is available which depends on the framework. All others native functions are accessible developing Plugins
  • As for native apps, the code base requires recompilation and resubmission to the distribution network where it is possible to instantly update a hybrid mobile web app’s codebase.[28]

Hybrid Mobile App Frameworks

Name License Latest Version API
Apache Cordova (previously PhoneGap) Apache License, v2.0 3.5.0
Appcelerator Titanium Proprietary 4.0.0
Appear IQ Proprietary 8.0.2 -
HP Anywhere Proprietary 10.11 -
IBM Worklight (now part of IBM MobileFirst) Proprietary 7.1 -
NSB/AppStudio Proprietary 5.0.15 -
Oracle ADF Mobile Framework Proprietary 11.1.1.6 Java JDK 1.4
KonyOne 5.0 -
Appzillon Proprietary 3.1.0
Protocol (Adromil Bogus iFrame) Proprietary 3.0.9 Bogus API 2.4

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. [1]
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. 27.0 27.1 27.2 What is a Hybrid Mobile App?
  28. 28.0 28.1 28.2 Native, HTML5, or Hybrid
  29. Native vs HTML5 vs Hybrid

External links