JavaScript 今天30 岁了,但连自己的名字都不属于自己

12 月 4 号,JavaScript 迎来 30 岁生日。

一门 10 天赶出来的语言,现在跑在 98.9% 的网站上,有 1650 万开发者在用它。从浏览器脚本到服务端运行时,从桌面应用到移动端,甚至嵌入式设备都有它的身影。TIOBE 2024 年度编程语言排行榜上,JavaScript 排第 6。

但 30 周年这天,社区没怎么庆祝。大家更关心的是另一件事:JavaScript 这个名字,到底能不能从 Oracle 手里抢回来。


10 天写出来的语言

1995 年 5 月,Netscape 的工程师 Brendan Eich 接到一个任务:给浏览器加一门脚本语言。

时间表很紧------Navigator 2.0 Beta 版要发布了,必须赶上。

Eich 花了 10 天(据他回忆是 5 月 6 日到 15 日),搞出了第一个原型。这不是夸张,是真的 10 天。

他后来自己说:

当你看我 10 天写的东西,它像一颗种子。是一种有力的妥协,但仍然是一个非常强大的内核,后来长成了一门更大的语言。

这门语言最开始叫 Mocha,后来改叫 LiveScript,最后因为市场原因蹭了 Java 的热度,改名 JavaScript。

1995 年 12 月 4 日,Netscape 和 Sun 联合发布公告,宣布 JavaScript 正式诞生。28 家公司为这门新语言背书,包括 America Online、Apple、AT&T、Borland、HP、Oracle、Macromedia、Intuit、Toshiba 等科技巨头。

有意思的是,Oracle 当时是 JavaScript 的支持者之一,新闻稿的媒体联系人里还有 Mark Benioff(后来创办了 Salesforce)。没想到 30 年后,Oracle 成了社区想要摆脱的"商标持有者"。

Sun 联合创始人 Bill Joy 说:

JavaScript 是 Java 平台的完美补充,天生就是为互联网和全球化设计的。

America Online 技术总裁 Mike Connors:

JavaScript 带来了跨平台的快速多媒体应用开发能力。

HP 的 Jan Silverman:

JavaScript 代表了专门为互联网设计的下一代软件。

Netscape 和 Sun 还计划把 JavaScript 提交给 W3C 和 IETF 作为开放标准。后来 JavaScript 确实标准化了,但官方名字叫 ECMAScript------因为商标问题。

1996 年 3 月发布 1.0 版本后,JavaScript 的野心远不止当初设想的"胶水语言"。


从玩具到基础设施

当年 JavaScript 的定位是"胶水语言",让不会编程的人也能在网页上加点交互。

没人想到它会变成今天这样。

几个关键节点:

2009 年 - Node.js 诞生

Ryan Dahl 把 V8 引擎搬到服务端,JavaScript 不再只是浏览器里的玩具。前后端同构成为可能。

2015 年 - ES6 发布

let/const 替代 var,箭头函数,Promise,Class 语法... JavaScript 终于像个正经语言了。

2012 年 - TypeScript 发布

微软给 JavaScript 加了类型系统。2017 年只有 12% 的 JavaScript 开发者用 TypeScript,到 2024 年这个数字涨到了 35%。现在大型项目几乎都是 TypeScript。

框架时代

React、Vue、Angular 轮番登场。整个前端生态围绕 JavaScript 建立起来。现在有人的整个职业生涯都建立在某个特定的 JS 框架上。

嵌入式领域

JavaScript 甚至跑到了微控制器上。Espruino 项目让你可以在 24.95 美元的小板子上写 JavaScript,功耗低到 0.06mA,还能跑蓝牙。有个智能手表 Bangle.js 2,一块电池能用 4 周,上面跑的就是 JavaScript。


名字的问题

JavaScript 这个名字,商标属于 Oracle。

Oracle 2009 年收购 Sun 的时候一起拿到的。但 Oracle 自己根本不做 JavaScript 相关的产品,商标就这么放着。

问题来了:因为商标在 Oracle 手里,社区做事很尴尬。

  • 不能叫 JavaScript Conference,只能叫 JSConf
  • 官方规范叫 ECMAScript,不叫 JavaScript
  • 写书、办会议、做项目,用 JavaScript 这个词都有法律风险

Brendan Eich 2006 年写过:"ECMAScript 一直是个没人想要的商业名称,听起来像皮肤病。"

讽刺的是,Oracle 甚至不是 OpenJS Foundation 的成员,跟 Node.js 的开发也没有任何关系。

Node.js 和 Deno 的创始人 Ryan Dahl 看不下去了。2024 年 9 月他发起了 "Free the Mark" 运动,发布了一封公开信,28,600 多名开发者签名支持。

