javascript的历史

理解如今的最好方法之一,就是了解历史,本节将全面介绍JavaScript的历史。了解这些内容,还有助于把握JavaScript在整个计算机编程体系和计算机工业中所处的位置,以及这门语言涉及的所有内容。javascript

JavaScript的诞生

JavaScript由于互联网而生,紧随着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。前端

1990年末,欧洲核能研究组织(CERN)科学家Tim Berners-Lee,在全世界最大的电脑网络——互联网的基础上,发明了万维网(World Wide Web),今后能够在网上浏览网页文件。最先的网页只能在操做系统的终端里浏览,也就是说只能使用命令行操做,网页都是在字符窗口中显示,这固然很是不方便。java

1992年末,美国国家超级电脑应用中心(NCSA)开始开发一个独立的浏览器,叫作Mosaic。这是人类历史上第一个浏览器,今后网页能够在图形界面的窗口浏览。python

1994年10月,NCSA的一个主要程序员Marc Andreessen联合风险投资家Jim Clark,成立了Mosaic通讯公司(Mosaic Communications),不久后更名为Netscape。这家公司的方向,就是在Mosaic的基础上,开发面向普通用户的新一代的浏览器Netscape Navigator。git

1994年12月,Navigator发布了1.0版,市场份额一举超过90%。程序员

Netscape公司很快发现,Navigator浏览器须要一种能够嵌入网页的脚本语言,用来控制浏览器行为。当时,网速很慢并且上网费很贵,有些操做不宜在服务器端完成。好比,若是用户忘记填写“用户名”,就点了“发送”按钮,到服务器再发现这一点就有点太晚了,最好能在用户发出数据以前,就告诉用户“请填写xx栏”。这就须要在网页中嵌入小程序,让浏览器检查每一栏是否都填写了。github

管理层对这种浏览器脚本语言的设想是:功能不须要太强,语法较为简单,容易学习和部署。那一年,正逢Java语言开始推向市场,Netscape公司决定,脚本语言的语法要接近Java,而且能够支持Java程序。这些设想直接排除了使用现存语言,好比perl、python和TCL。正则表达式

1995年,Netscape公司雇佣了程序员Brendan Eich开发这种网页脚本语言。Brendan Eich有很强的函数式编程背景,但愿以Scheme语言(函数式语言鼻祖LISP语言的一种方言)为蓝本,实现这种新语言。数据库

1995年5月,Brendan Eich只用了10天,就设计完成了这种语言的初版。它是一个大杂烩,语法有多个来源:npm

  • 基本语法:借鉴C语言和Java语言。
  • 数据结构:借鉴Java语言,包括将值分红原始值和对象两大类。
  • 函数的用法:借鉴Scheme语言和Awk语言,将函数看成第一等公民,并引入闭包。
  • 原型继承模型:借鉴Self语言(Smalltalk的一种变种)。
  • 正则表达式:借鉴Perl语言。
  • 字符串和数组处理:借鉴Python语言。

为了保持简单,这种脚本语言缺乏一些关键的功能,好比块级做用域、模块、子类型(subtyping)等等,可是能够利用现有功能找出解决办法。这种功能的不足,直接致使了后来JavaScript的一个显著特色:对于其余语言,你须要学习语言的各类功能,而对于JavaScript,你经常须要学习各类解决问题的模式。并且因为来源多样,从一开始就注定,JavaScript的编程风格是函数式编程和面向对象编程的一种混合体。

Netscape公司的这种浏览器脚本语言,最初名字叫作Mocha,1995年9月改成LiveScript。12月,Netscape公司与Sun公司(Java语言的发明者和全部者)达成协议,后者容许将这种语言叫作JavaScript。这样一来,Netscape公司能够借助Java语言的声势,而Sun公司则将本身的影响力扩展到了浏览器。

之因此起这个名字,并非由于JavaScript自己与Java语言有多么深的关系(事实上,二者关系并不深),而是由于Netscape公司已经决定,使用Java语言开发网络应用程序,JavaScript能够像胶水同样,将各个部分链接起来。固然,后来的历史是Java语言的浏览器插件(applet)失败了,JavaScript反而发扬光大。

