- Latest version
- http://www.w3.org/Mobile/mobile-web-app-state/
- This version
-
http://www.w3.org/2011/08/mobile-web-app-statehttp://www.w3.org/2011/11/mobile-web-app-state - Previous version
-
http://www.w3.org/2011/05/mobile-web-app-statehttp://www.w3.org/2011/08/mobile-web-app-state
Web technologies have become powerful enough that they are used to build full-featured applications; this has been true for many years in the desktop and laptop computer realm, but is increasingly so on mobile devices as well.
This document summarizes the various technologies developed in W3C that increase the power of Web applications, and how they apply more specifically to the mobile context.
- Graphics
- Multimedia
- Device Adaptation
- Forms
- User interactions
- Data storage
- Personal Information Management
- Sensors and hardware integration
- Network
- Communication
- Packaging
- Performance & Optimization
Status and changes
This
document
is
the
third
fourth
version
of
this
overview
of
mobile
Web
applications
technologies.
Previous
versions
were
released
in
February
2011
and
,
May
2011
,
and
a
August
2011
.
A
live
version
of
this
document
accepts
contributions
in
the
W3C
Wiki
.
Feedback on every aspect of this document should be sent to the author ( dom@w3.org ) and will serve as input for the next iteration of the document.
Since the previous release of this document, the following evolution of the Web platform occurred and have been reflected in this document :
-
Addition of a new section on technologies useful for device adaptationThe Web Real-time Communication Working Group released its first public Working DraftAdditionofthe new W3C Community Groups as a wayits APIs tostart standardization work in W3Cestablish P2P connections with audio/video streams between Web browsers. -
Four new APIs fromThe work on the Media Capture API in DAP has been merged into thegetUserMedia()
API developed by the WebPerformanceRTC WorkingGroup : Performance Timeline , User Timing , Efficient Script Yielding and Timing control for script-based animationsGroup; the two groups are working together on the API. -
The firstAn editor draft ofWeb Real-Time CommunicationSVG 2.0 is now available. -
A
numberfirst public Working Draft ofother documents made progress on the Recommendation track ( WOFF , Contacts API , DeviceOrientation Event , Network Information APICSS Device Adaptation , thefamilyCSS equivalent ofWidgets specifications)<meta name="viewport">
was released. -
AdditionA first public Working Draft of theproposed work on model-based user interfacesvibration API was published by the Device APIs Working Group. -
Updates basedThe Model-Based User Interfaces Working Group was started. -
Work
on
specifying
the
adoptionexisting deployed version of XMLHttpRequest was dropped in favor of focusing on the next generation of that API. -
Early
work
on
a
cross-Web
applications
mechanism,
based
on
Web
Intents
,
has
started
in
the
newDevice APIs WorkingGroup charterGroup, and is expected to be developed in collaboration with the Web Applications Working Group. That work should also help cater for applications and services discovery. - The work at the cross-road between mobile and accessibility was added to the user interactions section .
- A new version of the Geolocation API , including support for retrieving civic addresses, was released as a first public and Last Call Working Draft.
- the Touch Events , Web Storage , Battery Status , Web Sockets , DeviceOrientation Event , Performance Timeline and User Timing specifications were released as a Last Call Working Draft.
Document structure
The
features
that
these
technologies
add
to
the
Web
platform
are
organized
under
the
following
categories:
Graphics
graphics
,
Multimedia
multimedia
,
Device
Adaptation
device
adaptation
,
Forms
forms
,
User
user
interactions
,
Data
data
storage
,
Personal
Information
Management
personal
information
management
,
Sensors
sensors
and
hardware
integration
,
Network
Communication
network
,
communication
,
Packaging
packaging
,
Performance
performance
&
Optimization
optimization
.
The
Web
as
an
application
development
platform
In each category, a table summarizes for each feature:
- which W3C specification defines the feature,
- which W3C group is responsible of the said specification,
- the stage of the specification in the W3C Recommendation track (see below),
- the estimated stability of the document, i.e. how widely the document is expected to change, as estimated by the author of this report, with three levels: low (the document is mostly stable), medium (some parts are stable, others are expected to change significantly), high (the document is expected to evolve significantly),
- some rough qualitative indication on availability of implementations on mobile devices, based on the author’s understanding of the mobile devices market
- a link to the latest editors draft of the document,
- a link to the test suite for the said feature.
As a reminder, W3C creates Web standards by progressing documents through its Recommendation track , with the following stages:
- “Editors drafts” represent the current view of the editors of the specification but have no standing in terms of standardization.
- “Working Drafts” are early milestones of the Working Group progress.
- “Last Call Working Drafts” signal that the Working Group has determined that the specification fulfills its requirements and all the known issues have been resolved, and thus requests feedback from the larger community.
- “Candidate Recommendations” trigger a call for implementations where implementers are invited to implement the specification and send feedback; Working Groups are expected to show the specification gets implemented by running test suites they have developed.
- “Proposed Recommendations” manifests that the group has gathered sufficient implementation experience, and triggers the final review by W3C Members
- “W3C Recommendations” are stable and completed Web standards; these documents only get updated rarely, through the “Edited Recommendation” process, as a results from errata collected by Working Groups.
Prior to starting standardization, a Working Group needs to be chartered, based on input from W3C Members, often through the organization of a workshop , or after the reception of a W3C Member Submission .
W3C has recently set up Community Groups , a new mechanism that allows anyone to do experimental work within the W3C infrastructure, under IPR rules that are compatible to transition the work to the W3C standardization process.
1. Graphics
SVG , Scalable Vector Graphics, provides an XML-based markup language to describe two-dimensions vector graphics. Since these graphics are described as a set of geometric shapes, they can be zoomed at the user request, which makes them well-suited to create graphics on mobile devices where screen space is limited. They can also be easily animated, enabling the creation of very advanced and slick user interfaces.
The integration of SVG in HTML5 opens up new possibilities, for instance applying advanced graphic filters (through SVG filters) to multimedia content, including videos. SVG 2.0 is set to facilitate that integration and complete the set of features in SVG.
In
complement
to
the
declarative
approach
provided
by
SVG,
the
<canvas>
element
added
in
HTML5
enables
a
2D
programmatic
API
that
is
well-suited
for
processing
graphics
in
a
less
memory
intensive
way.
That
API
not
only
allows
to
render
graphics,
but
can
also
be
used
to
do
image
processing
and
analysis.
Both SVG and HTML can be styled using CSS (Cascading Style Sheets); in particular, CSS3 (the third level of the specification) is built as a collection of specifications set to offer a large number of new features that make it simple to create graphical effects, such as rounded corners, complex background images, shadow effects ( CSS Backgrounds and Borders ), rotated content ( CSS 2D Transforms ), animations ( CSS Animations , CSS Transitions ), and even 3D effects ( CSS 3D Transforms ).
Animations can be resource intensive — the possibility offered by the Timing control for script-based animations API to manage the rate of updates to animations can help keep them under control.
Fonts play also an important role in building appealing graphical interfaces, but mobile devices are in general distributed with only a limited set of fonts. WOFF ( Web Open Font Format ) addresses that limitation by making it easy to use fonts that are automatically downloaded through style sheets, while keeping the size of the downloaded fonts limited to what is actually needed to render the interface.
NB: work on defining a 3D graphic API called WebGL has started outside of W3C, as part of the Khronos Group ; this API has been built to be compatible with OpenGL ES , i.e. for embedded systems, and is intended to work on mobile devices.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
2D Vector Graphics | SVG Tiny 1.2 | SVG Working Group | Standard | Finished | New version of SVG (SVG 2.0) in preparation | Widely deployed (iOS, BlackBerry, WebKit on Nokia, webOS, Opera, Firefox, announced for Android, announced for Windows Phone) | High coverage |
SVG 2.0 | N/A | N/A | editors draft | N/A | N/A | ||
2D Programmatic API | HTML Canvas 2D Context | HTML Working Group | Last Call Working Draft | Mostly stable | Updated regularly | Widely deployed (iOS, BlackBerry, Android, webOS, Opera, Firefox, announced for Windows Phone) | Good coverage |
Rounded Corners | CSS Backgrounds and Borders | CSS Working Group | Candidate Recommendation | Mostly finished | Updated regularly | Deployed as an extension in many mobile browsers | None |
Complex background images | Limited (?) | ||||||
Box shadow effects | Limited (?) | ||||||
CSS 2D Transforms | CSS 2D Transforms Module Level 3 | Working Draft | Stabilizing |
Last
update
|
Limited (?) | None | |
3D Effects | CSS 3D Transforms Module Level 3 | Working Draft | First draft |
Last
update
|
Very limited | None | |
Animations | CSS Animations Module Level 3 | Working Draft | First draft | Updated regularly | Limited (?) | None | |
CSS Transitions Module Level 3 | Working Draft | Early draft |
Last
update
|
Limited (?) | None | ||
Timing control for script-based animations API | Web Performance Working Group | Working Draft | Early | Regularly updated | None | None | |
Downloadable fonts | WOFF File Format 1.0 | WebFonts Working Group | Candidate Recommendation | Mostly stable | Last update Aug 2011 | Good deployment | Good coverage |
2. Multimedia
HTML5
adds
two
tags
that
dramatically
improve
the
integration
of
multimedia
content
on
the
Web:
the
<video>
and
<audio>
tags.
Respectively,
these
tags
allows
to
embed
video
and
audio
content,
and
make
it
possible
for
Web
developers
to
interact
much
more
freely
with
that
content
than
they
would
through
plug-ins.
They
make
multimedia
content
first-class
citizens
of
the
Web,
the
same
way
images
have
been
for
the
past
15
years.
While
these
tags
allow
to
play
multimedia
content,
the
HTML
Media
Capture
and
the
Media
Capture
API
define
defines
a
mechanisms
markup-based
mechanism
to
capture
and
record
access
captured
multimedia
content
using
attached
camera
and
microphones,
a
very
common
feature
on
mobile
devices.
The
newly
recently
chartered
Web
Real-Time
Communications
Working
Group
will
also
provide
is
building
an
API
(
getUserMedia
)
to
directly
manipulate
streams
from
camera
and
microphones
.
,
on
which
it
will
collaborate
with
the
Device
APIs
Working
Group
to
provide
capture
and
recording
capabilities
(in
replacement
of
its
former
Media
Capture
API
.)
Beyond recording, two additional APIs add multimedia manipulation capabilities to the Web platform. We have already mentioned the Canvas 2D Context API: it enables modifying images, which in turn opens up the possibility of video editing . In a similar vein, a W3C Incubator Group has been working on an Audio API ( Mozilla’s proposal draft ) that makes it possible to modify audio content, as well as analyze and synthesize sounds — this work serves as a basis to the newly chartered Audio Working Group .
Finally, the new charter of the Device APIs Working Group includes an API for reading the current audio volume of a device, allowing to adapt the type of interactions with the user depending on that setting.
The combination of all these features mark the starting point of the Web as a comprehensive platform for multimedia, both for consuming and producing. The rising interest around bridging the Web and TV worlds (manifested through the W3C Web and TV Interest Group ) should strengthen that trend in the coming months. Mobile devices are expected to take a growing role in many users TV experience, providing a “second screen” experience, where users can find more information on or interact with a TV program they're watching via their mobile devices.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Video playback |
HTML5
video
element
|
HTML Working Group | Last Call Working Draft | Stabilizing | Updated regularly | Good deployment | Just started |
Audio playback |
HTML5
audio
element
|
Barely started | |||||
Capturing audio/video | HTML Media Capture | Device APIs Working Group | Working Draft | Early draft | Last update Apr 2011 | Very limited | None |
The Media Capture API | Working Draft |
getUserMedia
|
Last update Dec 2010 | None (?) | None | ||
getUserMedia()
WebRTC
1.0:
Real-time
Communication
Between
Browsers
|
Web Real-Time Communications Working Group |
|
|
|
A few experimental ones | None | |
Image & Video analysis, modification | HTML Canvas 2D Context | HTML Working Group | Last Call Working Draft | Mostly stable | Updated regularly | Widely deployed (iOS, BlackBerry, Android, webOS, Opera, Firefox, announced for Windows Phone) | Good coverage |
Audio analysis, modification | None | Audio Working Group | N/A | Not started | Mozilla Data Audio API , Google Web Audio API | None | None |
Audio volume reading | N/A | Device APIs | N/A | Not started | N/A | None | None |
3. Device Adaptation
Mobile devices not only differ widely from traditional computers, but they also have a lot of variations among themselves, in term of screen size, resolution, type of keyboard, media recording capabilities, etc.
The Device Description Repository API is a unified server-side API that allows Web developers to retrieve data on the devices that are accessing their pages on a variety of device information database.
A client-side equivalent has been proposed as part of the Systems Information API ; while that specification is being vastly revisited, the Device APIs Working Group expects to do further work on a device information API.
To take advantage of the large variety of media capturing devices provided on mobile phones, the The Media Capture API offers some detailed indication on the features and capabilities these devices.
CSS
Media
Queries
offer
a
mechanism
that
allows
to
adapt
the
layout
and
behavior
of
a
Web
page
based
on
some
of
the
characteristics
of
the
device,
including
the
screen
resolution.
CSS
Device
Adaptation
defines
a
set
of
CSS
directives
to
define
the
size
on
which
this
layout
should
be
based,
relatively
to
the
size
of
the
underlying
device
—
specifying
what
has
been
implemented
using
the
<meta
name="viewport">
element
so
far.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Device information | Device Description Repository Simple API | Device Description Working Group (now closed) | Recommendation | finished | N/A | Limited | Good Coverage |
Systems Information API | Device APIs Working Group | Working Draft | Likely to be vastly reworked | Last update March 2011 | N/A | N/A | |
Media Capture API | Device APIs Working Group | Working Draft | Likely to be vastly reworked | Last update December 2010 | N/A | N/A | |
CSS-based adaptation | Media Queries | CSS Working Group | Candidate Recommendation | Mostly finished | Last update August 2010 | Widely deployed | Good coverage |
CSS Device Adaptation | Working Draft | Early draft | Last update Oct 2011 | Experimental implementations | N/A |
4. Forms
The ability to build rich forms with HTML is the basis for user input in most Web-based applications. Due to their limited keyboards, text input on mobile devices remains a difficult task for most users; HTML5 address parts of this problem by offering new type of form controls that optimize the way users will enter data:
-
date
and
time
entries
can
take
advantage
of
a
number
of
dedicated
form
controls
(e.g.
<input type="date">
) where the user can use a native calendar control; -
the
<input type=" email ">
,<input type=" tel ">
and<input type=" url ">
can be used to optimize the ways user enter these often-difficult to type data, e.g. through dedicated virtual keyboards, or by accessing on-device records for these data (from the address book, bookmarks, etc.); -
the
pattern
attribute allows both to guide user input as well as to avoid server-side validation (which requires a network round-trip) or JavaScript-based validation (which takes up more resources); -
the
placeholder
attribute allows to guide user input by inserting hints as to what type of content is expected in a text-entry control; -
the
new
<datalist>
element allows to create free-text input controls coming with pre-defined values the user can select from.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Date and time entries |
HTML5
Date
and
Time
state
of
input
element
|
HTML Working Group | Last Call Working Draft | Stabilizing | Updated regularly | Limited | None |
Customized
text
entries
(
tel
,
email
,
url
)
|
HTML5
telephone,
email
and
URL
state
of
input
element
|
Stabilizing | Updated regularly | Limited (?) | None | ||
Input pattern |
HTML5
pattern
attribute
|
Stabilizing | Updated regularly | Very limited (?) | None | ||
Input hint |
HTML5
placeholder
attribute
|
Stabilizing | Updated regularly | Limited (?) | None | ||
Pre-defined values for text entries |
HTML5
datalist
element
|
Stabilizing | Updated regularly | Very limited (?) | None |
5. User interactions
An increasing share of mobile devices relies on touch-based interactions. While the traditional interactions recognized in the Web platform (keyboard, mouse input) can still be applied in this context, a more specific handling of touch-based input is a critical aspect of creating well-adapted user experiences. As a result, work has started on defining Touch Events in the DOM (Document Object Model).
Conversely,
many
mobile
devices
use
haptic
feedback
(such
as
vibration)
to
create
new
form
of
interactions
(e.g.
in
games);
work
on
a
vibration
API
is
under
consideration
has
started
in
the
Device
APIs
Working
Group
(a
recent
addition
in
the
new
charter
of
the
group
.)
.
But as the Web reaches new devices, and as devices gain new user interactions mechanisms, it also becomes important to allow Web developers to react to a more abstract set of user interactions: instead of having to work in terms of “click”, “key press”, or “touch event”, being able to react to an “undo” command, or a “next page” command independently of how the user instructed it to the device will prove beneficial to the development of device-independent Web applications. Work on abstract DOM events that would address this need is planned as part of the Web Events Working Group .
Mobile devices follow their users everywhere, and many mobile users rely on them to remind them or notify them of events, such as messages: the Web Notifications specification proposes to add that feature to the Web environment.
Similarly, the addition in the new charter of the Device APIs Working Group of an API to generate system beeps (rather than app-provided sounds) would facilitate the integration of the underlying system mechanisms to notify the user.
Mobile devices, and mobile phones in particular, are also in many cases well-suited to be used through voice-interactions; the HTML Speech Incubator Group is exploring the opportunity of starting standardization work around a framework that would make it possible for users to interact with a Web page through spoken commands (see their use cases and requirements .)
The hardware constraints of mobile devices, and their different usage context can make mobile users experience similar barriers to people with disabilities . These similarities in barriers mean that similar solutions can be used to cater for them, making a Web site accessible both for people with disabilities and mobile devices a natural goal. The Relationship between Mobile Web Best Practices and WCAG document look into these similarities.
WAI-ARIA provides semantic information on widgets, structures and behaviors hooks to make Web applications more accessible, including on mobile devies.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Touch-based interactions | Touch Events Specification | Web Events Working Group | Last Call Working Draft | Stabilizing | Updated regularly | Largely deployed | None |
Vibration |
|
Device API |
|
|
|
|
None |
Intent-based events | N/A | Web Events Working Group | N/A | Not started | Not started | None | None |
Notification | Web Notifications | Web Notifications Working Group | Working Draft | Early draft | Regularly updated |
|
None |
System beeps | N/A | Device API | N/A | Not started | Not started | None | None |
Speech-based interactions | N/A | HTML Speech Incubator Group , planning to request creation of standards-track work | N/A | N/A | Use cases and requirements | N/A | N/A |
Model-based user interfaces | N/A |
|
N/A | N/A | Model-based UI Incubator Group report | N/A | N/A |
Accessibilitiy | Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG) | Mobile Web Best Practices Working Group & Education and Outreach Working Group | Working Group Note | Finished | N/A | N/A | N/A |
Accessible Rich Internet Applications (WAI-ARIA) 1.0 | Protocols & Formats Working Group | Candidate Recommendation | Stable | Last updated Jan 2011 | Growing deployment | N/A |
6. Data storage
A critical component of many applications is the ability to save state, export content, as well as integrate data from other files and services on the system.
For
simple
data
storage,
the
Web
Storage
specification
offers
two
basic
mechanisms,
localStorage
and
sessionStorage
,
that
can
preserve
data
respectively
indefinitely,
or
on
a
browser-session
basis.
For richer interactions, the Web platform has a growing number of APIs to interact with a device filesystem: the File Reader API makes it possible to load the content of a file, the File Writer API allows to save or modify a file, while the nascent FileSystems API give access to more general file operations, including directory management.
On top of this file-based access, the Indexed Database API defines a database of values and hierarchical objects that integrates naturally with JavaScript, and can be queried and updated very efficiently. Note that the work around a client-side SQL-based database, which had been started in 2009, has been abandoned in favor of this new system.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Simple data storage | Web Storage | Web Applications Working Group | Last Call Working Draft |
|
Updated regularly | Well deployed | None |
File reading | File API | Web Applications Working Group | Working Draft | Stabilizing toward LC | Regular updates | Limited (?) | None |
File writing | File API: Writer | Web Applications Working Group | Working Draft | Early draft (but starting to stabilize) | Last update May 2011 | Limited (?) | None |
Filesystems operations | File API: Directories and System | Web Applications Working Group | Working Draft | Early draft | Last update May 2011 | None | None |
Database query/update | Indexed Database API | Web Applications Working Group | Working Draft | Still changing, but starting to stabilize | Regularly updated | Very limited (?) | None |
Web SQL API | Working Group Note | Abandoned | N/A |
|
N/A |
7. Personal Information Management
Applications can benefit from integrating with existing data records; on mobile devices, the address book and calendar are particularly useful source of information, which the Contacts API and the Calendar API bring access to.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Address book data | Contacts API | Device APIs Working Group | Last Call Working Draft | Stabilizing | Regularly updated | Very limited | early draft |
Calendar data | Calendar API | Device APIs Working Group | Working Draft | Still changing | Regularly updated | Very limited | None |
8. Sensors and hardware integration
Mobile devices are packed with sensors, making them a great bridge between the real and virtual worlds: GPS, accelerometer, ambient light detector, microphone, camera, thermometer, etc.
To take full advantage of these sensors in mobile Web applications, Web developers need to be provided with hooks to interact with them.
The Geolocation API provides a common interface for locating the device, independently of the underlying technology (GPS, WIFI networks identification, triangulation in cellular networks, etc.) The second version of that API adds the ability to retrieve a civic address matching the user’s current location.
Work has also started on providing access to orientation and acceleration data via the DeviceOrientation Event Specification .
The
A
new
proposed
Sensor
API
(replacing
a
feature
previously
available
in
the
abandoned
System
Information
API
)
proposes
a
generic
API
to
get
and
monitor
data
from
sensors,
although
the
Working
Group
producing
it
is
evaluating
whether
that
generic
approach
is
the
most
practical
way
forward.
sensors.
As already mentioned in the section on Multimedia , there is ongoing work on APIs to open up access to camera and microphone streams.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Geolocation | Geolocation API | Geolocation Working Group | Candidate Recommendation | Mostly finished | Regularly updated | Widely deployed | Good coverage |
Geolocation API v2 | Last Call Working Draft | Still changing | Last update Oct 2011 | None | N/A | ||
Accelerometer / Orientation | DeviceOrientation Event Specification | Geolocation Working Group | Last Call Working Draft | Stabilizing | Regularly updated | Limited, but growing | None |
Battery Status |
Battery
Status
|
Device APIs Working Group | Last Call Working Draft | Stabilizing | Updated regularly | None | None |
Generic sensors |
|
Device APIs Working Group |
|
|
Last
update
|
None | None |
Camera & Microphone streams | WebRTC 1.0: Real-time Communication Between Browsers | Web Real-Time Communications Working Group |
|
|
Last
updated
|
A few experimental ones | None |
9. Network
Network connectivity represents a major asset for mobile devices: the Web is an immense store of content, as well as an almost endless source of processing power, overcoming two of the limitations of mobile devices.
The Web platform is growing a number of APIs that facilitate establishing network connectivity in different contexts.
XMLHttpRequest
(the
“X”
in
AJAX)
is
a
widely
deployed
API
to
load
content
from
Web
servers
using
the
HTTP
and
HTTPs
protocol.
A
second
version
of
that
specification,
protocol:
the
W3C
specification
(formerly
known
as
XMLHttpRequest
Level
2
)
completes
the
existing
deployed
API
with
the
ability
to
make
requests
on
servers
in
a
different
domain,
programmatic
feedback
on
the
progress
of
the
network
operations,
and
more
efficient
handling
of
binary
content.
The
work
on
documenting
the
currently
deployed
API
(XMLHttpRequest
Level
1)
has
been
abandoned
in
favor
of
getting
the
new
API
developed
more
quickly.
By default, browsers do not allow to make request across different domains (or more specifically, across different origins , a combination of the protocol, domain and port) from a single Web page; this rule protects the user from having a Web site abusing their credentials and stealing their data on another Web site. Sites can opt-out of that rule by making use of the Cross-Origin Resource Sharing mechanism, opening up much wider cooperation across Web applications and services.
XMLHttpRequest is useful for client-initiated network requests, but mobile devices with their limited network capabilities and the cost that network requests induce on their battery (and sometimes on their users bill) can often make better use of server-initiated requests. The Server-Sent Events API allows to trigger DOM events based on push notifications (via HTTP and other protocols.)
The WebSocket API , built on top of the IETF WebSocket protocol , offers a bidirectional, more flexible, and less resource intensive network connectivity than XMLHttpRequest.
Of
course,
an
important
part
of
using
network
connectivity
relies
on
being
able
to
determine
if
such
connectivity
exists,
and
the
type
of
network
available.
The
HTML5
onLine
DOM
flag
(and
its
associated
change
event,
ononline
)
signals
when
network
connectivity
is
available
to
the
Web
environment.
The network-information API addresses discovery of the network characteristics, allowing to determine for instance if the user is on a WIFI or a 3G connection.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
HTTP(s) network API | XMLHttpRequest | Web Applications Working Group | Working Draft | Still changing, but starting to stabilize |
|
Very
broad
for
level
1
features,
limited
|
|
Cross-domain requests | Cross-Origin Resource Sharing | Web Applications Working Group | Working Draft | Close to stabilizing |
Last
update
November
|
Growing deployment Implementation data | None (?) |
Server-pushed requests | Server-Sent Events | Web Applications Working Group |
|
Still changing but stabilizing | Regularly updated | Growing | None (?) |
Bidirectional connections | The WebSocket API | Web Applications Working Group | Last Call Working Draft | Stabilizing | Regularly updated | Growing | None |
on-line state | HTML5 onLine DOM state | HTML Working Group | Last Call Working Draft | Mostly stable | regularly updated | Getting deployed | None |
Network characteristics | The Network Information API | Device APIs Working Group | Working Draft | Early draft | Regularly updated | Very limited | N/A |
10. Communication and Discovery
Beyond connection to on-line services, allowing communications between users, but also between devices and between applications is an important aspect of a good mobile development platform. To communicate with unknown devices or pre-existing services, a discovery component is critical.
The
Messaging
API
completes
the
existing
ability
to
create
and
send
message
through
links
(with
sms:
,
mms:
and
mailto:
URI
schemes)
with
more
control
on
adding
attachments
and
the
success
of
the
message
sending.
The
postMessage
API
of
HTML5
Web
Messaging
allows
for
Web
Applications
to
communicate
between
each
other.
Exploratory
work
in
the
Device
APIs
Working
Group,
inspired
by
the
based
on
Web
Introducer
Intents
and
similar
works,
would
,
should
also
open
up
possibilities
of
closer
integration
of
Web
applications,
as
well
as
of
Web
applications
with
native
applications.
The recent launch of the Web Real-Time Communications Working Group is the starting point of a much wider set of communication opportunity:
- Peer-to-peer connection across devices,
- P2P Audio and video streams allowing for real-time communications between users.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Emails, SMS and MMS with generated attachments | The Messaging API | Device APIs Working Group | Working Draft |
|
Last update July 2011 | None | None |
Inter-app communications | HTML5 Web Messaging | Web Applications Working Group | Working Draft | Stabilizing | Regularly updated | Limited (?) | None |
Inter-app triggers |
|
|
N/A | Not started |
|
None | None |
P2P connections | WebRTC 1.0: Real-time Communication Between Browsers | Web Real-Time Communications Working Group |
|
|
|
None | None |
P2P Video/Audio streams |
11. Packaging
An important aspect of the user experience of applications is linked to how the user perceives the said application is available permanently (even when off-line, which is particularly important on mobile devices), as well as how it can shared and distributed, typically through purchases via applications stores — this is adequately addressed by packaging the application.
The Web platform offers two complementary approaches to packaging Web applications:
-
HTML5’s
ApplicationCache
enables access to Web applications off-line through the definition of a manifest of files that the browser is expected to keep in its cache; - the W3C Widgets family of specifications define a framework for distributing Web applications as Zip files completed by a configuration file (see Widget Packaging and Configuration ); this configuration file is the basis for additional features such as signature of applications , controlled access to advanced APIs, restricted network usage , etc.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Application Cache | HTML5 Application Cache | HTML Working Group | Last Call Working Draft | Still changing but stabilizing | Regularly updated | Getting deployed | None |
Widgets | Widgets Packaging & Configuration | Web Applications Working Group |
|
|
Last update Aug 2011 | Limited | Full coverage |
Digital Signatures for Widgets | Proposed Recommendation | Mostly finished | Last update Aug 2011 | Limited | Full coverage | ||
Widget Access Request Policy (WARP) |
|
Mostly
|
Last update Aug 2011 | Limited | Full coverage |
12. Performance & Optimization
Due to their limited CPU, and more importantly to their limited battery, mobile devices require a lot of attention in terms of performance.
The work started by the Web Performance Working Group on Navigation Timing , Resource Timing , and more recently Performance Timeline and User Timing , gives tools to Web developers for optimizing their Web applications.
The proposed work on Efficient Script Yielding offers the opportunity to Web developers to use more efficiently asynchronous programming.
The API to determine whether a Web page is being displayed ( Page Visibility API ) can also be used to adapt the usage of resources to the need of the Web application, for instance by reducing network activity when the page is minimized. Likewise, the Timing control for script-based animations API can help reduce the usage of resources needed for playing animations.
The battery API allows to adjust the use of resources to the current level of power available in the battery of a mobile device.
Beyond optimization of resources, the perceived reactivity of an application is also a critical aspect of the mobile user experience. The thread-like mechanism made possible via Web Workers allows keeping the user interface responsive by offloading the most resource-intensive operations into a background process.
The Mobile Web Application Best Practices provide general advice on how to build Web applications that work well on mobile devices, taking into account in particular the needs for optimization.
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
---|---|---|---|---|---|---|---|
Timing hooks | Navigation Timing | Web Performance Working Group | Candidate Recommendation | Mostly finished | Regularly updated | Getting deployed | Started |
Resource timing | Last Call Working Draft | Stabilizing | Regularly updated | None | N/A | ||
Performance Timeline | Last Call Working Draft | Stabilizing | Regularly updated | None | N/A | ||
User timing | Last Call Working Draft | Stabilizing | Regularly updated | None | N/A | ||
Priority handling | Efficient Script Yielding | N/A | Early draft | Regulary updated | None | N/A | |
Page Visibility detection | Page visibility API | Last Call Working Draft | Stabilizing | Regularly updated | None | N/A | |
Animation optimization | Timing control for script-based animations | Working Draft | Early draft | Regularly updated | None | N/A | |
Threading | Web Workers | Web Applications Working Group | Last Call | Stabilizing | Regularly updated | Growing |
|
Battery Status | Battery Status Events | Device APIs Working Group | Last Call Working Draft | Stabilizing | Updated regularly | None | None |
Optimization Best Practices | Mobile Web Application Best Practices | Mobile Web Best Practices Working Group (now closed) | Standard | Finished | N/A | N/A | N/A |