阅读更多

7顶
4踩

移动开发

翻译新闻 关于 HTML5 的 11 个让人难以接受的事实

2011-12-31 11:55 by 正式记者 WebAppTrend 评论(8) 有12066人浏览
HTML5为Web开发者提供了很多强大的新特性,但是它的一些特定的限制会让它无法和本地应用匹敌。

HTML5整合进了很多新的特性,并且有可能提升Web编程模式。和每一个阅读技术资讯的人所知道的一样,没有任何一样东西能比HTML5对互联网造成更多改变。在代码中加入一些HTML5,网站会变得更快、更炫。但是HTML5能为那些想要在网络上实现本地应用表现的人做什么可能不在此列了。

在享受了HTML5的新标签以及APIs之后,现在已经是时机来承认HTML5模式确实是有一些限制的。这些限制不但会让我们对HTML5的幻梦破灭,还有可能让我们在某些场合不再使用HTML5。

事实上是,尽管HTML5确实有很强大的功能,但它并不能解决所有问题。它的一些附加功能是非常强大的,能让Web apps成为native app的强有力的对手,但是安全问题、本地数据存储的限制、同步问题以及政治问题都会让我们减小对它的期望。毕竟,任何技术都是有其限制的。

下面是Web开发者需要接受的一些关于HTML5的事实。

事实1:安全是一场噩梦

客户端计算最根本的问题是用户最终拥有了对机器上运行的代码的控制权。在Web apps中,当浏览器拥有一个很强大的调试工具的时候,这种控制权比以往更容易被滥用。

当在浏览器中集成了一个JavaScript调试器比如Firebug,任何对Facebook、Google以及其他网站感兴趣的人都可以插入断点来查看代码。这对于了解“网站是如何运行的”是非常有利的,但对于安全问题来说却是一场噩梦。

想象有个变量的值是你想要改变的,Firebug或者其他的浏览器调试器可以让你很容易地将数据改成你想要的任何数据。你想要通过改变你的地理位置来捉弄一下你的朋友吗?那么你可以修改浏览器中的进度和维度变量,让浏览器“处于”世界上的任何位置。所有你的Web应用的neat features都可以被修改,浏览器使得这样的修改比在本地应用中更为容易。

对于引发的安全问题,也是有些限制的。一些JavaScript工具比如Google Web Toolkit和标准的编译器一样复杂,它们的输出是非常令人费解的。但是一些工具比如JavaScript Deminifier能解决这个问题。

威胁当然也跟应用性质有关。一个人通过改变浏览器上显示的经纬度来和朋友开玩笑说在环游世界的途中是一回事,而获得其他人的权限又是另外一回事了,这会带来威胁。一旦涉及到金钱,情况会更糟糕。所有这些都意味着基于客户端的HTML5是不能用来处理敏感数据的,每个人都应该对自己的能力加以警醒。

事实2:本地数据存储是有限制的

浏览器中隐藏的本地数据库让Web应用更容易在电脑上缓存数据。对任何一个在浏览器中享受这种台式机体验的人来说,这些数据库可以节省带宽,提升性能。然而它们肯定比不上本地应用的数据的强大功能。

HTML5的数据存储能力毫无疑问是很重要的功能,但是你仍然不能将存储的数据迁移到另外一台机器上,或是制作副本、备份、用另外一个应用打开。所有这些数据都是隐藏在浏览器之下的。

某种程度上说,这是最糟糕的一种情况。因为你要承担存储这些数据库的所有责任而不能对它有任何控制。

一些最新的浏览器可以让你看到在你的机器上创建了哪些数据库,但这些信息是有限的。Safari甚至可以让你能够删除数据库,但是你不能浏览这些信息或是将它们迁移到另外一台机器上,这些文件在设计之初就没有让它能够很容易迁移,尽管你可以做到这一点,如果你知道到哪里找这些文件的话。

