【问题标题】:Why didn't Chrome create its own implementation of ECMAScript?为什么 Chrome 不创建自己的 ECMAScript 实现?
【发布时间】:2020-06-07 15:50:35
【问题描述】:

1995 年 Netscape 创建了 JavaScript,随后 Internet Explorer 也创建了 JScript。

据我了解,为了避免“用IE浏览最好”或“用Netscape浏览最好”,让程序员的生活更轻松,制定了ECMAScript标准,标准化了JavaScript(JScript也采用了该标准) .

考虑到 JavaScript 是 Oracle Corporation 的商标,为什么 Chrome 或 Opera 等现代浏览器在主要的 Web 编程语言是 JScript 的时代使用旧的 ECMAScript (JavaScript) 实现,而不是创建新的实现符合 ECMAScript 规范?

换句话说:JavaScript 是 ECMA 规范的 Netscape/Mozilla 实现,而 JScript 是 ECMAScript 的 Microsoft 方言。为什么 Chrome 采用 JavaScript 而没有创建例如 ChromeScript 或没有商标的实现?

【问题讨论】:

  • “实施”是什么意思? ECMAScript 是众所周知的,现在被称为 JS。
  • 我不知道您认为 Chrome 使用的是什么“旧”实现?他们当前的 Javascript 引擎是 V8,现在也被 Microsoft Edge 和 Node.js 使用。
  • 来自this post:“ECMAScript 是一种标准。JavaScript 是该标准的实现”。 “ECMAScript 的其他实现是 ActionScript 和 JScript。”
  • 我不明白你的问题是什么? Chrome 不使用任何其他人的 Javascript 引擎。它最初是使用 V8 作为其 Javascript 引擎发布的。 V8 是一个新的实现。至于Javascript引擎,有“SpiderMonkey”(Mozilla/Firefox)、“JScript”和“Chakra”(微软)、“JavscriptCore”(Safari/webKit)、V8(Chrome、Edge、Node.js)等。 ..
  • V8 实现了 ECMAScript 规范,它的开发人员是该规范未来版本的重要贡献者——不多也不少。在 Chrome 推出时(今天仍然大部分时间),尽管标准机构使用 ECMAScript 作为“官方”名称,但公众将语言称为 Javascript 事件。如果 Chrome 从未提及“Javascript”支持而仅提及 ECMASCript 支持,那么公众会感到困惑,因为“Javascript”一词是大多数公众认为网页中的语言。

标签: javascript google-chrome ecmascript-6 netscape


【解决方案1】:

为什么 Chrome 不创建自己的 ECMAScript 实现?

Chrome 确实创建了自己的 ECMAScript 实现。运行他们的 ECMAScript 实现的引擎曾经并且仍然被称为 V8,并且今天仍在使用。事实上,它现在被 Chrome、Edge 和 Node.js(以及其他)使用。

当时的公众并不真正了解 ECMAScript 这个短语——他们大多只是从 Firefox 开始了解 Javascript,也许还知道 IE 中的 JScript。当 Javascript 被引入标准的主体时,他们决定想要一个完全没有商标附属关系的名称。用 Brendan Eich(该语言的发明者)的话来说,选择“ECMAScript”这个词显然是因为根本没有商标关联,而且丑陋到没有人会在面向用户的产品中实际使用这个词。

ECMAScript 不是,现在也不是 John Q Public 会知道的东西(如果不是开发人员的话)。人们从最初的 Netscape 时代就知道“Javascript”,目前在 Firefox/Mozilla 中。一些人知道微软的类似(但不完全相同)的竞争实现称为 JScript。尽管当时主要为 IE 开发的人也会将 Javascript 称为他们正在编写的语言。

因此,当 Google 开发自己的 ECMAScript 新实现时,他们将其称为 Javascript。那只是一个用来描述他们实现的名字。这个名字对它的传统毫无意义。 V8 Javascript 引擎是全新的,不是从其他东西衍生出来的。

总而言之,V8 旨在与 ECMAScript 兼容,并且在 Chrome 中作为 Javascript 实现为公众所知。


在历史记录中,“Javascript”最初是在 Netscape 开发的。 “Java”最初是在 Sun Microsystems 开发的。不知何故,在 Netscape 和 Sun Microsystems 之间的关系中,Netscape 被允许使用“Javascript”一词,但 Sun 实际上拥有它的商标。最终,Netscape 浏览器被分拆成 Mozilla 基金会,Sun 被甲骨文收购。所以,是的,Oracle 拥有术语“Javascript”的商标,但许多人被允许使用它来描述他们的 ECMAScript 实现。其他公司在不同时期更愿意完全远离任何可能的商标问题,这就是为什么其他公司使用 JScript、ActionScript 等来命名他们的实现。

您需要一位商标律师来深入研究有关使用 Javascript 一词的法律问题。

当 Mozilla 作为一家独立公司从 AOL/Netscape 中分拆出来时,他们就是否可以继续在其代码和用户界面中使用“Javascript”一词进行了一些激烈的讨论。其中一些记录在他们的错误系统中。我不知道决定这一切的确切法律交易,但只要说他们在很多很多年后仍然使用“Javascript”这个词就足够了。 Sun Microsystems 当时并没有对此感到困扰,甚至现在拥有该商标(通过收购 Sun)的更具诉讼性的 Oracle 也没有试图停止在 Mozilla 或其他地方的使用。


请记住,Chrome 中的 V8 实现了一种符合 ECMAScript 标准的语言。 Chrome 通过将自己的全局对象(例如浏览器中的 window 对象)添加到环境中,像所有浏览器一样扩展了 ECMAScript。浏览器中的这些全局对象是在与浏览器有关的不同标准工作中标准化的,而不是与实际的 ECMAScript 语言有关。

【讨论】:

  • 谢谢!!我显然误解了 ECMAScript 与 JavaScript,这让我感到困惑。我发现this 的答案也很有用(对于 ES 与 JS)。 “ECMAScript 是我们都知道的 JS 语言的正式名称。”
  • "“ECMAScript”这个词 [has] 显然没有商标关联" - 实际上,它是 ECMA 的注册商标。
猜你喜欢
  • 1970-01-01
  • 2011-04-24
  • 2011-06-07
  • 2014-03-07
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2015-11-29
相关资源
最近更新 更多