1995年12月,网景通信公司与太阳微系统公司联合宣布了一种全新的网页脚本语言——JavaScript,这门诞生于网景公司内部、仅用10天时间拼出的“黑客式原型”,如今已经成为互联网上最重要的编程语言之一。
虽然当年的原始版本直到同年9月才随 Netscape Navigator 测试版亮相,并在1996年3月才以1.0版本正式发布,但今天,几乎所有带有客户端脚本的网站都在使用它,JavaScript 实际上成了交互式网络世界的“默认语言”。

当年在网景,工程师 Brendan Eich 被要求设计一种“轻量脚本语言”,目标是让网页设计师和非专业程序员也能很快上手,为原本静态的网页加入交互效果。 他在1995年5月完成的内部原型,在语法外观上刻意向当时大热的 Java 靠拢,以满足管理层的市场考量,但内部机制却大量借鉴了他钟爱的 Scheme 以及 Self 的原型继承思想,形成了与传统面向对象语言截然不同的结构。 随后一年中,这套语言在匆忙扩展和修改中不断成形,也为后来长期困扰开发者的各种“怪癖”和不一致埋下伏笔。
为了推动生态,网景与太阳微系统拉来了28家当时的重要科技企业为 JavaScript 站台,其中不乏数字设备公司、硅图等后来淡出或被收购的名字,而 JavaScript 本身却穿越了这轮行业洗牌,反而成为少数存活并持续壮大的技术之一。 1996年前后,微软一边抱怨标准频繁变动,一边在 Internet Explorer 中推出了自己的实现 JScript,由此引发了长达数年的浏览器兼容噩梦,也逼着开发者在不同实现之间疲于奔命。
JavaScript 的命名过程则是一段典型的“技术与市场拉扯史”。Eich 最初给原型起名为“Mocha”,随后在 Netscape 2.0 测试版中被更名为 LiveScript,直到与太阳微系统签下授权协议后才定名 JavaScript,用意是蹭当时 Java 的热度,把自己包装成 Java 的“网页端搭档”。 这种命名为之后三十年的混淆埋下伏笔:在技术上,Java 是静态类型、基于类的语言,而 JavaScript 则是动态类型、基于原型的语言,两者关系远不如名字听上去那样亲近。
1997年6月,ECMA 国际组织将这门语言标准化为 ECMAScript,标志着 JavaScript 真正迈入规范化轨道。 但在随后几年,随着 Internet Explorer 的市场统治,浏览器创新一度停滞,语言本身的发展也陷入低潮,直到2005年前后,AJAX 技术的兴起让开发者意识到:无需整页刷新即可更新内容的“类应用”网页,正在打开全新的产品形态。 2009年 Node.js 横空出世,将 JavaScript 延伸到服务器端,正式打破“只能在浏览器里跑脚本”的想象边界。

步入 2020 年代,围绕 JavaScript 的开发生态已经扩展到前端、后端、移动端与桌面端等几乎所有软件形式。 各类调查显示,它连续多年稳居全球最常用编程语言之列,开发者使用占比超过六成,而在其基础上增加静态类型的 TypeScript 也在快速攀升,成为许多大型项目的首选。 借助 React Native、Electron、Node.js 等框架,JavaScript 代码可以出现在手机应用、桌面软件、网站和云端基础设施中,npm 包注册中心上则已经累积了数百万计的模块,构成史无前例的代码“拼装市场”。
伴随影响力膨胀,围绕“JavaScript”这一名字本身的争议也愈演愈烈。由于太阳微系统被甲骨文收购,“JavaScript”商标最终落入甲骨文名下,但该公司并未真正以此打造过具体产品。 近年来,以 Brendan Eich 和 Node.js 创始人 Ryan Dahl 为代表的开发者发起公开联名信和法律行动,认为甲骨文长期未实际使用该商标,名称也已高度通用化,希望将其从商业商标中“解放”,以便社区可以自在地使用“JavaScript 会议”“JavaScript 规范”等称谓,而不必绕弯使用“JSConf”等折衷名称。
有些讽刺的是,标准名“ECMAScript”从一开始就被不少核心参与者嫌弃,Eich 曾打趣称这个名字听起来像一种皮肤病,但真正留在大众记忆中的却始终是 JavaScript 这一“市场产物”。 与此同时,当年被寄予厚望、曾在浏览器内大行其道的 Java applet 早已淡出历史舞台,而原本被视作“小脚本助手”的 JavaScript,反而成了现代网页和应用体验的绝对主角。 三十年后回望,这段起于“10天黑客原型”、夹杂着命名误会与标准纷争的技术故事,最终塑造了今日互联网的运作方式。Happy birthday, JavaScript。