你同样不能深入到文件中看到底存储了什么。当然,一个程序员可以看懂这些文件,但前提是他们研究清楚了文件格式并且做一些hacking。这些文件不像表单或者文本可以很容易地在任何编辑器中打开,使得它们不像本地应用那样容易被人们读懂。

事实3:本地数据可以被操纵

用户可能并不拥有对数据的控制权,但是网站同样也被限制不能处理用户数据。用户换浏览器了?用户换机器了?很多Web开发者对此都无能为力。因为同步问题,他们不能让用户创建更多数据。

Web开发者也需要担心本地数据库的安全。尽管没有工具可以让用户很容易修改本地数据并升级权限,但服务器同样也没有能力去阻止用户做到。所有JavaScript代码漏洞同样会影响数据库。它们门户大开,等着有人写一个Greasemonkey脚本或一些本地代码去更改数据。

事实4:离线数据对同步是一场噩梦

HTML5的本地数据存储极大提升了离线使用Web应用的能力。唯一的问题是数据同步。

如果一个Web应用连接到网络上,它可以持续地将数据存储到云中去。而当应用离线时,应用中发生的数据就不能存储到云中。如果用户换了浏览器或者使用了不同的机器,就会出现副本,这时同步就会成为一个大问题。更糟糕的是,时钟本身就可能是不同步的,使得发现最新被保存的数据是不现实的。

当然,这对本地应用来说也一直都是一个问题,但是在本地应用中,为同步负责的是用户,他可以通过查看文件名并改变日期来进行同步。但是因为HTML5并没有给用户对隐藏在浏览器之下的数据库的控制权,开发者必须提供用户界面让用户通过这个界面来管理同步问题。

这并非是一个完全棘手的问题。开发人员可以通过使用版本控制系统来处理这个问题,而现今的版本控制系统在处理这些问题上已经变得越发复杂了。但拥有这项技术并不意味着这是一个很容易使用的解决方案。合并不同GIT库是件很费时间的事情。HTML5开发者们需要先处理好这些问题,才能管理HTML5 Web应用的同步。

事实5:云端什么都没有向你承诺

如果因为HTML5将数据存储在云端而带来的所有结构性的问题来责备HTML5,实际上不是件很公平的事情,但云端是一个必须的部分,因为云省去了安装软件和备份数据的麻烦。

由于HTML5本地数据存储的限制,大量Web应用存储仍然要保留在服务器端,但这可能是灾难性的。就在最近Facebook决定不再使用一个基于Linux的插件来上传照片,结果,这个插件被移除了,同样被移除的还有通过这个插件上传的照片

这样的例子比较少见,但是因为各种原因,它们正变得越来越多。你能确保那个可爱地免费提供他们一切HTML5应用的新兴公司在几年后甚至几个月后还存在吗?你只能自求多福。

情况还更糟糕。正如很多Web应用所明确说明的那样,这些数据并不是你的,在大数情形下,你不能诉诸法律来恢复数据。有些更离谱的服务条款甚至说数据可以“没有任何原因”就被删除。

HTML5不仅没有避免这个问题,它的结构实际上是保证了任何由你的浏览器缓存的数据都会存储在云端,但这些数据是脱离了你的控制的。HTML5被炒作说这是它的一个优势特性,但这实际上却很容易造成不利影响。

事实6:强制升级并非是每个人都想要的

有个故事,或许是杜撰的,说一个人使用Gmail账户和酒吧里认识的人保持着随意的联系。当Google+出现以后,所有的历史记录都出现了,因为Google+自动连上了那些旧的地址。每天,这些旧名字和旧面孔都会出现询问是否要加入到圈子中去。

当Web应用公司需要升级的时候,他们会将所有人一次性升级。尽管这据说是为了让用户不再受升级安装文件之苦,但对于那些不想使用新特性的人来说,这确实是一场噩梦。这不像上面是一个关于人们隐私的问题。新软件可能因为新旧软件包之间的依赖关系而经常崩溃。