JavaScript的发布和标准化

1995年12月4日,Netscape公司与Sun公司联合发布了JavaScript语言。值得一提的是,17天以后Ruby语言也发布了它的第一个版本。

1996年3月,Navigator 2.0浏览器正式内置了JavaScript脚本语言。

1996年8月,微软模仿JavaScript开发了一种相近的语言,取名为JScript(JavaScript是Netscape的注册商标,微软不能用),首先内置于IE 3.0。网景公司面临丧失浏览器脚本语言的主导权的局面。

1996年11月,网景公司决定将JavaScript提交给国际标准化组织ECMA,但愿JavaScript可以成为国际标准,以此抵抗微软。

1997年7月,ECMA组织发布262号标准文件(ECMA-262)的初版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。之因此不叫JavaScript,一方面是因为商标的关系,Java是Sun公司的商标,根据一份受权协议,只有Netscape公司能够合法地使用JavaScript这个名字,且JavaScript已经被Netscape公司注册为商标,另外一方面也是想体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。所以,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在平常场合,这两个词是能够互换的。

1998年6月,ECMAScript 2.0版发布。

1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准,获得了普遍支持。

ECMAScript和JavaScript的版本

2007年10月,ECMAScript 4.0版草案发布,对3.0版作了大幅升级,预计次年8月发布正式版本。草案发布后,因为4.0版的目标过于激进,各方对因而否经过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。

2008年7月,因为对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,停止ECMAScript 4.0的开发,将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其余激进的设想扩大范围,放入之后的版本,因为会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就更名为ECMAScript 5。

2009年12月,ECMAScript 5.0版正式发布。Harmony项目则一分为二,一些较为可行的设想定名为Javascript.next继续开发,后来演变成ECMAScript 6;一些不是很成熟的设想,则被视为JavaScript.next.next,在更远的未来再考虑推出。

2011年6月,ECMAscript 5.1版发布,而且成为ISO国际标准(ISO/IEC 16262:2011)。

2013年3月,ECMAScript 6草案冻结,再也不添加新功能。新的功能设想将被放到ECMAScript 7。

2013年12月,ECMAScript 6草案发布。而后是12个月的讨论期,听取各方反馈。

2014年12月,ECMAScript 6预计将发布正式版本。

TC39的整体考虑是,ECMAScript 5与ECMAScript 3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。当前,JavaScript.next指的是ECMAScript 6,当第六版发布之后,将指ECMAScript 7。 TC39预计,ECMAScript 5会在2013年的年中成为Javascript开发的主流标准,并在从此五年中一直保持这个位置。

虽然ECMAScript是JavaScript的标准,可是Netscape公司(以及后来的Mozilla基金会)在内部依然使用本身的版本号。这致使了JavaScript有本身不一样于ECMAScript的版本号。

1996年3月,Navigator 2.0内置了JavaScript 1.0。

1996年8月,Navigator 3.0内置了JavaScript 1.1。

1997年6月,Navigator 4.0内置了JavaScript 1.2。

1998年10月,Navigator 4.06内置了JavaScript 1.3。

1999年,Netscape服务器版提供JavaScript 1.4。

2000年11月,Navigator 6.0内置了JavaScript 1.5。

2005年11月,Firefox 1.5内置了JavaScript 1.6。

2006年10月,Firfox 2.0内置了JavaScript 1.7。

2008年6月,Firefox 3.0内置了JavaScript 1.8。

JavaScript 1.1版对应ECMAScript 1.0,可是直到JavaScript 1.4版才彻底兼容ECMAScript 1.0。JavaScript 1.5版彻底兼容ECMAScript 3.0。目前的JavaScript 1.8版彻底兼容ECMAScript 5。

截止2013年初,全部浏览器的最新版本——Chrome 24,Firefox 19,IE 10.0,Opera 12,Safari 6——都支持ECMAScript 5.1版。

周边大事记

1996年,样式表标准CSS初版发布。

1997年,DHTML(Dynamic HTML,动态HTML)发布,容许动态改变网页内容。这标志着DOM模式(Document Object Model,文档对象模型)正式应用。

