JavaScript的前世今生
前言
最近一段时间,一直在研读框架源码,越深入,越发现自身基础知识的薄弱,因此最近打算重新回顾一遍JS的基础,旨在查漏补缺,厚积薄发。
第一篇文章主要想讲讲JS的发展历史,了解JS的本质、历史以及局限性。
第一次在思否发表博客,希望能一直继续下去,毕竟坚持本身就是一件很酷的事情。
这次的故事就从Mosaic浏览器讲起。(马赛克? 😂)
Mosaic
Mosaic浏览器是由美国伊利诺大学的NCSA组织在1993年发表的第一个可以显示图片的浏览器,在当时一度引起轰动,可以说Mosaic浏览器的出现很大程度推动了互联网的发展。而后面要介绍的网景和微软都和这个Mosaic浏览器有着不可分割的联系。
接下来当时来自伊利诺大学Mosaic研发的核心成员马克·安德森(Marc Andreessen)毕业了,他与几何图形发生器的发明人吉姆·克拉克(Jim.H.Clark)共同创立了Mosaic Communication Corporation,也就是后来大名鼎鼎的网景公司。
Netscape
而Mosaic 公司成立后,由于当时安德森是使用大学的设备和资金进行开发(打工仔),因此伊利诺伊大学拥有 Mosaic 的商标权,而且伊利诺伊大学已将技术转让给 Spy Glass 公司,因此开发团队必须彻底重新撰写浏览器程式码并改名为网景公司,这次开发同原先开发不一样。那时还是学生,只是为了兴趣而并不关心质量,而现在为了商业目的,要把性能和稳定性放在优先考虑的地位。
在二人领导下,公司合力进行新一代浏览器的研发,试图打破Mosaic的垄断并取得业界的领导地位。所以对新浏览器名为 Netscape Navigator,即“导航者”。而它的对内称呼为Mozilla,意为Mosaic杀手,也是之后火狐母公司的名字。
1995 年,JavaScript随着网景公司发布的 Netscape Navigator 2.0 问世,它最初命名为 LiveScript,它出自现今的 Mozilla 公司的 CTO——Brendan Eich 之手。其产生源于网景公司发布的 Netscape Navigator 浏览器需要一种脚本语言来协助浏览器进行一些简单的动态操作。而在当时网景公司和Sun公司达成联盟,出于利用Java 这个因特网时髦词汇达到推广目的,就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为 JavaScript。
有趣的是,如果不是公司的决策,Brendan Eich说他绝不可能把Java作为Javascript设计的原型。作为设计者,他不止一次提到他一点也不喜欢自己的这个作品:
"与其说我爱Javascript,不如说我恨它。它是C语言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:'它的优秀之处并非原创,它的原创之处并不优秀。' (the part that is good is not original, and the part that is original is not good.)"
1996年 Netscape Navigator 3.0问市,此版本有分为“Standard Edition”和“Gold Edition”两个版本,后者具备邮件软件和所见即所得的网页编辑程式,此时网景对浏览器市场的占有率达到70%的高峰。
而作为应用软件的平台,浏览器的发展潜力对微软的Windows操作系统构成了巨大威胁。安德森——在上世纪90年代被人称为“下一个比尔·盖茨”——曾夸下海口称在网景面前,Windows只能充当一堆设计拙劣的设备的驱动程序。
Microsoft
盖茨对互联网的判断当属后知后觉,他认为浏览器不过是某种类型的信息高速公路的雏形。因此从 1995 年Netscape Navigator 2.0 发布以来,市场上的网页浏览器标准都以 Netscape 主导,而从1995获得Mosaic(Spyglass公司)的授权后,微软公司就一直在开发为自家IE浏览器服务的语言。但遗憾的是IE浏览器面对不可一世的Netscape Navigator可以说是不堪一击。
在1995年6月21日,微软在网景总部举行了4小时会谈,试图寻找一种战略合作关系。据安德森本人的说法,微软的与会代表咄咄逼人,不但提议划分浏览器市场,而且要求网景的产品仅运行于旧版本的Windows上。当时的安德森才24岁,意气风发自然不可能统一其收购计划。
两个的争斗愈演愈烈,微软公司更是在盖茨的要求下,暂缓其他业务的开发,全力投入到新的IE浏览器开发中。
1996年8月13日,微软IE3发布。IE 3.0 搭载了一个 JavaScript 的克隆版,叫做 JScript(而之所以这样命名是为了避免与 Netscape 潜在的许可纠纷)。
1997年IE4的市场占有率仅仅达到了15%,而Netscape依旧高达70%,而到了1999年两者的情况得到了翻转,微软占据了绝大部分浏览器市场,而网景公司几乎可以用苟延残喘来形容。
在我看来原因无外乎两个:一是彼时微软已经占据了绝大部分pc的操作系统市场,而作为亲儿子的IE自然得到了大力推广,二是Netscape是一家浏览器企业,为了收益,Netscape Navigator 是收费的,而IE是免费的,因此在IE技术赶上的时候,可以说就宣判Netscape Navigator 的死刑。而后来带着V8引擎而来的Chrome席卷浏览器市场,拳打火狐,脚踢IE就又是后面的故事了。
ECMA
在微软进入后,有 3 种不同的 JavaScript 版本同时存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。作为开发者同一段逻辑的代码,要分别写三遍,这无疑极大的降低了开发效率。随着业界担心的增加,这个语言的标准化显然已经势在必行。
1997 年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。第 39 技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法和语义”(http://www.ecma-international...。由来自 Netscape、Sun、微软、Borland 和其他一些对脚本编程感兴趣的公司的程序员组成的 TC39 锤炼出了 ECMA-262,该标准定义了名为 ECMAScript 的全新脚本语言。
1999年12月,ECMAScript 3.0版发布,是对ECMAScript标准第一次真正的修改。从各方面综合来看,第3版标志着ECMAScript成为了一门真正的编程语言。也成为JavaScript的通行标准,得到了广泛支持。
从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。
2007年10月ECMAScript 4.0版草案发布对3.0版做了大幅升级,预计次年8月发布正式版本。草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。2008年7月ECMAScript 4.0发布前被废弃由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,中止ECMAScript 4.0的开发(即废除了这个版本)。
2015年ECMAScript 6正式发布,并且更名为“ECMAScript 2015”。它吸收了之前ES4,ES5的内容,ECMAScript 2015的发布代表JS迎来了新时代,它是是JavaScript语言的下一代标准,提供了许多新的语法和编程特性以提高ECMAScript的开发效率并优化ECMAScript的开发体验。
之后的每年都会推出一些新特性,最近的一版是ECMA2019又带来了新的八个功能。但我还是习惯的将这几年的新规范,都归结与ES6中,将其称之为ES6。
后记
现如今Javascript已经翻身做了web端开发的主人,尤其是这几年,移动互联网的迅猛发展,更是将Javascript推向前所未有的高地,而Node的出现更是使得Javascript得以出现在服务端编程中。打好Javascript基础,将为开发者的前端之路打下结实的地基,下一篇文章是关于JavaScript的运行机制,让我们一起走进Javascript的世界,从内部了解Javascript的本质。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。