事实7:Web Workers并不会处理优先级

Web Workers(译者注:一种新的 JavaScript 编程模型)是HTML5的一个非常耐人寻味的特性。与其去使用JavaScript传统的wait、delay和pause命令,现在Web开发者可以拆分他们的命令并且整合到Web Workers的CPU hogs中。换句话说,HTML5 Web开发者可以让浏览器表现得像操作系统一样。

但问题在于,Web Workers并没有复制操作系统的所有特性。尽管它提供了一种方式来负载分支并分离,但是却没有方法来管理负载或是设置优先级。API只是让消息传入或者传出Worker对象。这就是它做的一切了,剩下的都交给浏览器了。

丰富的应用比如code crackers会潜入流行网站的后台吗?用户被交给会周期性被窃取的网站了吗?病毒已经附在一切有用的软件上了,那么攻破网站就只是时间问题了。而用户面对这一切能做的很少,因为他们没有办法去监测或者跟踪Worker objects做了什么。电脑被重定向到指定网页的时候只会越来越慢。

事实8:格式不兼容比比皆是

HTML5引入了<audio>和<video> 标签,第一眼看上去,它们和图像标签一样好用。只要在其中加入一个URL,浏览器就会引入数据流。然而,如果它真有这么简单的话,为什么我浪费了两个星期来让所有主要的浏览器可以播放基本的音频文件呢?

个别浏览器构建者只实现了部分而不是全部的音频视频格式确实不是HTML5委员会的错。大家都是人,都想要争夺统治权。往往在一个浏览器上工作正常的文件到了另外一个浏览器上却不能工作了。开发者要如何测试这一点呢?API开发者非常聪明,他们加入了canPlayType函数,但这个函数也不是所有浏览器都支持的。

事实9:各浏览器的实现是独立的

HTML5田园诗般的愿景是一回事,其蹩脚实现的现实是另一回事。诚然,程序员正在尽他们最大努力来实现架构师的梦想,但就是有一些标签和对象无法正常工作。

例如,有很多理由去喜欢HTML5的地理定位API。它提供了对隐私的一定程度的包含,对精确度也有控制。要是它能一直一贯地工作该有多好——有的浏览器就会总是超时,这个浏览器还是不太聪明,因为它应该知道台式机上是没有GPS芯片的。

最后,人们会去抱怨浏览器没有完全实现HTML5的特性,而不是去责备API本身的结构问题。这一事实凸显了Web开发者在开发基于HTML5的Web应用时所面临的挑战。

事实10:硬件idiosyncracies带来新的挑战

抱怨某些浏览器构建者超出了职责要求而提供更好的性能表现似乎也不公平,但这并非是恩将仇报。一个法拉利拥有者在绕过了一个灯杆以后,他就会发现有时候额外的动力并非总是好事。

Microsoft通过将IE和低端硬件驱动整合而提升了IE浏览器中画布对象(Canvas object)的性能。它甚至做了一些游戏比如pirateslovedaisies.com来显示其性能。

但现在程序员们需要注意这些附加功能是否能够实现,并且这些代码的运行速度也是无法保证的。

例如,pirateslovedaisies.com的游戏设计者设计了一个开关来开启或者关闭IE支持的特性。但是,有没有一个API来告诉你这些特性是什么呢?没有。最简单的方式是通过浏览器名字来进行测试并估算帧速率。很多游戏开发者都有多年经验来了解可用硬件的范围,唯一的解决方法就是禁止创新,但这将是Web开发者又要解决的一个新的问题。

事实11:竞争一直都存在

有个叫Ian Hickson的人,是HTML5标准的主要起草者,也是“生命的最高独裁者(the Supreme Dictator for Life)”。我想他们这是在开玩笑,因为这样的头衔实在太不匹配了。标准的编写者只是提出建议,浏览器公司的编码天才们才是最终做出决定的人。他们可以选择实现或者不实现某个特性,然后Web开发者就要去测试结果是否稳定。几年以后,标准就会根据与实现程度的匹配情况做出改变。