1998年,Netscape公司开源了浏览器套件,这致使了Mozilla项目的诞生。几个月后,美国在线(AOL)宣布并购Netscape。

1999年,IE 5部署了XMLHttpRequest接口,容许Javascript发出HTTP请求,为后来大行其道的Ajax应用创造了条件。

2000年,KDE项目重写了浏览器引擎KHTML,为后来的WebKit和Blink引擎打下基础。这一年的10月23日,KDE 2.0发布,第一次将KHTML浏览器包括其中。

2001年,微软公司时隔5年以后,发布了IE浏览器的下一个版本Internet Explorer 6。这是当时最早进的浏览器,它后来统治了浏览器市场多年。

2001年,Douglas Crockford提出了JSON格式,用于取代XML格式,进行服务器和网页之间的数据交换。JavaScript能够原生支持这种格式,不须要额外部署代码。

2002年,Mozilla项目发布了它的浏览器的初版,后来起名为Firefox。

2003年,苹果公司发布了Safari浏览器的初版。

2004年,Google公司发布了Gmail,促成了互联网应用程序(Web Application)这个概念的诞生。因为Gmail是在4月1日发布的,不少人起初觉得这只是一个玩笑。

2004年,Dojo框架诞生,为不一样浏览器提供了同一接口,并为主要功能提供了便利的调用方法。这标志着JavaScript编程框架的时代开始来临。

2004年,WHATWG组织成立,致力于加速HTML语言的标准化进程。

2005年,苹果公司在KHTML引擎基础上,创建了WebKit引擎。

2005年,Ajax方法(Asynchronous Javascript and XML)正式诞生,Jesse James Garrett发明了这个词汇。它开始流行的标志是,2月份发布的Google Maps项目大量采用该方法。它几乎成了新一代网站的标准作法,促成了Web 2.0时代的来临。

2005年,Apache基金会发布了CouchDB数据库。这是一个基于JSON格式的数据库,能够用Javascript函数定义视图和索引。它在本质上有别于传统的关系型数据库,标识着NoSQL类型的数据库诞生。

2006年,jQuery函数库诞生,做者为John Resig。jQuery为操做网页DOM结构提供了很是强大易用的接口,成为了使用最普遍的函数库,而且让Javascript语言的应用难度大大下降,推进了这种语言的流行。

2006年,微软公司发布IE 7,标志从新开始启动浏览器的开发。

2006年,Google推出 Google Web Toolkit 项目(缩写为GWT),提供Java编译成JavaScript的功能,开创了将其余语言转为JavaScript的先河。

2007年,Webkit引擎在iPhone手机中获得部署。它最初基于KDE项目,2003年苹果公司首先采用,2005年开源。这标志着Javascript语言开始能在手机中使用了,意味着有可能写出在桌面电脑和手机中都能使用的程序。

2007年,Douglas Crockford发表了名为《JavaScript: The good parts》的演讲,次年由O'Reilly出版社出版。这标志着软件行业开始严肃对待JavaScript语言,对它的语法开始从新认识,

2008年,V8编译器诞生。这是Google公司为Chrome浏览器而开发的,它的特色是让Javascript的运行变得很是快。它提升了JavaScript的性能,推进了语法的改进和标准化,改变外界对JavaScript的不佳印象。同时,V8是开源的,任何人想要一种快速的嵌入式脚本语言,均可以采用V8,这拓展了JavaScript的应用领域。

2009年,Node.js项目诞生,创始人为Ryan Dahl,它标志着Javascript能够用于服务器端编程,今后网站的前端和后端可使用同一种语言开发。而且,Node.js能够承受很大的并发流量,使得开发某些互联网大规模的实时应用变得容易。

2009年,Jeremy Ashkenas发布了CoffeeScript的最第一版本。CoffeeScript能够被转化为JavaScript运行,可是语法要比JavaScript简洁。这开启了其余语言转为JavaScript的风潮。

2009年,PhoneGap项目诞生,它将HTML5和JavaScript引入移动设是备的应用程序开发,主要针对iOS和Android平台,使得JavaScript能够用于跨平台的应用程序开发。

2010年,三个重要的项目诞生,分别是NPM、BackboneJS和RequireJS,标志着JavaScript进入模块化开发的时代。

