还记得曾几何时,很多朋友出于安全考虑,选择在浏览器上禁用JavaScript。今天,这种方法已经变得荒谬了——原因很简单,JavaScript已经统治了整个网络世界。在这个具有平台多样性的新计算时代,我们需要可以在任何设备浏览器中运行的应用程序。原生应用程序可能运行得更快,调用更多JavaScript无法触及的平台特定功能,但不可否认的是,云时代已经到来,我们身处其中。鉴于此,我们是继续坚持为特定平台编写桌面或移动应用程序,还是拓宽思路,使用JavaScript开发一些任何平台都可以接受的应用程序解决方案?当然,这个问题的确切答案取决于应用程序的实际性质。JavaScript有几个限制——出于安全原因,JavaScript无法在客户端读取或写入文件。而“真正的”程序员往往会不断强调这些缺点。然而,JQuery和其他各种框架的出现使JavaScript获得了构建复杂应用程序的能力;另外,JSON(JavaScriptObjectNotation)可以完全替代XML的数据传输功能。更不用说Node.js,它刚刚赢得了上一轮InfoWorldBossie的评选,帮助JavaScript强势迈向了服务器端。JavaScript能走多远?巧合的是,InfoWorld新技术论坛上同时出现了两篇文章,都聚焦于JavaScript的潜在发展空间:一篇来自AlphaSoftware的VisiCalc联合创始人DanBricklin,另一篇由Adobe的DivyaManian和Presented蒂博因伯特。在《JavaScript在移动平台上击败原生代码》中,Bricklin回应了JavaScript执行速度比原生代码慢的假设:现实是原生代码可以执行的所有数学运算都可以在JavaScript中成功实现(相关的耗时计算也不例外)。上述观点忽略了一个客观现实,即基于JavaScript的应用程序在各种类型的执行和计算任务上往往表现得与原生代码一样好或更好。为什么?Bricklin解释说,因为聪明的程序员多年来一直在调整浏览器以优化执行此类任务的速度。此外,浏览器中的高级执行能力也迎来了显着提升,其中最具代表性的就是3D渲染功能。站在Adob??e的立场上,Manian和Imbert预测了JavaScript的发展前景,并提到了Mozilla创建的研究项目asm.js——这个项目“定义了一个JavaScript的子集,可以由虚拟机生成并进行高度优化”。更令人兴奋的是,他们还探索了RiverTrail,这是英特尔为JavaScript开发创建的一组并行编程模型和API。作者还提到Adob??e正在标准化新的HTML5功能,包括区域、混合模式和形状。通篇我们发现Manian和Imbert相当于给了Flash和ActionScript两套行将就木的技术方案。JavaScript生态系统JavaScript的胜利似乎给业界带来了灵感,现在每周都有一个新的框架推向世界,其他与JavaScript开发相关的工具也层出不穷:ANGULARJS,一种将静态HTML页面转换为JavaScript的工具应用程序工具集,同时支持MVC架构。BACKBONE.JS,一个JavaScript库,允许开发人员向应用程序添加结构并以模型的形式表示数据。BOOTSTRAP,一个负责webappliances的框架,旨在与JQuery交互。ENYO是一个面向对象的JavaScript框架,可用于创建HTML5/CSS应用程序。D3,一个JavaScript库,可以在没有插件配合的情况下将矢量图形推送到浏览器。EMBER.JS,一个有前途的JavaScript框架,用于开发MVC应用程序开发并配备了丰富的功能。EMSCRIPTEN,一种将C++转换为asm.js(由Mozilla创建的高度优化的JavaScript子集)的编译器解决方案。JavaScript拥有庞大的支持工具社区——这些只是一些最佳解决方案。其中大部分都是开源项目,这些工具的不断扩展也成为了JavaScript强劲发展势头的重要推动力。但是……JavaScript本身呢?然而,经验丰富的开发人员对此有抵触情绪。InfoWorld的AndyOliver是这样描述他的保留意见的:JavaScript一直是可供选择的开发路径之一——我们真正需要做的就是决定它是否适合我们的需求……我与之交谈的经理们喜欢JavaScript,因为它允许开发人员使用jQuery、Node.js甚至利用MongoDB来处理一些数据库事务。但是我身边的开发人员显然不同意,他们讨厌日以继夜的做JavaScript开发……开发项目负责人也很抗拒,因为JavaScript牺牲了很多有价值的数据库功能。换句话说,作为一种既易学又受限的开发解决方案,JavaScript给编程工作带来了一个民主化的过程——一旦开发者的工作目标模糊,最终的开发结果也会变得一团糟。然而,越来越多优秀的JavaScript程序员逐渐成长起来,他们中的很多人在asm.js或IntelRiverTrail并行编程模型的支持下,都能创造出优秀的工作成果。毫无疑问,他们并没有因为缺乏相关的工作工具而受到困扰。然而,最好的并不一定能赢得最后的胜利。对于x86指令集来说,笑死的也可能是唯一有能力活到死的。我不知道JavaScript如何扩展自身以满足开发人员的工作需求,例如构建具有与MicrosoftOffice相当的整体功能丰富性的复杂应用程序。但考虑到通过浏览器窗口看世界的尴尬方式,至少我不会把我的底线花在这样的项目上。
