JavaScript 于 25 年前(1995 年 12 月 4 日)首次向公众推出。JavaScript 最初开发仅用了 10 天时间,便迅速成为最受欢迎的编程语言之一,如今全球有数百万的开发人员每天都在使用它。2020 年是它的 25 周年纪念日——对于这个已经成为最受欢迎的编程语言之一,这无疑是一伟大里程碑。
JavaScript 是前端开发的首选语言,后面并催生了微软的 Typescript,它是 JavaScript 的超集,具有更强的可选类型系统,供开发人员在浏览器中运行时编译成 JavaScript。JavaScript 和 TypeScript 都符合 ECMAScript,这是 JavaScript 和 node.js 的标准。这要归功于 Google 强大的 V8 引擎,可以在浏览器之外运行应用程序。JavaScript 对 Web 的影响是巨大的。科技巨头也已经拥抱了 JS。除了 Google 的 V8,还有很多开源项目,例如 Facebook 的 React 和 Google 的 Angular,他们有助于在智能手机和桌面上推广网络应用程序。1995 年 5 月,Netscape (网景公司)和 Sun (太阳微系统公司) 推出了 JavaScript。随后微软在 1995 年 12 月推出了 Visual Basic (VB),将其作为一个标准,用于为其 Internet Explorer 浏览器使用 VB 脚本创建 web 应用程序。甲骨文在 2008 年收购 Sun 主要是为了插手 Java 及其庞大的开发生态系统。当时而言,JavaScript 的未来并不能说说完全光明的。Cory House 是开发人员培训网站 Pluralsight 的一名 JavaScript 教育工作者。他回忆说,早期的 JavaScript 很难确定是否能成功。“JavaScript 是几天内就完成了,最初只在一个浏览器中使用。微软的第一个浏览器附带了他们自己风格的 JavaScript 叫 JScript。今天,JavaScript 还被用于构建桌面应用、移动设备应用、健身追踪器、机器人和众多嵌入式系统。它甚至是詹姆斯·韦伯太空望远镜的一部分。这个望远镜使用 Nombas 的 ES1 级嵌入式 JavaScript,应用于板载控制软件部分。”Cory House 回忆道。“我们可以用面向对象的或函数式的方式编写代码。由于 JavaScript 有类似于 c 的语法,因此使用过其他类似 c 语言的人对它很熟悉。JavaScript 通过不断接受其他语言的好点子而保持着“更新”。”Pluralsight 的另一位作者 Jonathan Mills 指出,JavaScript 已不再局限于浏览器。他说:“现在,JavaScript 已经发展成为一个庞大的生态系统,对软件开发的每个领域都具有影响。”微软的 TypeScript 在 GitHub 上越来越受欢迎,这要归功于基于 Javascript 的大型项目的存在,但它也可能被 Web Assembly 带来的新兴技术所取代。W3C 自 2019 年 12 月批准该标准以来,主流 Web 浏览器开始给 WebAssembly 和 Wasm HTML 提供与 CSS 和 JavaScript 同级别的支持。WebAssembly 是一个虚拟指令集架构,它支持 web 上的高性能应用程序,并为 web 上更多的 AI 搭建了平台,这些 AI 可以用于视频和音频编解码器、图形和加密计算。Mills 告诉 ZDNet,到目前为止,Web Assembly 在目标领域具有潜力。Mills 说:“在构建 JavaScript 应用程序时,JavaScript 代码会按原样发送到浏览器,并在运行时在浏览器中进行编译和运行。WebAssembly 通过在部署之前编译代码来简化此过程,并有望在此过程中显着提高性能 ”。“当构建图形或计算密集型的复杂 Web 应用程序时,这非常有用。然而,目前最主要的障碍是与 WebAssembly 相关的最杰出的语言是 Rust 和 C。JavaScript 之所以快速发展,部分原因是因为易用性和快速开发风格,C 和 Rust 都没有这种品质。”为了庆祝 JavaScript 诞生 25 周年,下面列出影响其历史的重要里程碑:
万维网(1989 年 3 月)
在 CERN 工作时,蒂姆·伯纳斯·李(Tim Berners-Lee)在一份名为“信息管理:提案”的文档中提出了他对网络的构想。
第一个网站 (1991 年 8 月 6 日)
第一个网站于 1991 年 8 月 6 日上线。它被用于万维网项目本身,并托管在 Tim Berners-Lee 的 NeXT 电脑上。
Mosaic (1993 年 6 月)
NCSA Mosaic,或简称 Mosaic,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器。它是由伊利诺伊大学厄巴纳-香槟分校的 NCSA 组织在 1993 年所发布,并于 1997 年 1 月 7 日正式终止开发和支持。在当时大受欢迎。Mosaic 算是点燃了后期互联网热潮的火种之一。后来网景导航者浏览器的开发工作,聘用了许多原有的 Mosaic 浏览器工程师,但是没有采用 Mosaic 网页浏览器的任何代码。传承网景浏览器代码的后裔为 Firefox 浏览器。
Netscape (网景公司) (1994 年 9 月 9 日)
马克•安德森(Marc Andreessen)和吉姆•克拉克(Jim Clark)创立了后来的网景通信公司(Netscape Communications Corporation),并于 1994 年 9 月 9 日推出了他们的第一个浏览器。最初它被称为Mosaic Netscape,后来为了避免与 NCSA 的商标问题改名为 Netscape Navigator。这个浏览器的内部代号是 Mozilla,意思是“Mosaic 杀手”,它确实迅速成为了最受欢迎的浏览器。
JavaScript (1995 年 5 月)
马克·安德森(Marc Andreessen)设想了一个更具动态性的 Web,并认为需要一种易于 Web 设计者使用的语言。他招募来了 Brendan Eich,并在 10 天之内于为 Netscape 浏览器编写了原型。该语言最初称为 Moca,后来称为 LiveScript,最后重命名为 JavaScript(作为 Java 的辅助语言)。JavaScript 的正式发布日期是 1995 年 12 月 4 日。
JScript (1996 年 8 月)
Microsoft 对 Netscape 的 JavaScript 进行了逆向工程,创建 JScript 并将其作为 Internet Explorer 3 的一部分。引入了不符合标准的专有扩展,使开发人员很难创建一个在所有浏览器中都能正常运行的网站。最终,Internet Explorer 成为浏览器大战中的主导软件。
ECMAscript 1 (1997 年 6 月)
Netscape 向 ECMA International 提交了 JavaScript,以创建标准规范,然后其他浏览器供应商可以实施该规范。这导致了 1997 年 6 月语言规范 ECMAScript 的正式发布。
Mozilla (1998 年 1 月 23 日)
1998 年 1 月 23 日,在浏览器市场份额急剧下降的情况下,Netscape 宣布它将发布 Netscape Communicator 5.0 的源代码,希望它将成为一个受欢迎的开源项目。Mozilla 项目就是这样诞生的。
XMLHttpRequest (1999 年 3 月)
Microsoft 于 1999年 3 月在 Internet Explorer 5.0 中发布了 XMLHttpRequest 的原始形式。XMLHttpRequest 是一种 API,用于在 Web 浏览器和 Web 服务器之间传输数据,它在将来会被证明是有用的。
ECMAscript 3 (1999 年 12 月)
该版本增加了正则表达式,更全的字符串处理,新的控制语句, try/catch 异常处理,更严格的错误定义,数字输出格式和其他增强功能。由于 ECMAscript 4 停滞,该版本盛行了十年。
JSON (2001 年 4 月)
Douglas Crockford 指定了 JSON(JavaScript 对象表示法),这是一种基于 JavaScript 子集的轻量级数据交换格式。JSON 数据在前端更易于加载和使用,并且到本世纪末将取代 XML,成为 Web 上的数据交换格式。
Firefox (2004 年 11 月 9 日)
Firefox 于 2002 年由 Dave Hyatt,Joe Hewitt 和 Blake Ross 作为 Mozilla 项目的实验分支开始。为了对抗 Mozilla Suite 的软件膨胀,他们创建了一个独立的浏览器,首先命名为 Phoenix,后来命名为 Firebird, 最后是Firefox。Firefox 1.0 版于 2004 年 11 月 9 日发布。Firefox 的速度,可用性和市场营销帮助它在 Internet Explorer 上赢得了市场份额。在启动的五年内,Firefox 占了所有 Web 浏览的近三分之一。
AJAX (2005 年 2 月 18 日)
杰西·詹姆斯·加勒特(Jesse James Garrett)创造了 AJAX(异步 JavaScript + XML)一词,用以描述新兴 Web 应用程序(如 GMail 和 Google Maps)背后的异步技术,该技术允许网页动态更改内容而无需重新加载。
jQuery (2006 年 8 月)
jQuery 是一个由 John Resig 设计的 JavaScript 库,用于简化 HTML DOM 树的遍历和操作以及事件处理,CSS 动画和 AJAX。在此期间启动的其他 JavaScript 框架/库包括 Mootools 和 Prototype。
Google Chrome (2008 年 12 月)
Google 于 2008 年 12 月 11 日发布了 Chrome 浏览器,该浏览器使用了与 Safari 相同的 WebKit 渲染引擎和一个更快的 JavaScript 引擎 V8。不久之后,针对 Windows,OS X 和 Linux 平台的开源版本以 Chromium 的名称发布。凭借快速的发布周期和对速度的关注,谷歌浏览器最终取代了所有其他浏览器。
Node.js (2009 年 3 月)
Node.js 最初由 Ryan Dahl 于 2009 年 3 月基于 Google 的开源 V8 JavaScript 引擎开发。它为在 Web 服务器上使用 JavaScript 铺平了道路。Node.js 函数是非阻塞的,允许服务器处理大量并发连接。它代表了“ JavaScript 无处不在”范例,统一了围绕一种编程语言的 Web 应用程序开发。
npm (2009 年)
npm(最初是 Node Package Manager 的缩写)是 Isaac Z. Schlueter 开发的 JavaScript 编程语言的软件包管理器。npm Registry 是 Node.js,前端 Web 应用程序,移动应用程序和其他应用程序的开源代码包的公共集合。
ES5 (2009 年 12 月 3 日)
ECMAScript 5 是 ECMAScript 3 发布十多年后的 2009 年 12 月发布,是ECMAScript 3 的增量升级版。雄心勃勃的 ECMAScript 4 被正式放弃,代号为 Harmony,某些功能成为 ECMAScript6。原始 ECMAScript 4 计划的其他功能将被删除以在后续版本中采用。形成了一个新的决心,即在整个 TC39 的共识下开发任何新的想法,以防止将来发生分裂的可能性。
AngularJS (2010 年 10 月 20 日)
AngularJS 由 Misko Hevery 于 2010 年 10 月发布,并迅速成为最受欢迎的 JavaScript MVC 框架。它提供了双向数据绑定,依赖项注入,路由包等等。在此期间启动的其他 JavaScript 框架/库包括 Backbone,Ember 和 Knockout。该项目由 Angular 在 2016 年继承,由 Google Angular 团队领导的 AngularJS 的完全重写。
TypeScript (2012 年 10 月 12 日)
TypeScript 是一种 JavaScript 的超集,它将静态类型添加到语言中,经过微软两年的内部开发,于 2012 年 10 月首次发布(0.8版本)。
React (2013 年 5 月 29 日)
React 是一个 JavaScript 库,用于构建可组合的用户界面,由 Jordan Walke 于 2013 年开发并开源。它由 Facebook 和一个由开发者和公司组成的社区共同维护。
Vue.js (2014 年 2 月 25 日)
由 Evan You 创建的 Vue 是一个开放源代码, 它是一个 model–view–viewmodel 的前端 JavaScript 框架,用于构建的用户界面和单页应用程序。该项目的第一个源代码提交于 2013 年 7 月,Vue 于 2014 年 2 月首次发布。
Next.js (2016 年 10 月 25 日)
Next.js 是由 Vercel 创建的开源 React 框架。它可以唯一满足静态和动态网站及应用程序的需求。Next.js 的增量静态再生为用户提供了静态站点生成器的所有功能,并且可以添加无限数量的页面并在以后更新它们-无需重建整个站点。
Svelte (2016 年 11 月 26 日)
Svelte 是一个由 Rich Harris 创建的免费和开源的前端 JavaScript 框架。Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中需要做大量的工作,而 Svelte 将这些工作放到构建应用程序的编译阶段来处理。与使用虚拟(virtual)DOM 差异对比不同。Svelte 编写的代码在应用程序的状态更改时就能像做外科手术一样更新 DOM。
WebAssembly (2017 年 3 月)
WebAssembly(缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式。Wasm 被设计为可移植目标,用于编译高级语言(如 C/C++/Rust),从而可以在 Web 上为客户端和服务器应用程序进行部署,前驱技术是来自 Mozilla 和 Google Native Client 的 asm.js。
OpenJS Foundation (2019 年 3 月 12 日)
众所周知,Node.js 和 JavaScript 有着千丝万缕的关系,也有着很多的合作,但他们属于不同的 fondation,办起事来非常不方便,所以有必要将这两个基金会合并以提高效率了。于是,在 2019 年 3 月 13 日,Node.js 基金会和 JS 基金会宣布合并为 OpenJS 基金会。OpenJS Foundation 的主要目标是:促进关键 JavaScript 和 Web 解决方案及相关技术的广泛采用和持续开发;
促进 JavaScript 开发社区中的协作;
在整个端到端 JavaScript 生态系统中为开源项目创建重心,指导它们迈向开放治理和多样化的协作者基础;
托管基础结构以支持托管的 JavaScript 开源项目;
通过推进项目和战略合作伙伴关系,来建立一个开放和可访问的网站。
Deno (2020 年 5 月 13 日)
Deno是一个基于 V8 JavaScript 引擎和 Rust 编程语言的 JavaScript 和 TypeScript 运行时。它是由 Node.js 的原作者 Ryan Dahl 创作的。这是他在 JSConf 2018 年欧盟会议上发表的题为“10 Things I Regret About Node.js”的演讲中宣布的。Deno 在单个可执行文件中明确承担了运行时和包管理器的角色,而不需要单独的包管理程序。
最后
对于 JavaScript 的未来,有一件事很清楚:协作是关键。“浏览器大战”已经过去了,用户和开发人员都不想重温由于缺乏互操作性而带来的问题。幸运的是,开源已经盛行,并代表着 JavaScript 语言和社区的开发和治理的前进之路。
☞苹果或于明年9月发布电动汽车;10家头部平台紧急下架互联网存款产品;Go 1.16首个Beta版本发布|极客头条
☞当运行 Linux 内核的机器死机时...
☞Rust 2020 调查报告出炉,95%的开发者吐槽Rust难学
☞从“卡脖子”到“主导”,国产数据库 40 年的演变!
☞毫秒间完成行为分析,飞猪端智能技术实践!
☞Windows 拥抱 Android,微软在下怎样的一步棋?