现在的 HTML5 就像当年崭露头角时的 Ajax,有人在做,但不知道叫它什么。最近,苹果在 HTML5 上大做文章 ,而著名的 Web 设计师 Eric Meyer 则提出了 Web Stacks 的概念。Alex Kessinger 是 Yahoo 的一名前端工程师,本文是他对 HTML5 应用现状与前景的思考。

术语

首先说说 HTML5 应用中的几个定义。

HTML5

HTML5 最好的定义来自 Mark Pilgrim 的 Dive Into HTML5 :

"HTML5 是继 HTML4.01,XHTML 1.0/1.1 之后的下一代 HTML "

值得一提的是,我们或许能看到 HTML6,然而按 Pilgrim 在 WHATWG 博客 中 的说法,下一代 HTML 很可能去掉版本号这一概念。

应用

来自 Wikipedia 的解释:

"应用程序是计算机用来执行特定任务的软件 "

HTML5 应用

从用户的角度,HTML5 应用和其它的计算机应用程序还不完全一样,但已经很接近。从开发者的角度,HTML5 应用是一些基于 HTML,JavaScript,CSS 的程序,它们使用开放技术,可以离线使用,可以取代诸如 Silverlight 及 Flash 等专用平台的部分工作。或者说,多年来,你用来创建 Web 页面的东西,现在可以用来创建类似桌面和智能手机程序的应用。

开源模式带来转变

O’Reilly 创始人,Tim O’Reilly,一位开源的支持者,曾在《Open Source Paradigm Shift 》中如是说:

"IBM 对个人电脑设计的商品化使利润从硬件转移到软件这一层面,而开源将带来新的财富 "

价值在不同的层面转移,HTML5 将成为新的层面,商品的价值在下降,现时的浏览器已经成为商品,但这并没有问题,只要它们都遵守标准。人们说,我们可以将操作系统置入浏览器中,但这行不 通,如果我们可以从过去的经历中学到些什么,那就是,不能简单照抄过去的模式,好比广播到电视的变迁,你不能简单地在一个播音员面前放台摄像机完事,将操 作系统置入浏览器未必比 HTML5 离线应用本身更有价值。

发布渠道的重要

诸如 苹果应用商店,Android 应用商店一类的渠道将成为主导,另外,一些新的,象 Valve 游戏渠道,Netflix 电影渠道一类的东西将会出现,在”云“时代,这些发布渠道将像桌面时代的操作系统一样用来对用户进行组织和归类。

我们是如何到达现在这个阶段的?

有两个关键的因素。

感谢 Web 标准

尽管浏览器市场并不统一,但至少他们都运行 HTML,JavaScript 和 CSS。当我们希望通过 Web 推出一些东西的时候,我们知道,无论如何,用户都能看到,然而你能想象人们都自己定义 Web 时的情景吗,假如有人不使用 HTTP协议,或者不使用 HTML,那才是世界的末日。W3C 一类的组织让各个浏览器厂家都保持同一个方向。

还好,我们并没有很多渲染引擎

浏览器并不好做,数十亿的网页,参差不齐的代码,这些东西让独立开发者没有机会单独设计浏览器,因此,有能力设计浏览器的始终是那么一小撮厂商,事 实上,时至今日,我们只有四种主要的浏览器渲染引擎,Trident (IE), Gecko (Mozilla, Firefox), WebKit (Chrome, Safari), 以及 Presto (Opera),而众多浏览器都是建立在这些渲染引擎之上的。这意味着,不管在什么样的设备上,我们不用太担心它使用什么样的浏览器,不管什么设备,只要 它有一个浏览器,就有一个可以运行 HTML5 的环境。

标准何日面世?

关于 HTML5 成为标准的时间,Ian Hixie 的说法最受认可:

"根据估计,HTML5 直到 2022 年才会形成 W3C 推荐标准 "

然而,虽然标准的形成尚待时日,但浏览器厂商已经在实现各种 HTML5 功能。

功能探测 vs 浏览器探测

如果你是开发者,你可以使用那些高级功能,但需要进行功能探测并提供渐进式设计。坊间有大量的功能探测库,如 Modernizer ,另外,Mark Pilgrim 有一个清单,它可以让你探测任何功能 。

离线 API

离线 API 是一切 HTML5 应用的基础,不单单是离线数据的事,对开发者来说,拥有本地存储(localStorage ) 自然很好,但如何让程序完全离线运行?Application Cache 是答案。如果不能离线保存源文件和数据,我们就无法实现离线的 HTML5 应用。

