在上一篇论述,互联网时代Windows的未来,将是浏览器唱主角的未来。这是十多年前就被提出的观点,如今已被越来越多的人接受了。
通过本文,希望带来最新的视野,和大家一起探讨浏览器、Html5、Web的未来。
这些日子,Firefox总提示升级到5.0,浪费时间不说,一升级完插件这个不能用那个不能。你8.0都Beta2了,来来回回反反复复优化那点内存啦、启动和脚本执行速度这些细节,要是新版本能涌现一丝新思维也好,不然大家很抗拒这样被折腾。如此做下去就算升级到800.0又如何?能否接过当今操作系统担当的重任呢?我认为还不行,而且路还很遥远。未来的浏览器不是这么搞的。
当今浏览器发展的局限
现在的浏览器是怎么个做出来的呢?目前所有产品级的浏览器,虽然外观、性能各异,据说都是用C++写成,都由如HTML解析、CSS解析、JavaScript引擎、网络通信、数据管理、页面呈现,等等许多模块高度集成的复杂软件。其复杂度我认为堪比操作系统,代码能看得懂都很难,更别说参与浏览器内核开发了,那绝对是高手。浏览器的开发也基本上被所属公司一手包办,
题外话,中国做浏览器的厂商只会做壳,以前只做IE的壳,现在进步了一点儿,也做Chrome的。中国足球虽然水平可怜,至少每次都在尝试,而中国的厂商,连做自主产权的浏览器内核的雄心都没有,希望中国未来能发展出自己的浏览器内核。
当然,现在的浏览器不像早期是铁板一块,基本都可以进行扩展和定制。最典型的是Firefox的overlay式扩展,Chrome扩展也不错。通过扩展,可以辅助阅读,有翻译文字,过滤广告,调试页面,标签管理,批量下载,主题更换等等,形形色色,包罗万象,就不具体举例了。
看上去不错吧,可是如果以为扩展无所不能的话,那就大错特错了。由于受到浏览器扩展机制支持扩展的灵活性和力度所限,更强大给力的扩展无法为我们所用。
很多人在想,现在这样不是挺好吗?那是因为浏览器一般还只被看作呈现Html页面的软件,扩展只要围绕着辅助和增强页浏览功能就可以了。绝大多数人这么想,主流浏览器厂商也这么想。
即使现在的插件可以满足你的功能需要,也有一些不可忽视的问题,主要有:
一、扩展开发和使用的兼容性。
目前支持扩展的浏览器IE/Firefox/Chrome,扩展机制有天壤之别,功能相同的扩展,必须多次开发,而且实现逻辑的代码没有多少可以复用的。由于浏览器多极化格局将长期持续,对开发者和用户这都不件好事。在Firefox和IE上,还有比较严重的版本兼容性问题。对比一下,无论是在Windows还是Linux上,无论用C/C++/Java/.NET,都有办法让程序做很少的修改就能在另一个平台上运行。这个问题说明现在的浏览器扩展,还都是些小程序,十足的配角。虽然拍戏不能没有配角,这些做导演的浏览器厂商,本来竞争得你死我活,压根儿没想过要坐下来谈建立一个统一的扩展标准,以及怎么互相兼容。
二、扩展的安全性,如对用户隐私的保护,从机制上杜绝恶意扩展。
举例来说,许多扩展要求能够访问网络,Chrome是安全机制做得比较好的,采用了沙箱机制。一个扩展安装后会提示你它需要哪些权限,让用户确认。然而控制的粒度太粗了。像淘宝推出过一个叫折扣实时查询的扩展,会要求可以访问浏览历史记录,这个就相当困扰,没法限制它只访问taobao的浏览历史。
如果一个扩展中有恶意代码,偷偷把你的浏览历史,甚至账户密码发送到某个站点,现在的浏览器表示“我管不着”。而Firefox没有对安全上做什么控制,至于IE的BHO扩展机制,很久前就是木马和流氓软件的温床。尽管Firefox和Chrome都有一套扩展审核机制,然而这样手工鉴别,既浪费开发方和官方的时间,又容易造成漏网之鱼。
三、扩展之间无法相互合作,只能各自为战,不少扩展间还有功能冲突的问题。
比如Firefox上有Image Download、PDF Download、Video Download这样不同类别的下载扩展,其实完全可以共用相同的批量下载功能。在页面里,我们也没法通过html或js访问扩展的功能。扩展安装多了,还要小心冲突。比如火狐魔镜的鼠标手势和标签管理功能,同多个插件有冲突。
按党的哲学,要从思想层次上认识这些问题。如今的IE/Firefox/Chrome/Safari/Opera,都还是以“浏览”器的思维,而不是以平台的思维做浏览器。随着设备、操作系统、应用开发平台的多样化趋势的发展,大家对一种能放之四海皆准的应用开发及运行平台,望眼欲穿。本来Html5是不二的解决方案(Html5会成为移动应用的天敌吗),可惜由于浏览器的局限,目前还是一厢情愿的美丽神话。
尽管谷歌早就推出了ChromeOS,Mozilla也有类似计划(Mozilla宣布研发移动操作系统 基于网页运行),没有革命性的理念,想实现一个真正的Web应用平台只能是水中捞月,缘木求鱼。欲开发大型或关键应用,如游戏和在线支付应用时,可望不可及。
未来需要什么样的浏览器
如果要把浏览器打造成一个平台一般“超级浏览器”,扩展和Web应用都亟待更给力的支持。要把扩展打造成7Zip、Macfee、搜狗输入法一般强势的工具软件,要使Web应用成为PhotoShop、暴风影音、Visual Studio一般犀利的专业软件。
我们要让扩展可以操作摄像头等硬件设备,可以访问操作系统API,充分运用GPU加速等一切手段,提高Web应用的体验和安全性。
我们要为扩展机制提供完善的安全性控制。浏览器要能对扩展的敏感操作进行甄别,对浏览历史、用户数据、网络访问的控制规则,都要精确到域名甚至页面级。Windows和Linux做不到的,未来浏览器也要做到,使我们可以放心地进行在线支付,轻松地管理各种账户。
我们要为扩展提供统一、向后兼容的开发模式,既能轻松上手,又能为高级开发者提供充分施展的空间。要让浏览器与扩展如大脑和器官一般协调合作,成为一个有血有肉的人。
我们要让扩展有能力扩展甚至替换浏览器的所有模块,重新定义任何功能实现。我们可以定义新的CSS规则,新的标签,新的呈现方式,新的网络协议,新的Web开发语言引擎,这些所有的一切都可以做到。
不管是Flex、Silverlight还是JavaFX,它们再也无需浪费口舌争论孰优孰劣,大家可以利用标签和呈现的扩展,在同一水平线上展开竞争,还要证明它们有些事可以比Html5做得更好。
无论是静态语言如Java/C++/.Net,还是动态语言如JavaScript/Python/Lua,都有机会凭自己的优势在Web应用开发上大放异彩。摆脱了操作系统的束缚,开发者将呼吸到自由的空气,无限的选择权将最大程度上解放开发者的生产力!偏灵活性要求的应用人们喜欢动态语言,高性能要求的应用静态语言唱主角。有利于编程语言之间借鉴彼此的思想,吸收彼此的先进特性。
相信届时,那些充斥着论坛博客、徘徊在初学者心头的阴霾-无谓的语言之争,便会少得多了吧。编程语言会获得更快发展,优胜劣汰,甚至有可能催生新一代语言的革命。
十年过去了,互联网时代依旧在汹涌奔流,前方隐隐有一座山脉在挡住去路。一个个要求变革的声音逐渐汇集起来,终将成为时代的主流,带我们开辟峡谷,冲出群山,奔向我们憧憬已久的美好未来。
或许有人说,醒醒吧,别白日作梦了。好吧,我承认这是一个白日梦,是一些人做了很多年的白日梦。这些人中的佼佼者,已经开始行动了。来了解下他们搞的一个现在进行时的有趣项目吧,现在我可是很清醒的。
神秘的C3
这是微软Redmond研究院的一个研究项目。如果说微软中国研究院已经是汇集中国最顶尖的研究人才的话,那Redmond研究院就应该是全世界的顶尖人才的乐园,里面的人物不一定为我们熟知,可他们都是大师级人物,可能我们许多使用产品的技术正是他们创造的,如Windows Azure、Kinect等等。
大家有兴趣可以到Redmond研究院网站去看看,感受大师们的思想,把握未来的技术走向。这里是C3的链接。
C3是什么意思?我也没查到。叫C3还是C4不重要,反正什么都是个临时代号,重要的是它的概念:An Experimental, Extensible, Reconfigurable Platform for HTML-based Applications(一个可扩展、可重构的基于HTML应用程序的试验平台)。
C3正是前面提到多次的未来超级浏览器的雏形,它也认为自己是平台而非浏览器。C3是完全基于面向对象设计思想,浏览器的模块之间,通过类型安全的接口实现了松耦合,每个模块都可以被扩展、被替换。C3完全用当前最高效的静态语言-C#开发,充分利用了.NET的安全机制和类库。
不仅如此,它的扩展也将用托管语言开发。有些经验的朋友马上会明白,浏览器将是一个宿主,寄宿了许多扩展程序,每个扩展都运行在一个独立的AppDomain中。 让扩展更开发更快,运行更安全、更高效,不至像Chrome出现同时运行着N个进程的情况,扩展扮演角色更是身价倍增。
再想想吧,当Facebook不再需要成千上万的服务器支持Fbml应用的解析,只要发布一个扩展。我们甚至可以把Asp.Net的控件、Web Form、Razor模板,完全放在客户端解析,这将是何等的革命性突破?
这样的平台,能不被应用开发者推崇吗?有木有潜力,统一各种智能终端上的开发和界面体验呢?
除了前面提到的许多想法似乎都可以在C3中得到实现外,更令我们鼓舞的是,.NET将大大降低浏览器的开发门槛,打破少数人的垄断。而且我们可以先入手相对容易的扩展的开发,再过渡到内核开发。
十年磨一剑,霜刃未曾试。今日把示君,谁有不平事?长期以来,很多C++程序员总是瞧不起.NET,把.NET程序员看作低人一等。面对新一代浏览器平台的需求,C++已经是心有余而力不足,经过长期的卧薪尝胆,我相信.NET实现出生的使命,为自己正名的那一天,已经为时不远了。
这也是微软为自己正名的机会,更是广大.Net程序员正名的机会。你,准备好了吗?