JavaScript的历史


title: JavaScript的历史
layout: page
category: introduction
date: 2013-01-10
modifiedOn: 2013-12-05
声明,这是阮一峰先生的篇章,附上链接:
http://javascript.ruanyifeng.com/introduction/history.html


理解今天之极好措施有,就是了解历史,本节将到介绍JavaScript的历史。了解这些内容,还推进把JavaScript在整整电脑编程体系及处理器工业面临所处之职务,以及涉及的整限制。

JavaScript的诞生

JavaScript因为互联网要格外,紧随着浏览器的面世而出版。回顾它的历史,就假设打浏览器的史摆起。

1990年之,欧洲核能研究组织(CERN)科学家Tim
Berners-Lee,在环球最特别之电脑网络——互联网的根基及,发明了万维网(World
Wide
Web),从此可以于网上浏览网页文件。最早的网页只能当操作系统的终极里浏览,也就是说只能采取命令行操作,网页都是在字符窗口中展示,这自好不便民。

1992年的,美国国家超级电脑应用中心(NCSA)开始开发一个单独的浏览器,叫做Mosaic。这是人类历史及先是个浏览器,从此网页可以在图形界面的窗口浏览。

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

1994年12月,Navigator发布了1.0本,市场份额一举超越90%。

Netscape公司飞速发现,Navigator浏览器需要同种植好坐网页的脚本语言,用来决定浏览器行为。当时,网速好缓慢而上网费很昂贵,有些操作不当在服务器端完成。比如,如果用户忘记填写“用户名”,就点了“发送”按钮,到服务器又发现立即无异接触就生接触最为晚矣,最好能当用户有数之前,就告知用户“请填写xx栏”。这就是用在网页中放置小序,让浏览器检查各个一样苑是否还填了。

管理层对这种浏览器脚本语言的设想是:功能未待极度强,语法较为简单,容易学与配备。那同样年,正逢Java语言开始推向市场,Netscape公司说了算,脚本语言的语法要接近Java,并且可以支撑Java程序。这些考虑直接排了使现存语言,比如perl、python和TCL。

1995年,Netscape公司雇佣了程序员Brendan
Eich开发这种网页脚本语言。Brendan
Eich有非常强之函数式编程背景,希望盖Scheme语言(函数式语言鼻祖LISP语言的一样栽方言)为原本,实现这种新语言。

1995年5月,Brendan
Eich只所以了10上,就设计到位了这种语言的率先版。它是一个十分杂烩,语法有差不多只自:

  • 基本语法:借鉴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操作系统的融合。

参照链接

  • Axel Rauschmayer, The Past, Present, and Future of
    JavaScript
  • John Dalziel, The race for speed part 4: The future for
    JavaScript
  • Axel Rauschmayer, Basic JavaScript for the impatient
    programmer
  • resin.io, Happy 18th Birthday JavaScript! A look at an unlikely
    past and bright
    future