签名的人里有几个重量级的:

  • Brendan Eich - JavaScript 创造者本人
  • Ryan Dahl - Node.js 创造者
  • Michael Ficarra、Shu-yu Guo - JavaScript 规范编辑
  • Rich Harris - Svelte 作者
  • Isaac Z. Schlueter - npm 创始人
  • James M Snell - Node.js TSC 成员
  • Jordan Harband - JavaScript 规范荣誉编辑
  • Matt Pocock - Total TypeScript 课程作者
  • Wes Bos、Scott Tolinski - Syntax.fm 播客主持人

11 月正式向美国专利商标局提交申请,要求撤销 Oracle 的商标。

理由有三:

  1. 通用化 - JavaScript 已经变成通用名词了,就像 aspirin(阿司匹林)一样
  2. 弃用 - Oracle 三年多没用这个商标做任何商业用途
  3. 欺诈 - Oracle 2019 年续期商标时,提交的使用证据是 Node.js 的截图。Node.js 跟 Oracle 没有半毛钱关系

公开信里说得很直白:

Oracle 从来没有认真推出过叫 JavaScript 的产品。GraalVM 的产品页面甚至都没提"JavaScript"这个词,得翻文档才能找到它支持 JavaScript。

公开信还指出,Oracle 2019 年续期商标时提交的"使用证据"是 nodejs.org 的截图和 Oracle JET 库。Node.js 根本不是 Oracle 的产品,JET 只是 Oracle Cloud 服务的一个 JavaScript 库,跟市面上成千上万的 JS 库没什么区别。

按美国法律,商标 3 年不用就算放弃。Oracle 既没用这个商标,又眼睁睁看着它变成通用名词,两条都占了。

2025 年 2 月,Oracle 申请驳回诉讼中的欺诈指控。6 月,商标审判和上诉委员会驳回了欺诈指控,但撤销申请继续审理。8 月,Oracle 首次正式回应,否认 JavaScript 是通用名词。

官司预计要打到 2026 年。

Deno 团队正在众筹 20 万美元的法律费用,用于发现阶段的调查取证,包括做公众调查来证明普通人不会把 JavaScript 和 Oracle 联系在一起。


30 年后的 JavaScript

现在的 JavaScript 和 1995 年的已经是两门语言了。

当年的 varlet/const 取代。当年的原型继承有了 Class 语法糖。当年的回调地狱有了 Promise 和 async/await。

ES2025 刚发布,又加了一堆新特性。

工具链也完全不同了:

  • 打包器从 webpack 到 Vite,Vite 8 刚用上 Rolldown,速度又快了一大截
  • 运行时从只有浏览器,到 Node.js、Deno、Bun 三足鼎立
  • TypeScript 成了事实上的标准
  • 1650 万开发者,比很多国家的人口都多

Brendan Eich 当年 10 天写的种子,长成了一片森林。


顺手推几个项目

既然聊到 JavaScript 生态,推一下我做的几个开源项目:

chat_edit - 一个双模式 AI 应用,聊天 + 富文本编辑。Vue 3.5 + TypeScript + Vite 8 技术栈,可以自己配 API key 部署。

code-review-skill - Claude Code 的代码审查技能,覆盖 React、Vue、TypeScript 等主流技术栈,按需加载不浪费 token。

5-whys-skill - 根因分析技能,排查问题的时候用"5 个为什么"方法论。

first-principles-skill - 第一性原理思考技能,适合架构设计和技术方案选型。帮你拆解问题本质。

感兴趣可以去 GitHub 看看。


相关链接

相关推荐
用户47949283569151 小时前
Vite8来啦,告别 esbuild + Rollup,Vite 8 统一用 Rolldown 了
前端·javascript·vite
草字2 小时前
uniapp 悬浮按钮支持可拖拽。可移动。
前端·javascript·uni-app
一位搞嵌入式的 genius2 小时前
Vue实例挂载:从原理到项目实践的全维度解析
前端·javascript·vue.js·前端框架
m0_740043732 小时前
Vue Router中获取路由参数d两种方式:$route.query和$route.params
前端·javascript·vue.js
风止何安啊2 小时前
Event Loop 教你高效 “划水”:JS 单线程的“摸鱼”指南
前端·javascript·面试
@菜菜_达2 小时前
goldenLayout布局
前端·javascript
Shirley~~2 小时前
vite的tersor在lib库模式下不生效问题
javascript·vue.js·ecmascript
小飞侠在吗2 小时前
vue 生命周期
前端·javascript·vue.js
WX-bisheyuange3 小时前
基于Spring Boot的电影院购票系统设计与实现
前端·javascript·vue.js·毕业设计