JavaScript正凭借新型工具与功能提升以极度夸张的速度吞噬整个世界。我们是否应该接受这一无法逆转的趋势?
还记得那些旧日往事吗?很多用户因为担心安全问题而在浏览器中禁用JavaScript。如今这样的担忧已经显得相当可笑——JavaScript已经成为统治网络世界的绝对王者。
在以平台多样性为标志的计算时代之下,我们需要能够运行在任何设备浏览器当中的应用程序。原生应用的运行速度也许更快、对于特定平台的功能利用效果也非JavaScript可及,但云时代的来临显著缩小了二者之间的差距。现在摆在开发人员面前的道路有两条:针对桌面系统或者移动平台开发只能运行在单一环境下的应用,或者编写能为任何用户所使用的JavaScript应用。
当然,以上问题的具体答案取决于应用程序的具体特性。JavaScript拥有明显的局限性——举例来说,出于安全原因,JavaScript无法读取或者写入客户端中的文件。而且“真正”的程序员更倾向于利用自身技术水平在应用中使用大量快捷的开发方式。不过JQuery及其它一系列框架的出现让JavaScript具备了开发高复杂性应用程序的能力,而JSON(即JavaScript 对象表示法)能够实现除XML之外的全部数据传输需求。更不用提Node.js为JavaScript带来的强大服务器端事务处理能力。
JavaScript还能走多远?
巧合的是,InfoWorld网站新技术论坛上的两篇最新博文都在讨论JavaScript的未来发展潜力:一篇由VisiCalc联合创始人兼技术老鸟Dan Bricklin所撰写,另一篇则由Adobe公司的Divya Manian与Thibault Imbert撰写。
在题为《JavaScript在移动平台击败原生代码》的文章中,Bricklin针对JavaScript运行速度低于原生代码的假设提出质疑:
尽管总体来说,原生代码在数学计算方面的执行速度确实要远远胜过JavaScript,但这种观点忽略了众多应用程序之间彼此独立的运行状态。在很多运行过程中,JavaScript应用程序的性能表现往往能够赞同甚至优于原生代码。
为什么会这样?根据Bricklin的解释,这是因为众多杰出的程序员已经花了数年时间对浏览器进行调整,从而实现了运行过程的极端优化。另外,浏览器中已经逐步出现多种先进的运行机制进展,例如3D渲染。
作为Adobe公司的代言者,Manian与Imbert分析了JavaScript的未来前景并提到Mozilla公司的研究项目asm.js。该项目“定义了一套JavaScript子集,通过编译器生成并利用JavaScript虚拟机实现高度优化。”更令人兴奋的是,他们还探讨了RiverTrail这款由英特尔负责开发的并行编程模型及API——当然也是专为JavaScript所打造。两位作者同时谈到,Adobe公司建议为HTML 5功能引入新的标准化机制,其中包括Regions、Blend Modes以及Shapes等。
通过或明或暗的各种迹象,我们几乎可以断定,Manian与Imbert通过自己的博文给Flash及ActionScript的坟墓又添了一把土。
JavaScript生态系统
JavaScript的胜利宣言绝非凭空想象——几乎每周都会出现新的JavaScript框架以及与编码相关的其它工具。除了jQuery与Node.js,今年InfoWorld网站评选的最佳开源软件奖中出现了七位JavaScript赢家的身影,它们分别是:
◆ AngularJS,一套用于将静态HTML页面转化为JavaScript应用程序的工具集,同时提供对MVC架构的支持。
◆ Backbone.js,一套JavaScript库,帮助开发人员将结构作为模型添加到应用程序及表示数据当中。
◆ Bootstrap,一款响应式Web设计框架,旨在与jQuery相结合。
◆ Enyo,一款面向对象的JavaScript框架,能够被用于创建HTMl 5/CSS应用。
◆ D3,一套JavaScript库,能够在无需涉及插件的前提下在浏览器内实现矢量图形处理。
◆ Ember.js,一款极具发展前景的JavaScript框架,用于开发具备丰富功能的MVC应用程序。
◆ Emscripten,一款将C++代码转化为asm.js形式的编译器,属于由Mozilla公司推出的经过高度优化的JavaScript子集。
上述阵容可谓极度强大——而且这还只是JavaScript麾下力量的冰山一角。这些工具仍处于迅猛的发展态势之中,且大部分属于开源项目,它们的存在将继续推动JavaScript的未来改进。
但是……JavaScript能行吗??
然而,经验丰富的开发人员对JavaScript仍然有些反感。InfoWorld网站的Andy Oliver就这样阐明了自己的态度:
让JavaScript实现全面普及并非不可能——我们只需要帮自己判断,这到底是不是个好主意……我的顶头上司就很喜欢这种方式,组织起一大群能够利用jQuery以及Node.js的开发人员——他们最好还能简单用用MongoDB等轻量级数据库。但我身边的开发人员显然很抵触这种成天跟JavaScript打交道的工作习惯……项目管理者也不希望把自己的宝贵数据库交到一帮JavaScript开发者的手中。
换句话来说,JavaScript是一种既简单易学、又有些拙手笨脚的编程机制——这将导致编写代码的开发人员陷入混乱、甚至搞不清自己到底在做些什么。
不过杰出JavaScript程序员的队伍正在不断扩张,其中不少人都能在asm.js或者英特尔RiverTrail并行编程模式的辅助下实现诸多先进功能。值得一提的是,他们绝对不会受到工具缺乏这类难题的困扰。
当然,市场上也存在着JavaScript的替代方案,其中最具代表性的就是谷歌Dart——据说该语言将在不久的将来推出1.0正式版本。不过Dart代码需要经过编译才能转化为JavaScript,从而运行在大部分浏览器环境当中。惟一的例外就是谷歌推出的Chromium,它提供Dart虚拟机、因而能够直接与这种新语言相对接。
最好的并不一定总能取得胜利。与x86指令集类似,有时候赢家往往是能够坚持到最后的方案。我不知道JavaScript如何通过自身扩展来迎合开发人员创建应用程序的需求(例如像微软Office这样积淀丰厚的应用),但奇怪的是,通过浏览器窗口实现全平台运行似乎成了未来的必然趋势。我个人可不想刻意跟这种趋势进行对抗。
相关课程推荐:
全面深入JavaScript OOP面向对象编程(史上最全面通俗易懂)
http://www.ibeifeng.com/goods-432.html