Still under development, HTML5 is the next major revision of HTML (HyperText Markup Language) and is intended to replace HTML4, XHTML1, and DOM2 HTML specifications. The Web Hypertext Application Technology Working Group (WHATWG) started work on the specification in June 2004 and in October 2009 the specification entered “Last call for comments” stage which means the draft is nearly complete pending feedback from contributors. It is estimated by WHATWG that HTML5 will reach the W3C Candidate Recommendation stage during 2012, but will already be in use long before 2012. Microsoft has already started implementing parts of HTML5 in IE8 and is building IE9 around HTML5 specification (See Microsoft IE9 Platform Preview for more information).
The aim of HTML5 is to enhance the HTML, XML markup language, and define many APIs to form the basis of Web architecture. The following are new elements have been introduced to the HTML5 markup language that can be found on www.w3.org:
- section represents a generic document or application section. It can be used together with the h1, h2, h3, h4, h5, and h6 elements to indicate the document structure.
- article represents an independent piece of content of a document, such as a blog entry or newspaper article.
- aside represents a piece of content that is only slightly related to the rest of the page.
- hgroup represents the header of a section.
- header represents a group of introductory or navigational aids.
- footer represents a footer for a section and can contain information about the author, copyright information, et cetera.
- nav represents a section of the document intended for navigation.
- figure can be used to associate a caption together with some embedded content, such as a graphic or video.
- video and audio for multimedia content. Both provide an API so application authors can script their own user interface, but there is also a way to trigger a user interface provided by the user agent.
- source elements are used together with these elements if there are multiple streams available of different types.
- embed is used for plugin content.
- mark represents a run of marked text.
- progress represents a completion of a task, such as downloading or when performing a series of expensive operations.
- meter represents a measurement, such as disk usage.
- time represents a date and/or time.
- ruby, rt and rp allow for marking up ruby annotations.
- canvas is used for rendering dynamic bitmap graphics on the fly, such as graphs or games.
- command represents a command the user can invoke.
- details represents additional information or controls which the user can obtain on demand. The summary element provides its summary, legend, or caption.
- datalist together with the a new list attribute for input can be used to make comboboxes.
- keygen represents control for key pair generation.
- output represents some type of output, such as from a calculation done through scripting.
HTML5 also intends to reduce the needs for third party plugs such as Microsoft Silverlight, Adobe Flash, and Sun JavaFX by providing APIs that allow video and audio to be easily embedded in HTML and by providing canvas tags to allow immediate 2D rendering. The following new APIs can be found currently in the HTML5 specification:
- Microdata: is an API for embedding HTML syntax to create machine-readable semantic markup about objects.
- 2D Context: an APU for creating a flat Cartesian surface which can be used for rendering graphs, game graphics, or other visual images on the fly.
- Cross-document messaging: is an API for a messaging system that allows documents to communicate with each other regardless of their source domain in a way designed to not enable cross-site scripting attacks.
- Channel messaging: is an API for an asynchronous messaging system that allows independent pieces of code to communicate directly sending messages in one port and delivered at the other port.
- Device Element: represents a device selector that allows a user to give the page access to a device such as chatting via a video camera.
- Web Workers: is an API for running long-running scripts that are not interrupted by scripts that respond to clicks or other user interactions. These independent background scripts allow long tasks to be executed without yielding to keep the page responsive.
- Web Storage: is an API for adding data to the session storage and it will be accessible to any page from the same site opened in that window.
- Web Sockets API: enables Web applications to maintain bidirectional communications with server-side processes.
- Web Sockets Protocol: enables two-way communication between a user agent and a remote host via a single TCP connection that allows traffic in both directions.
- Server-Sent Event: is an API for opening an HTTP connection for receiving push notifications from a server in the form of DOM events.
For more information about HTML5 visit HTML5.org, A Web Developer’s Guide to HTML 5, The WHATWG Blog, HTML5 Quick Reference Guide, HTML5 differences from HTML4, HTML5: The Markup Language, 20 Essential Things to Know About the HTML5 Web Language, Dive into HTML 5, Planet HTML5, When can I use features in HTML5, CSS3, SVG and other upcoming web technologies, and HTML5 Doctor.