51CTO推荐专题:HTML 5,下一代Web开发标准详解
如果你一直关注Web,你可能认为Flash播放器和Silverlight已经进入生命倒计时,而HTML 5则正在迅速改变Web上的一切。然而,实际上许多正在评价HTML 5的人并不完全理解当前的领域。你知道HTML 5标准的编者Lan Hickson曾说过“在2022年以前HTML 5不会被在所有浏览器上完全实现吗?”你知道iPhone开发者现在已经可以完全使用HTML 5?你知道HTML 5中的所有功能都来自于Web插件?你知道谷歌在其产品Wave中使用了一个Web插件吗?
我们需要对HTML 5以及它对Web的意义进行一次开放而坦诚的探讨。不幸的是,你不会从狂热的任何一方获得真相,而是需要我们检查所有的事实证据,然后得出我们自己的结论。我已经花费了大量时间来分析这个事实,在这个过程中我得出了几个观点。
现状
在经过许多专注开发者的努力工作后,HTML 5已经基本准备就绪。这个过程从10年前已经开始,到今天为止经历了多次反复。今天,HTML 5已经在许多平台/浏览器上准备就绪。但是,并非所有浏览器实现了这个标准的全部功能,而且某些浏览器甚至还未宣布何时将实现完全支持HTML 5。事实上,iPhone操作系统3.0是目前唯一完全支持HTML 5的稳定版操作系统。对开发者来说这意味着,对多数开发者来说,HTML 5依然是很遥远的事情。
当去年9月看到Jeff Croft的“2022年”说法的时候我非常震惊。它反映出了许多开发者对Web标准整体的失望。我没有与Jeff讨论过这个问题,我一直是他的研究成果的粉丝。在获悉实现HTML 5完全支持的这个残酷最后时限时,Jeff表示,“HTML 5是在下周或下个月或未来15年后推出,这并不重要。对我们这些在这个行业从事实际工作的人来说,重要的是人们真正使用的浏览器支持哪些规范和技术。”
为客户提供解决方案的开发者并不在乎理论,他们关心的是现实。按照这个说法,如果一个解决方案的目标客户只有全部客户的10%,它就不算一个成功的解决方案;如果它只能被90%客户使用,同样也不算一个好的解决方案。客户希望网站或应用程序能够适合目标客户中的每一名成员,而且是现在就能满足。这就是我的第一个观点:
观点1:
至少在2014年之前,开发商将无法在为客户提供的解决方案中使用HTML 5(除非他们是在一个如上所述的特定平台上)。至于在解决方案中使用HTML 5的全部功能,则将会更晚。
开发者可以考虑创建同时利用HTML 5和当前的HTML/JS模式的解决方案。不过,这意味着开发商将不得不创建一个单一解决方案:
1、浏览器能自动探测并确定用户具备使用HTML5的能力;
2、一个针对目前或更老版本浏览器的全功能HTML 4.1/XHTML 1应用程序:
(1)多个支持IE6、IE7、Firefox 3和Safari 3的CSS文件;
(2)兼容上面列出的所有浏览器的JavaScript
3、全面支持HTML 5的应用(其中将与HTML 4.1应用程序几乎没有重叠的代码)
对那些狂热于应用CSS和JavaScript的开发者来说,这只不过又增加了一层复杂性。事实上, 对于传统的开发者来说,直到90%以上的网络使用支持HTML5的浏览器的时候,HTML5才会进入他们的选择。请记住,尽管IE6早在8年前(2001年)就已经推出了,但是大多数网站还在检查IE6的用户。
插件的真相
本次讨论的核心是我们今天使用的网络插件。最近许多文章声称HTML5将逐个消灭传统网络插件。实际上,这与事实相差太远。在我直接谈到这个问题之前,我们需要仔细看看什么是网络插件。
当列出网络插件时,大多数人都会意识到,常见的包括Adobe Flash Player、Microsoft Silverlight和JavaFX等。然而实际上它还包括谷歌Gears、谷歌本地客户端(Google Native Client)、谷歌地球插件(Google Earth plug-in),以及谷歌音频/视频聊天插件等网络插件。此外,除了Google的插件,还有不计其数的的其他厂商的插件。由于这些插件是“封闭源代码”项目的事实,它们经常遭到诟病。事实的真相是,插件有一个快速开发周期来引导创新。我不是说在开源项目中它不可能发生,但是我需要为真正客户开发最先进的解决方案,我不能期待真正创新的网络标准,更多是已经被实施的网络标准:
观点2:
网络标准不会永远创新,它们只会执行那些已经成功包含的插件。这源于这样一个事实:标准化进程是由微软、谷歌和Mozilla等公司所主导的,除非这些公司已经在某个产品开发方面占有一席之地,否则他们不会投资于在这方面建立某项标准。术语标准化意味着你把已经存在的东西拿过来,然后为实施它建立一个统一的过程。
此外,许多开发商不承认插件在HTML 5标准中的作用。这使我产生了另外一个观点:
观点3:
HTML 5中的每一个新功能之所以被增加,是因为开发商需要一个已经被以插件形式实现的功能。这包括离线缓存(Google Geas) 、画布(Flash播放器)、媒体播放(Flash播放器等)、拖放(Flash播放器等)等等……
处于这场争论最前线的是谷歌Wave,最近谷歌在其IO大会上宣布了这个产品。这个富互联网应用已被称为Web标准作用的一个伟大例子。然而,没有人指出它需要一个插件才能运行这个事实。的确,证明HTML5能够做什么的实例,需要谷歌Gears展示它的部分功能。事实上,它仅是一小部分功能,但是它揭示了一个重要的观点。
观点4:
谷歌可以选择通过标准化进程,来尝试在推出Wave之前添加拖放功能,但是他们认为如果没有这一功能,用户体验将会变糟。于是他们选择使用插件来提供最佳的整体用户体验。
事实上,插件可以在一年之内就“升级网络”。在现实生活中,一个想法可以通过生产、质量评价和发布给用户,然后在16个月内被推广到85%以上的的网络。但是Web标准难以做到这一点:
观点5:
由于涉及到大企业和实体,任何重大的改变(需要浏览器发行商以统一的方式改变浏览器的功能),从最初的想法到实际执行(在所有浏览器)至少需要十年的时间 。另外加上使用旧版本浏览器的用户升级的时间,该过程还需要多花5年多时间。
如果HTML5被当前所有主要的浏览器完全支持,并且如果所有这些用户使用了这些升级后的浏览器,Web插件将会遭受到来自HTML5的沉重打击(但是即便如此,它也不会完全消灭它们)。在现实生活中,HTML 5甚至无力与Web插件竞争,因为它是目前唯一可行的固定平台解决方案(像iPhone )。
质量与标准
这一话题让我感到愤怒的主要一点是,许多开发商在追求Web标准时却忽视了质量。这是视频编解码器争论的核心所在(围绕HTML5也有很多这类问题的例子) 。开发商选择在相对开放的基础上去评估解决方案,而不是注重其实际的功能。过去的五年告诉了我们什么?我们最终将会进入一个用户体验至上的时代,但是现在一些开发商为了开放性而牺牲了质量。这是我个人最强烈的意见:
观点6:许多开源解决方案处于各自领域的顶尖水平(Apache、MySQL、Linux、Flex Framework等等)。劣质的解决方案(如Ogg编解码器)不能只是因为他们是“开放”的就应该容忍。如果您想要所有的浏览器执行一个视频编解码器,那就做一个优于H.264的。在使用“开放”解决方案时,开发商绝不应牺牲用户体验的热情。
当一个潜在客户评判我的工作(或我公司的工作)时,他们不会关心网络标准,他们关心的将是工作的质量和功能。此外,当用户使用我的应用软件时,他们不会在意“开放性” ,而只在意整体功能和用户体验。作为一名开发人员和公司的雇员,我不能推荐劣质的解决方案。我必须基于能保持竞争力的功能来评价所有的解决方案。这意味着,如果HTML5将来能够提供更好的功能,我会认为它是一个好的解决方案,但是,我不会仅仅因为它是开放的就选择它。HTML5将与其他解决方案在平等的基础上参与竞争。
未来
我希望这些意见能够全面阐明这个问题。问题的关键是:特定平台的开发人员现在就可以享受HTML5。现在他们就应该拥抱它,开始学习HTML5并用HTML5工作。传统的开发人员将必须等待大约5年时间才能真正选择HTML5。到那个时候,我们可能已经拥有Flash Player 13、Silverlight 5和JavaFX 3 。谁知道这些版本将包括什么呢?但是,我们可以猜测到,它们包含的功能很可能将包括在未来版本的HTML中。
【编辑推荐】