JavaScript的胜利

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

时间: 2024-10-09 23:36:59

JavaScript的胜利的相关文章

2015年的9大企业级技术发展趋势

原作者: Eric Knorr 原文链接:http://www.infoworld.com/article/2851469/cloud-computing/9-enterprise-tech-trends-for-2015-and-beyond.html 企业级技术正在急速发展,以下是2015年将会产生重要影响的9大趋势. 疯狂的事情在于,站在今天向前看,你会发现今年许多大热的技术在去年几乎闻所未闻.这些技术还会继续火热下去吗?我打赌会,变化的脚步比往常前进的更快了. 这些新鲜的事物满足了我不重

Javascript常用的设计模式详解

阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javascript中的策略模式 九:Javascript中理解发布--订阅模式 十:理解中介者模式 回到顶部 一:理解工厂模式 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式. 简单的工厂模式可以理解为解决多个相似的问题;这也是她的优点;比如如下代码: function CreateP

如何正确学习JavaScript

学习时长:6-8周学习前提:中学水平,无需编程经验 更新(2014-1-7) 在Reddit上创建了一个学习小组January 2014, “Learn JavaScript” Study Group on Reddit 目录 不要这样学习JavaScript 本课程资源 1-2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DOM,jQuery) JavaScript终极编辑器:WebStorm 第一个项目-动态问答应用 5-6周(正则表达式,Window对象,事件,jQue

重温Javascript(二)

对象 可以想象成散列表,键值对,值可以是数据或函数 创建对象的方式 1.工厂模式 1 function createPerson(name, age, job){ 2 var o = new Object(); 3 o.name = name; 4 o.age = age; 5 o.job = job; 6 o.sayName = function(){ 7 alert(this.name); 8 }; 9 return o; 10 } 11 var person1 = createPerson

JavaScript概述

1. 什么是JavaScript? JavaScript是一门脚本语言.但是我们的JavaScript既可以说他是一门脚本语言,又可以说他不是一门脚本语言.在ES5之前,JavaScript一直作为脚本语言存在的.但是到ES6,我们的JavaScript已经变成了一门通过编程语言. 脚本语言:所谓脚本语言,它不像我们的C语言,Java,C#能够独立运行,而是必须要和HTML配合着来使用. JavaScript和Java之间的关系: 首先要明确,JavaScript和Java没有半毛钱的关系. 事

JAVASCRIPT开发HTML5游戏--斗地主(网络对战PART4)

继之前用游戏引擎(青瓷引擎)做了斗地主单机版游戏之后,这里分享下使用socket.io来实现网络对战,代码可已放到github上,在此谈谈自己整个的开发思路吧. 客户端代码 服务端代码 (点击图片进入游戏体验) 前文链接: javascript开发HTML5游戏--斗地主(单机模式part1) javascript开发HTML5游戏--斗地主(单机模式part2) javascirpt开发HTML5游戏--斗地主(单机模式part3) 本文章为网络对战第一部分内容.主要内容如下: 简介 服务端项

《JavaScript高级程序设计 第三版》 前2章 Javascript简介与HTML 读书笔记

第一章:Javascript简介 1.JavaScript诞生于1995年,当时,它的主要目的是处理以前由服务器端语言(如Perl)负责的一些输入验证操作.现在,JavaScript是一种专为与网页交互而设计的脚本语言. 注:Netscape(网景)公司研发,Java是sun公司研发,原名为LiveScript,为了搭上媒体热炒的Java的顺风车,更名为JavaScript 2.微软推出JSript的和网景的JavaScript相竞争,最后微软胜利.ECMA指定了规定并重新命名为ECMAScri

javascript基础-猜拳游戏

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Javascript贪食蛇小游戏

试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇就立即毙命.和别的游戏不同,贪食蛇是一个悲剧性的游戏.许多电子游戏都是打通关到底,游戏操作者以胜利而告终.而贪食蛇的结局却是死亡.“贪食蛇”,要命的就在一个“贪”字上.所以,有时候真的需要及时收手,不要逼人太甚.如果没有余地,就算你的手再快,面临的结局也是——崩盘. HTML代码如下: <!DO