我们目前有几种离线存储机制,简单的如 localStorage 和 SQL 存储引擎,已经有一些浏览器在支持了,而最新的明星是 Indexed Database ,它得到了所有主 流浏览器支持。这些离线保存应用和数据的能力,是 HTML5 的基础,目前,Webkit,Firefox 已经可以实现,而 IE9 也即将实现。即时 IE9 的支持还需要等待,想一下,最需要离线应用的场合是哪里,自然是智能手机和上网本,智能手机多数都是用 Webkit。

W3C Web 应用工作组:HTML5 应用的下一步

W3C WebApp s 标准已经做了大量工作,包括 API 及 HTML5 Web 程序细则。

HTML5 应用的打包部署

HTML5 apps – QuirksBlog 博客文章中说,"对于本地/离线 HTML5 应用,W3C Widget packaging and configuration 是首选机制,并将成为事实标准,很多厂商已经开始对之进行实现。W3C Widgets 支持任意平台的 Vodafone S60 和 Samsung 手机 , Opera 桌面与移动浏览器 ,Bolt 浏览器 以及 Windows Mobile 6.5 。BlackBerry 也支持,不过需要特殊的 Java 包。 "

这些都是标准,本质上讲,如果你有一个 HTML5 应用,它就会包含 HTML, CSS, 以及 JS,这些标准只不过偶是帮助开发者将他们的程序打包发行,如果你熟悉 PEAR , 它们是很相似的概念。你可能需要一些元数据,告诉系统你的程序是如何打包在一起的,在支持这些标准的平台上,你就可以保证你的用户可以顺利运行这些程序。

其它

HTML5 还有更多 API 可以帮助开发者创建应用,这些 API 可以让你的程序访问诸如本地文件 ,摄像头 ,SOCKET 通信服务 ,以及硬件动画加速 等。这些 API 仅仅是开端,这样的 API 后期会越来越多。

HTML5 程序可以应用在哪里?

当然是浏览器,如果一个设备拥有一个浏览器或渲染引擎,而且这个引擎是现代引擎,它就可以运行 HTML5 程序。HTML5 程序会应用在以下几种场合。

桌面

如果你拥有一个符合 Web 标准的浏览器,就可以运行 HTML5 应用。桌面仍然很重要。

指定站点浏览器

诸如 Gmail 一类的站点可以看做一个应用,使用专门的浏览器 运 行,这样的浏览器没有地址栏,是专门用来运行指定站点应用的,甚至可以制作一个安装包来分发。以下资源值得一看,Prism , Fluid /Fluidium 以及 NativeHost 。

移动领域

这是 HTML5 最热门的运行场所。iPhone 可以和很多程序集成,将你的程序显示在它的今日桌面(这里有 一个教程 ),Android 也支持需要的 HTML5 API,但集成不够好。未来几年,支持 HTML5 的移动浏览器将如雨后春笋,将你的应用向 HTML5 迁移是很明智的,因为 HTML5 将很好地运行在这些设备上。

跨界领域

已经有公司即将发布电视平台,Google TV 以及 Apple TV ,Google 表示,他们的 TV 平台将支持 HTML5,我们不知道苹果的 TV 平台将支持什么,鉴于他们最近对 HTML5 的一系列炒作 ,很有可能也支持。另外 一些电视盒厂商,如 Boxee 业已开始支持 HTML5,如果你想为 Boxee 开发应用,与其专门为它开发,不如直接使用 HTML5。

跨界领域拥有大量的平台,那些可以连接电脑的电视的数量在不断增长,我们已经可以在电视上全屏观看 YouTube,而备受欢迎的 Wii 则内置了 Opera。所有这些,都将借助 HTML,CSS 与 JavaScript。

HTML5 应用商店

Eric Meyer 讲到了 HTML5 应用程序问题,他将 HTML5 应用成为 Web Stack Apps , HTML5 要获得更多关注,可以 建立 HTML5 应用商店 。Chrome 正在这样做,而 Palm 已经有了一个这样的东西 。

应用商店是很好的东西,开发者可以直接得到报酬,而无需像现在这样靠广告维持,同时,用户也将有一个地方去为他们的设备寻找程序。

HTML5 市场前景

HTML5 在快速成长,值得所有人密切关注,最近的一两年,会有很多公司进入这个领域,我们或许会在 Chrome 应用商店看到一些重量级厂商,我们也有希望在 Google TV 和 Apple TV 领域看到一些应用商店的出现。HTML5 会像传统的 Flash,Flex,Silverlight,Objective-C 那样,形成自己的生态系统。HTML5 将比 Flash, Flex, Silverlight 以及 Objective-C 更容易出现在任何设备。

对于年轻一代开发者,HTML5 应当是他们首选技能,HTML5 会形成很大的市场,很有很多公司需要这方面的人才。