JavaScript 语言已诞生近 30 年的时间,让我们一起来回顾下这门语言的诞生和发展的过程。
我同步在 B 站更新了视频版,欢迎观看:
1. 诞生 #
JavaScript 诞生于 1995 年,由网景公司(Netscape)的 Brendan Eich 设计并首次在网景导航者(Netscape Navigator)浏览器上实现。Brendan Eich 只用 10 天时间就把 Javascript 设计出来了。由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript 写出来的程序混乱不堪。
JavaScript 最初被命名为 Mocha,后更名为 LiveScript,最终网景和 Sun 联合一起将其重命名为 JavaScript,这一命名主要是为了搭上当时热门的 Java 编程语言的“便车”。
JavaScript 的设计初衷是为了在网页上实现交互性,使网页能够响应用户的操作,如点击按钮、填写表单等。
同期有网景的 JavaScript,微软的 JScript 和 CEnvi 的 ScriptEase 三足鼎立。1997 年,在 ECMA(欧洲计算机制造商协会)的协调下,由 Netscape、Sun、微软、Borland 组成的工作组确定统一标准:ECMA-262。
此后,1998 年, ECMAScript 2.0 发布。 1999 年,ECMAScript 3.0 发布。
2. 版本 3.1 和 4 的大争论 #
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。
不过那些激进的想法也并不是完全丢弃了,很多在后面的 ECMAScript 6 进行了实现。
3. Ajax 的出现 #
AJAX (Asynchronous JavaScript and XML) 是一种创建交互式、更快速的 Web 应用的技术。它允许 JavaScript 向服务器发送异步请求,而不会打断用户的操作。
最初的 AJAX 技术是由 Google 在 2005 年提出的,它的核心是 JavaScript 对 XMLHttpRequest 对象的操作。
随着 AJAX 技术的广泛应用和普及,出现了许多 JS 框架如 jQuery,它们简化了 AJAX 的使用,并提供了更多功能,如跨域请求、Promise 等新特性。
可以看下我在 2012 年时写的关于 Ajax 的文章,看看那时候的写法:异步传输 ajax。
随着 RESTful API 的流行,JSON 作为数据交换格式取代了 XML,成为了 AJAX 请求的主要数据格式。同时,Fetch API 的出现使得 AJAX 的使用更加简洁和现代化。
4. Node.js 的诞生 #
Node.js 的诞生可以追溯到 2009 年,Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它使用了一个事件驱动、非阻塞式 I/O 模型,让 JavaScript 可以运行在服务端的开发平台。
Node.js 的出现,我个人认为最大的两个作用:
- 前端开发者不再仅仅局限在浏览器环境,更能涉猎到服务端领域;
- 前端工程化:Node.js 提供了模块化开发、构建工具、自动化测试、部署和运维以及前端服务框架等多种功能;
Node.js 的出现为 JavaScript 在服务器端的应用开辟了新的道路,并逐渐成为 Web 开发领域的重要技术之一。
5. ECMAScript6 的发布 #
ECMAScript 6(简称 ES6 或 ECMAScript 2015)的发布,标志着前端开发进入了一个更加规范化的进程。这一版本的发布为 JavaScript 语言带来了许多重要的新特性和语法改进,极大地提升了开发者的编程体验和开发效率。
2013 年 12 月,ECMAScript 6 草案发布。然后是 12 个月的讨论期,听取各方反馈。由于这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能。标准委员会最终决定,标准在每年的 6 月份正式发布一次
,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的 6 月份,草案就自然变成了新一年的版本。
2015 年 6 月,ECMAScript 6(ES6)正式通过,成为国际标准,正式名称是“ECMAScript 2015”(简称 ES2015)。
从此之后,标准在每年的 6 月份正式发布一次,然后以发布的年份为版本号,例如 2016 年 6 月发布的版本为 ES2016。
6. JavaScript 的商标 #
上面我们也稍微提到过,JavaScript 的名称是由网景(Netscape)和 Sun 公司(就是发明 Java 语言的那家公司)联合命名的,Sun 公司在 1995 年就向美国专利商标局申请了该名称的商标。该商标于 2000 年获得批准。Oracle 又收购了 Sun 公司后,自然而然地掌握了 JavaScript 商标。
Oracle 一直没有把 JavaScript 的名字用在自己的商业产品上,但是它拥有这个名字的商标权。那那些与 JavaScript 有关的组织就得掂量掂量了。
最近,JavaScript 杰出人士和至少 9000 名其他相关方签署了一封联名信,再次要求 Oracle 放弃其名称的商标,让该编程语言获得自由。
在新发布的公开信中,Node.js 创建者 Ryan Dahl、JavaScript 创建者 Brendan Eich、JavaScript 规范编辑者 Michal Ficarra、Svelte 框架创建者 Rich Harris、npm 创建者 Isaac Schleuter、Socket 首席执行官 Feross Aboukhadijeh、Node.js 技术指导委员会成员 James Snell 以及 Syntax FM 主持人 Wes Bos 和 Scott Tolinski,以及本文提交时的其他 9000 多名签名者,敦促 Oracle 放弃其未使用且因此不需要的 JavaScript 商标。
其实这不是第一次发出倡议了,在 2022 年时,Node.js 创建者 Ryan Dahl 就曾呼吁 Oracle 释放 JavaScript 商标,但 Oracle 并未做出回应。
虽然目前 Oracle 并未产生任何依赖 JavaScript 商标的产品,但商标一直在一家商业公司中握着,总归是可能会产生纠纷。