很多JavaScript开发者将兼容性问题都留给了开发代码库的人,比如jQuery。这些层让我们不必去了解不同浏览器之间的差别。但是,这些代码在将来是否足够健壮?只有时间才会知道。

这个议题凸显了这个领域中最根本的问题。我们想要自由、创造性以及因为浏览器间的激烈竞争而产生的丰富特性。创新的脚步非常快,但是因为浏览器开发者都争相添加新的特性以赢得先机,使得各个浏览器之间有更多的不同。

但我们希望能有一个统一的指挥者这样就能获得稳定性。但是,对于独裁和自治间的争斗,从来都没有一个理想的解决方式。

英文原文:11 hard truths about HTML5
7
4
评论 共 8 条 请登录后发表评论
8 楼 gazeldx 2012-01-04 09:24
你可以反对他,但你就是无法忽视它。
一个事物发展到如此有争议,就很有前途了。为html5鼓掌!
7 楼 沙舟狼客 2012-01-04 08:50
富客户端的发展跟c/s的区别会越来越小!
6 楼 cucumber_pain 2012-01-04 08:41
把浏览器当操作系统来用,相当不现实,把数据交给云,你能够淡定么
5 楼 grandboy 2012-01-02 18:01
有竞争也可以独立发展,各自有各自的问题,没有完美的技术,在技术实现时扬长避短就可以。
4 楼 chloerei 2012-01-01 18:16
HTML5 就是 HTML,拿来和本地 APP 竞争是不对的。
3 楼 kkvsyy 2011-12-31 15:23
你的眼光非常之短浅
2 楼 whiletrue 2011-12-31 14:25
我觉得5跟6跟html5没有关系啊
还觉得作者有偏见,.
html5觉得更像是理想对现实的妥协,如果某个工具能铺开到全世界,那它就会是载体.现实就是:这个载体是浏览器,浏览器上只能跑有设计缺陷的js(flash在移动市场认输了,觉得adobe很可怜,被巨头夹击了,当然跟自身的弱点也有有关系),所以hmlt5一定会是历史的必然.巨头们正在拼命推广呢.