2011年,微软公司发布Windows 8操做系统,将JavaScript做为应用程序的开发语言之一,直接提供系统支持。

2011年,Google发布了Dart语言,目的是为告终束JavaScript语言在浏览器中的垄断,提供更合理、更强大的语法和功能。Chromium浏览器有内置的Dart虚拟机,能够运行Dart程序,但Dart程序也能够被编译成JavaScript程序运行。

2011年,微软工程师Scott Hanselman提出,JavaScript将是互联网的汇编语言。由于它无所不在,并且正在变得愈来愈快。其余语言的程序能够被转成JavaScript语言,而后在浏览器中运行。

2012年,单页面应用程序框架(single-page app framework)开始崛起,AngularJS项目和Ember项目都发布了1.0版本。

2012年,微软发布TypeScript语言。该语言被设计成JavaScript的超集,这意味着全部JavaScipt程序,均可以不经修改地在TypeScript中运行。同时,TypeScript添加了不少新的语法特性,主要目的是为了开发大型程序,而后还能够被编译成JavaScript运行。

2012年,Mozilla基金会提出asm.js规格。asm.js是JavaScript的一个子集,全部符合asm.js的程序均可以在浏览器中运行,它的特殊之处在于语法有严格限定,能够被快速编译成性能良好的机器码。这样作的目的,是为了给其余语言提供一个编译规范,使其能够被编译成高效的JavaScript代码。同时,Mozilla基金会还发起了Emscripten项目,目标就是提供一个跨语言的编译器,可以将LLVM的位代码(bitcode)转为JavaScript代码,在浏览器中运行。由于大部分LLVM位代码都是从C / C++语言生成的,这意味着C / C++将能够在浏览器中运行。此外,Mozilla旗下还有LLJS(将JavaScript转为C代码)项目和River Trail(一个用于多核心处理器的ECMAScript扩展)项目。目前,在能够被编译成JavaScript的语言列表上,共有将近40种语言。

2013年,Mozilla基金会发布手机操做系统Firefox OS,该操做系统的整个用户界面都使用JavaScript。

2013年,ECMA正式推出JSON的国际标准,这意味着JSON格式已经变得与XML格式同样重要和正式了。

2014年,微软推出JavaScript的Windows库WinJS,标志微软公司全面支持JavaScript与Windows操做系统的融合。

2014年11月,因为对Joyent公司垄断Node项目、以及该项目进展缓慢的不满,一部分核心开发者离开了Node.js,创造了io.js项目,这是一个更开放、更新更频繁的Node.js版本,很短期内就发布到了2.0版。三个月后,Joyent公司宣布放弃对Node项目的控制,将其转交给新成立的开放性质的Node基金会。随后,io.js项目宣布回归Node,两个版本将合并。

2015年3月,Facebook公司发布了React Native项目,将React框架移植到了手机端,能够用来开发手机App。它会将JavaScript代码转为iOS平台的Objective-C代码,或者Android平台的Java代码,从而为JavaScript语言开发高性能的原生App打开了一条道路。

2015年4月,Angular框架宣布,2.0版将基于微软公司的TypeScript语言开发,这等于为JavaScript语言引入了强类型。

2015年5月,Node模块管理器npm超越CPAN,标志着JavaScript成为世界上软件模块最多的语言。

2015年5月,Google公司的Polymer框架发布1.0版。该项目的目标是生产环境可使用WebComponent组件,若是可以达到目标,Web开发将进入一个全新的以组件为开发基础的阶段。

2015年6月,ECMA标准化组织正式批准了ECMAScript 6语言标准,JavaScript语言正式进入了下一个阶段,成为一种企业级的、开发大规模应用的语言。这个标准从提出到批准,历时10年,而JavaScript语言从诞生至今 也已经20年了。

2015年6月,Mozilla在asm.js的基础上发布WebAssembly项目。这是一种JavaScript语言编译后的二进制格式,相似于Java的字节码,有利于移动设备加载JavaScript脚本,解析速度提升了20+倍。这意味着未来的软件,会发布JavaScript二进制包。

相关文章
相关标签/搜索