HTML 5在应用程序开发方面没有捷径
【51CTO外电头条】对于专业开发人员来说,最令人抓狂的说法莫过于有人以“HTML程序员”自居。网页编码之于真正的编程工作,正如撰写菜单之于真正的烹饪过程。但平台供应商近来的说法无疑令人大跌眼镜――HTML已经成为从智能手机、平板应用到桌面系统应用等各大开发领域的首选开发工具。
Palm品牌当初启动其自有平台WebOS时,曾声称开发人员只需掌握基本的网页编程标准,即可轻松为其开发应用程序。微软在Windows Phone 7上也放出过类似的言论。谷歌的Chrome浏览器具备一套“网络商店”,允许大家将自己的桌面网页应用程序放入其中进行出售。但最终真正令我瞠目结舌的情况是,根据最近演示版本的表现,Windows 8系统上的应用程序将主要利用HTML5进行开发。这种状况在令Windows开发人员们惊恐不已之余,更令人不禁揣测微软可能正计划完全放弃对Silverlight甚至.Net本身的支持。
我勒个去!难道我们真会被HTML 5铺天盖地的宣传攻势所蒙蔽,继而相信微软已经准备放弃Windows API并转而支持网页标准?这毫无道理。我承认HTML5的确是一款不错的工具,而且能够为网页创造出良好的应用,但如今将其推至如此的高度就太过荒谬了。尽管它广受欢迎,但我们仍然有足够的理由解释为什么没人将其作为通用开发工具的首选方案。以下是需要深入思考的一些注意事项。
1. 打算用HTML单独创建程序?祝你好运吧
任何建议用HTML来创建应用程序的家伙实际上都打定了主意想拖我们的后腿。他们潜在的台词当然是让我们用HTML及JavaScript来编写程序,但这还不是我们需要用到的全部工具。事实上,要开发真正的网页应用程序,我们至少要用到HTML、JavaScript以及CSS――三种各自完全独立的语言,而且是同时用到。W3C曾努力为HTML5添加了更多API,以使其能够与网页标准及诸如多线程及本地存储之类的功能共同协作。这种做法其实是先假设我们的应用程序不再连入任何类型的服务器端组件――也许是为了减轻繁重的运算及存储负荷――而接下来我们要面对的就是所有必要的额外语言、API以及标准。
当有人谈起创建某种应用程序“如同创建网页应用程序一样简单”时,他们所表达的真正意义是什么?网页开发当下已经演变出一套复杂、多层次且涉及多种语言的规则。一般来说开发网页应用已经不像我们印象中那么小菜一碟了。但这种难于掌握的模式真的就是我们打算强加给下一代开发人员的传承产物吗?
2. HTML的设计初衷并非为了创建应用程序
HTML5总是伴随着许多议论,最主要的论调是认为它本身就是HTML的强化版,只不过针对网页应用程序支持做出了一些改进。但拥有更好的应用程序支持并不代表着HTML标准也在向此方向转型。原本从XHTML 1.1手中接过旗帜的应该是XHTML 2,其着重强调的是语义标识与XML集成。归根结底,XHTML 2是一种以文档为核心标识的语言。
XHTML 2最终折戟沉沙,然而,一个名为网页超文本应用程序技术工作组(简称WHATWG)的独立机构却从该项目中分裂出来,不仅摆脱了W3C的HTML构想,更开始从另一个角度为新标准的诞生努力工作。而正是由于该机构的出现,网页应用程序才迎来了崭新的纪元――其研究的成果正是我们今天所熟知的HTML 5的基础。
但是HTML 5真的就是最好的发展方向吗?以HTML 5所大肆宣扬的<canvas>标签为例,其从本质上意味着“插入一系列编程生成的、无法由标识描述的图形内容”。这对于标识语言来说是种很奇怪的使用方式。如果我们沿着这种思路继续走下去,恐怕等于是将网页标准硬塞进一个它永远不会真正适应的躯壳当中。这对于网页领域来说可能是必要的,但我们真的希望将这套体系扩展至方方面面,并最终把自己也扯进极为被动的局面中?
3. HTML在构建用户界面方面弱爆了
苹果公司对其原始Mac电脑做出的最重大的革新措施之一就是为开发者们公布了一套细致的人机接口指南。因此,与DOS程序不同,Mac电脑上的应用程序在外观和实际表现方面具备良好的一致性。这些应用全都采用同样的菜单、同样的对话框以及同样的报错方式。当大家探讨Mac OS的巨大成功时,该系统在印象上的连贯性与一致性被公认是其中一个突出的原因。这种特性甚至能克服一部分新系统给用户带来的陌生感与困惑。
而在网页应用程序方面,我们又回到了DOS时代。界面设计者们能够自由地创建他们想要的任何按钮,可以让菜单从任何位置滑下或弹出,也完全有能力按自己的喜好将整个窗口设置成任何样式。如果没有一套标准化的部件,利用网页技术开发应用程序会使成品变得充满冲突感,有时甚至会让人感觉像是外星人的作品。此外,即使有些人愿意彻底抛开自己的想法,将用户界面构建得与iPhone上的应用程序一模一样,这套界面框架仍然无法直接适用于其它类型的Android手机。谁会花费大把时间去创建那种一个平台一个样的“本地化”网页应用?没人会这么做,绝对没有(更别说这里面还有不同机型之间屏幕尺寸的差异)。
4.创建专有平台的HTML应用程序毫无意义
好吧,退一步说,也许大家并不在意具体为哪款设备或哪个平台开发软件。比如说,现在我们正为iOS或Windows 8开发一款应用程序。但我们究竟为什么要在单平台应用程序开发中使用HTML呢?事实上HTML的全部卖点及其相关技术所指向的都是开放式、跨平台标准。
更重要的是,iOS与Windows都具备自己的软件开发工具,而且这些工具在许多HTML有所不足的方面还同时做出了强化。首先它们为大家提供了一套标准化部件,允许我们建立统一的用户界面。其次,它们还提供访问API的权限,使我们能够根据本地处理速度对运算强度进行调整。此外,它们允许大家将自己的应用程序与那些其它平台不具备的核心OS特色整合起来(由此也能够大概推测消费者为什么会选择此类平台)。而如今,我们要把这种种优势全数抛弃,为什么?因为网页应用程序的编码“更容易些”?即使真的更容易些,大家也不可能把擅长HTML当成卖点写进简历――那样你在就业之路上肯定会搞得灰头土脸。
5.绝不应该限制开发人员选择网页编程技术
要在网页开发论坛上挑起激烈的口水战,选择“询问哪款编程语言‘最好’”这一话题再合适不过了。开发人员们都有自己所偏爱的工具,而且备选的编码方案也有很多。
然而,网页领域可选面就窄得多了。制作网页应用程序意味着使用HTML、CSS以及JavaScript进行编程。这些都是必考内容,因此也得到了大家广泛的掌握。不过普及率高并不意味着人气高。
但因为几乎每个人都对HTML、CSS以及JavaScript有所了解,因此这些语言在开发人员群体中就有了极高的安装占有度。这才是各大厂商们迅速宣称在其新平台上开发产品“就像利用HTML 5进行编码那样容易”的真正原因。如此一来,他们就可以坚称已经有数百万的开发人员已经了解了如何与其平台协同工作――尽管这种结论实在缺乏客观依据,因为每款OS及平台都具有自己的特性。