如果有一天qq铺满地球,或者windows一统天下,这也载体也许就不是浏览器了.
1 楼 hantsy 2011-12-31 12:36
最不能接受的是这个标准要等 10年之久才能 GA。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 关于HTML5特性的一些限制与讨论

    InfoWorld网站最近发布了一篇文章《关于HTML5的11个让人难以接受的事实》,作者PeterWayner指出:尽管HTML5确实有很强大的功能,但它并不能解决所有问题,一些功能是非常强大的,能让Web应用成为原生应用的强有力...

  • 关于HTML5的11个让人难以接受的事实

    和每一个阅读技术资讯的人所知道的一样,没有任何一样东西能像HTML5对互联网造成更多改变。在代码中加入一些HTML5,网站会变得更快更炫。但是HTML5能为那些想要要网络上实现本地应用表现的人做什么可能不在此列了。 ...

  • HTML5特性的探讨

    InfoWorld网站最近发布了一篇文章《关于HTML5的11个让人难以接受的事实》,作者PeterWayner指出:尽管HTML5确实有很强大的功能,但它并不能解决所有问题,一些功能是非常强大的,能让Web应用成为原生应用的强有力...

  • HTML5设计原理

    Jeremy Keith在 Fronteers 2010 上的主题演讲 转载自...主要分两个方面:一方面,当然了,就是HTML5。我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Go

  • HTML & Web教程

    ​ 一个网站由很多网页组成,可以将多个网页放在一个文件夹中,这个文件夹还可以嵌套其它子文件夹,最终形成一个树状结构,如下图所示: ​ 如果我们给顶级目录 program 绑定一个域名 www.domain.com,那么用户就...

  • HTML5非成熟体

     有人想起了HTML5,将其视为荒漠中的甘露——即使它目前还未能实现完整的标准化。  一个非成熟体。  这是移动互联版《上帝也疯狂》的续集,上次的主角是App,现在则是HTML5:一个将近10年前就被提出来用于取代...

  • HTML5最终取代APP?移动互联网现“左右互搏”

     这是移动互联版《上帝也疯狂》的续集,上次的主角是App,现在则是HTML5:一个将近十年前就被提出来的用于取代HTML4.01和XTHML1.0,但在之后就步履蹒跚,直到近年重新又成为科技界焦点的Web标准版本。  藉此...

  • HTML5至少需要5年才能普及 现处于炒作高峰期

    自1995年以来,研究公司Gartner每年都会发布一份用于总结不同的技术到底处于哪个阶段的跟踪报告(总分为5个阶段,详情点击《真相:NFC技术去年处于炒作顶峰 正在走下坡路》)。在今年的Hype Cycle报告中,这家公司...

  • HTML5设计原理(转载)

    主要分两个方面:一方面,当然了,就是HTML5。我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚至可以看规范。 实际上,确实有人会谈到规范的内容。...

  • HTML5手机的春天, Web Apps来袭

    如同历史上任何一次互联网基础标准的变化都会在随后几年中带来应用创新的大爆发一样,当HTML5在2011年逐渐被主流厂商所接受之后,围绕Web Apps领域的创新风暴正山雨欲来。 2012年1月12日,老牌传媒集团《金融时报...

  • onnxruntime-1.16.0-cp311-cp311-win_amd64.whl

    onnxruntime-1.16.0-cp311-cp311-win_amd64.whl

  • 基于springboot的流浪猫狗救助系统源码数据库文档.zip

    基于springboot的流浪猫狗救助系统源码数据库文档.zip

  • springboot美容院管理系统(代码+数据库+LW)

    摘  要 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级,也为了更好的维护美容院信息,美容院管理系统的开发运用就显得很有必要。并且通过开发美容院管理系统,不仅可以让所学的SpringBoot框架得到实际运用,也可以掌握MySQL的使用方法,对自身编程能力也有一个检验和提升的过程。尤其是通过实践,可以对系统的开发流程加深印象,无论是前期的分析与设计,还是后期的编码测试等环节,都可以有一个深刻的了解。 美容院管理系统根据调研,确定其实现的功能主要包括美容用品管理,美容项目管理,美容部位管理,销量信息管理,订单管理,美容项目预约信息管理等功能。 借助于美容院管理系统这样的工具,让信息系统化,流程化,规范化是最终的发展结果,让其遵循实际操作流程的情况下,对美容院信息实施规范化处理,让美容院信息通过电子的方式进行保存,无论是管理人员检索美容院信息,维护美容院信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。 关键字:美容院管理系统,SpringBoot框架,MySQL

  • numpy-1.21.1-cp39-cp39-linux_armv7l.whl

    numpy-1.21.1-cp39-cp39-linux_armv7l.whl

  • 基于JavaWeb+springboot的宠物救助及领养平台源码数据库文档.zip

    基于JavaWeb+springboot的宠物救助及领养平台源码数据库文档.zip

  • 基于springboot员工在线餐饮管理系统源码数据库文档.zip

    基于springboot员工在线餐饮管理系统源码数据库文档.zip

  • matplotlib-3.5.3-cp37-cp37m-linux_armv7l.whl

    matplotlib-3.5.3-cp37-cp37m-linux_armv7l.whl

  • 基于springboot+web的留守儿童网站源码数据库文档.zip

    基于springboot+web的留守儿童网站源码数据库文档.zip

  • STM32神舟III号例程源码SysTick系统滴答(神舟III号-库函数版)

    STM32神舟III号例程源码SysTick系统滴答(神舟III号-库函数版)提取方式是百度网盘分享地址

Global site tag (gtag.js) - Google Analytics