JavaScript 历史:从 Netscape 到框架之旅
导读:2022 年是 JavaScript 诞生 27 周年。让我们回顾一下塑造该语言的历史,还有它的一些主要里程碑,并期待它在未来有更好的发展。
JavaScript 在 2022年迎来 27 岁的生日,这个编程语言现在业已超过 1200 万+用户。
根据几家开发者平台年度调查报告,JavaScript 已经无处不在,且连续7年成为 Web 开发者最常用的工具之一。
在这篇文章中,我将带大家在时间轴上回顾 JavaScript 的历史。我们将共同了解JavaScript 这么多年来是如何发展的,以及在此过程中添加了哪些新的功能。
JavaScript的起源
JavaScript 诞生于 1995 年,由 Netscape Communications Corporation (网景通信有限公司)的软件工程师 Brendan Eich 在 10 天内构思并开发而成。
JavaScript 的发布缘由Netscape与微软之间商业战争最冲突的市场,它乘上了由用户快速牵引的过山车,然后螺旋式下降,几乎差点从市场中退出。
然而,它又从战场的硝烟中重新出现,在大量用户发出了发展互联网的声音后,JavaScript 又得已重生。
JavaScript 由 Netscape 管理层授权紧急开发,主要原因是该公司正与微软进行激烈的浏览器之战。
当年的市场如战场,时间至关重要。根据Netscape 在 1998 年反垄断审判中的证词披露,如果它不同意根据Windows 的发布年份划浏览器市场,微软威胁将消灭Netscape。微软希望将 Internet Explorer 与 Windows 95 绑定,从而拥有互联网的全部,并采取排他技术措施。
Netscape 愤怒地决定通过在 Netscape Navigator 2.0 Beta 浏览器的发布中包含附加软件,以便进行反击。这个计划好的脚本语言,最终命名为 “JavaScript”,目标是让非程序员能够快速创建网站。
而 Brendan Eich 的工作任务有不可能完成的属性,临危受命的他需要在 10 天内完成开发,然后要将软件包含在 1995 年 9 月发布的 Netscape 浏览器中。
此项开发工作必须符合 Netscape 和 Sun Microsystems 签署的技术规范与产品分发协议。此外,Netscape 管理层还要求强调其外观的重要性,该语言需要类似于 Sun Microsystems 的 Java 来增加其流行度。为了尊重版权法,它不能叫 Java。它还应该让用户感觉丰富且功能强大,可以快速被市场所采用,但又不应被视为 Java 的竞争对手。
Eich 被Netscape管理层明令禁止使用 Java 的面向对象语法。在接近冲锋式的开发过程中,它的代号被命名为“Mocha”,被作为 Java 的配套语言宣传——"JavaScript 是一种轻量级、对非程序员友好的编程语言"。
Brendan Eich 在开发的过程几乎没有睡过觉,后来证明他成功了。他利用自己对 Scheme 语言的经验编写了这个脚本语言,添加了受 Self 原型启发的成分,创建了类似 Java 的语义。
“Mocha”这个名称只维持了很短的开发周期,在它发布的第一个正式版本中变成了“LiveScript”,但这个版本代码不支持例外处理。
此时开源社区的用户们挺身而出,帮助 Eich 调试 LiveScript 。
Sun Microsystems 在 1995 年 12 月发布 Navigator 2.0 Beta 3 ,再次将产品名称更改为 JavaScript,“LiveWire” 成为 Netscape Enterprise Server 的服务器端 JavaScript 品牌。
浏览器大战 (1995 – 2003)
在 1994 年 Netscape 的 Navigator 浏览器发布之前,微软一直专注于用 Microsoft Network、ActiveX 和 VBScript 取代 AOL,并于 1995 年开发了一个新版本的 Microsoft SQL Server,专为互联网应用程序设计。
在 Windows 95 中发布 Internet Explorer 之后,它没过多久,微软就在 1996 年发布了逆向工程的 JScript,赶上了 Netscape。
Netscape 此时要求欧洲计算机制造商协会(ECMA)建立JavaScript的通用标准。
一个名为 TC39 的技术委员会于 1996 年承担了这项任务。在 TC39 的会议期间,相互竞争厂商的实现间展开了激烈的辩论。尽管在达成协议方面进展甚微,标准化组织还是在 1997 年 6 月发布了第一套规范,即 ECMA-262,将向后兼容作为规则,并收紧了其中运算符的定义。
国际标准组织 (ISO) 和国际电工委员会 (IEC) 于 1998 年 6 月正式制定了第二版 ISO/IEC 16262,第三版于 1999 年 12 月推出,其代表了现代 JavaScript 的版本,称为 ECMAScript 3。
微软通过捆绑策略将 Netscape Navigator 很快赶出了市场,并在 1997 年发布了 Internet Explorer 4,口号为 “The Web the Way You Want It”,涵盖所有 Windows 操作系统、Mac OS、HP-UX 系统和 Solaris 等平台。
AOL 于 1998 年底以 43 亿美元收购了 Netscape Communications Corporation。但是到 2000 年底,微软已经完全控制了浏览器市场。
处于垄断地位的微软不再关心标准化,TC39 组织被解散,ECMAScript 4 的工作被归档入库。AOL 在 2003 年彻底解散了 Netscape Navigator 的员工,最终它以 11 亿美元的现金向微软出售了 800 余项专利,其中包括 2011 年涉及 Netscape 的项目。
重生 (2003 – 2005)
2003 年,从 Netscape 的战后灰烬中诞生了 Mozilla 基金会。这个非营利组织的使命是保护用户对互联网的访问,并使其成为全球范围内的公共资源,而非专有。2005 年,Brendan Eich 也加入了 Mozilla 基金会,看到 Firefox 浏览器的快速增长,该基金会努力地倡导恢复 TC39。Eich 和 Mozilla 与 ECMA 合作开发了标准 ECMA-357 的新版本,也称为 ECMAScript for XML 或 E4X。
Jesse James Garrett 在 2005 年发表了一篇描述 JavaScript 支持技术的论文,从而进一步推动了这场标准与宣传的胜利。
Garrett 在为异步 JavaScript 和 XML 创造了术语 Ajax ,他描述了该技术,供开发人员异步更新 Web 内容,帮助管理动态网站内容,并指示独立于平台的网页显示等标准。
2005 年jQuery推出了,这是一个只需一行代码即可调用的 JavaScript 函数库。同年创建了 Dojo 基金会,用以促进包括 JavaScript 工具包在内的 Web 开源项目,以加速跨平台应用程序的开发。
ECMAScript 5 到 2009 年正式发布,随后在 2011 年进行了一些更新以符合 ISO/IEC 16262。
JavaScript 无处不在(2006-2020)
JavaScript 的重生,又相继产生了大量框架和函数库的生态系统,以简化客户端和服务器端开发。
2006 年,jQuery 库让创建复杂的交互型网站变得更加容易。
Node.js 于 2009 年作为一种客户端开发技术第一次出现,它用于编写可扩展的 JavaScript Web应用程序。
一年后,Backbone 引入了单页应用程序的概念。
AngularJS 随后进一步提升了 JavaScript 的流行度,为开发者提供了前端架构。
2013 年,Knockout.js 凭借用于动态用户界面的 JavaScript 库进入市场。
同年, Vue.js 测试版本由作者尤雨溪发布。2014年2月正式发布并开源。
在过去5年中,JavaScript 技术栈列表的数量和范围一直在扩大。开发者可以根据目标应用程序选择特定框架或函数库。
值得一提的是,保持稳定的是全球JavaScripit 社区对相关工具的承诺,并在ECMA-262 ECMAScript® 2019语言规范的标准指导下推进。
JavaScript与光明的未来
jQuery 和 Node.js 等项目在展示 JavaScript 在客户端和服务器端的开发方面发挥了重要作用。
随着 WebAssembly 成为与其他语言互操作性的有前途的标准,JavaScript 现在比以往任何时候都有成为现代应用程序开发的绝佳基础。
它已经证明了自己,并且保持了其最初的目标,即以一种优雅的方式结合入门简单和功能强大。
毫无疑问,未来仍将如此。
27 岁生日快乐!JavaScript,你已走出婴儿期了!
附录:JavaScript 之历史沿革
我们总结从JavaScript诞生到现在的简要历程,也算辉煌壮丽。
1994-1998:Netscape 时代
1994 年 12 月 15 日,Netscape Communications Corporation 发布了 Netscape Navigator 1.0 浏览器。
Brendan Eich 创建了 JavaScript 的第一个版本,代号为“Mocha”,后来(仍在内部)重命名为 LiveScript;
“Netscape 和 Sun 宣布推出 JavaScript,一种用于企业和Web的开放、跨平台的对象脚本语言”;
微软在 Internet Explorer 中引入了 JScript 与 Netscape 竞争。
Netscape 2 与 JavaScript 1.0 一起发布;
Netscape 将 JavaScript 提交给 Ecma International,作为标准规范的起点;
第一个 ECMAScript 语言规范的正式发布。
1999-2007:Internet Explorer VS Mozilla Firefox 的对决
Microsoft 发布了 Internet Explorer 5,它使用了更多的专有技术。
ECMAScript 2:编辑更改以使 ECMA-262 与标准 ISO/IEC 16262 保持一致
ECMAScript 3:支持 do-while、正则表达式、新的字符串方法(concat、match、replace、slice、用正则表达式拆分等)、异常处理等
2001 年 4 月:JSON规范定义。一种基于 JavaScript 子集的轻量级数据交换格式
Firefox 浏览器发布,为了与 Internet Explorer 相竞争。
Jesse James Garrett 发布了一份白皮书,最重要的是他创造了 Ajax 一词。
2008-2012:Netscape 消亡,Google Chrome 诞生
Netscape Navigator生命周期正式终结
ECMAScript 4 正式被放弃。
Google 发布了 Chrome 浏览器,这是当时最快的Web浏览器。
Node.js 由 Ryan Dahl 创建出来;该项目是 JavaScript 的服务器端运行时环境,后来成为开发可扩展和复杂的 Web 和云应用程序的最重要平台之一。
ECMAScript 5(以前的 ECMAScript 3.1),添加了严格模式、getter 和 setter、新的数组方法、对 JSON 的支持等特性。
TypeScript:一种用于应用程序级 JavaScript 开发的语言发布
2013-2014:从 ASM.js 到 WebAssembly
ASM.js 发布
React,一个用于构建用户界面的 JavaScript 库
Firefox 23 中删除了“禁用 Javascript”选项
Facebook 推出 Flow,JavaScript 的静态类型检查器
Vue.js 正式发布
2015-2020:Node.js 崛起
Node.js 基金会成立
ECMAScript 6 (ES2015) 发布。
WebAssembly 技术推出
Object.observe 退出 TC39
Microsoft Edge 的 JavaScript 引擎将开源
ECMAScript 2016 语言规范发布
ECMAScript 2017 语言规范发布
ECMA TC39:“SmooshGate”通过将 flatten 重命名为 flat 正式解决
ECMAScript 2018 语言规范发布
需要启e和 JavaScript 才能登录 Google
Node.js 中包含 ECMAScript 模块
ECMAScript 2019 语言规范
QuickJS JavaScript 引擎发布
2020-2022:Deno创建,Internet Explorer 浏览器正式退役
Deno:初始版本发布
ECMAScript 2020 语言规范发布
ECMAScript 2021 语言规范发布
Deno 加入 TC39
Internet Explorer 11 正式停服并终止技术支持
相关阅读: