瀏覽器發(fā)展史
Mosaic焦影,是互聯(lián)網(wǎng)歷史上第一個(gè)獲普遍使用和能夠顯示圖片的網(wǎng)頁(yè)瀏覽器鳞绕。于 1993
年問(wèn)世饥努。
1994 年 4 月氧急,馬克.安德森和 Silicon Graphics(簡(jiǎn)稱(chēng)為 SGI颗胡,中譯為“視算科技”或“硅 圖”)公司的創(chuàng)始人吉姆·克拉克(Jim Clark)在美國(guó)加州設(shè)立了“Mosaic Communication Corporation”。
Mosaic 公司成立后吩坝,由于伊利諾伊大學(xué)擁有 Mosaic 的商標(biāo)權(quán)毒姨,且伊利諾伊大學(xué)已將 技術(shù)轉(zhuǎn)讓給 Spy Glass 公司,開(kāi)發(fā)團(tuán)隊(duì)必須徹底重新撰寫(xiě)瀏覽器程式碼钉寝,且瀏覽器名 稱(chēng)更改為 Netscape Navigator弧呐,公司名字于 1994 年 11 月改名為“Netscape Communication Corporation”,此后沿用至今嵌纲,中譯為“網(wǎng)景”俘枫。
微軟的 Internet Explorer 及 Mozilla Firefox 等,其早期版本皆以 Mosaic 為基礎(chǔ)而開(kāi)發(fā)逮走。 微軟隨后買(mǎi)下 Spy Glass 公司的技術(shù)開(kāi)發(fā)出 Internet Explorer 瀏覽器鸠蚪,而 Mozilla Firefox 則是網(wǎng)景通訊家開(kāi)放源代碼后所衍生出的版本。
JavaScript 發(fā)展史
JavaScript 作為 Netscape Navigator 瀏覽器的一部分首次出現(xiàn)在 1996 年师溅。它最初的設(shè)
計(jì)目標(biāo)是改善網(wǎng)頁(yè)的用戶體驗(yàn)茅信。(與用戶進(jìn)行交互,在此之前都是靜態(tài)頁(yè)面)
作者:Brendan Eich
起初 JavaScript 被命名為 LiveScript墓臭,后因和 Sun 公司合作蘸鲸,因市場(chǎng)宣傳需要改名 JavaScript。后來(lái) Sun 公司被 Oracle 收購(gòu)窿锉,JavaScript 版權(quán)歸 Oracle 所有酌摇。
瀏覽器組成
- shell 部分:用戶可以操作的部分膝舅,比如菜單、按鈕等
- 內(nèi)核部分:此部分用戶看不到
1)渲染引擎:負(fù)責(zé)元素的渲染
2)JS 引擎:執(zhí)行 JS 代碼
3)其他模塊:(負(fù)責(zé)異步等)
JS 引擎
2001 年發(fā)布 ie6妙痹,首次實(shí)現(xiàn)對(duì) js 引擎的優(yōu)化铸史,在此之前瀏覽器只能執(zhí)行 20 行以內(nèi)的 JS 代碼
2008 年 Google 發(fā)布最新瀏覽器 Chrome,它是采用優(yōu)化后的 javascript 引擎怯伊,引擎代號(hào) V8琳轿,因能把 js 代碼直接轉(zhuǎn)化為機(jī)械碼來(lái)執(zhí)行,進(jìn)而以速度快而聞名耿芹。
通常情況下需要將 JS 代碼轉(zhuǎn)為 C 代碼再轉(zhuǎn)換為匯編代碼最后轉(zhuǎn)為機(jī)械碼執(zhí)行
后 Firefox 也推出了具備強(qiáng)大功能的 js 引擎
Firefox3.5 TraceMonkey(對(duì)頻繁執(zhí)行的代碼做了路徑優(yōu)化)
Firefox4.0 JeagerMonkey
JS 解釋型語(yǔ)言特色
編譯型語(yǔ)言 | 解釋型語(yǔ)言 | |
---|---|---|
原理 | 通篇翻譯后崭篡,生成翻譯完的文件,程序執(zhí)行翻譯后的文件 | 看一行執(zhí)行一行吧秕,不生成特定的文件 |
代表語(yǔ)言 | C | JavaScript |
優(yōu)點(diǎn) | 執(zhí)行速度快 | 可以跨平臺(tái) |
缺點(diǎn) | 不能跨平臺(tái) | 速度慢 |
js 是解釋性語(yǔ)言: 不需要編譯成額外的新文件琉闪,直接通過(guò)解釋其逐行執(zhí)行
Java 為特殊的編譯型語(yǔ)言
java 先通過(guò) javac,編譯成.class 文件砸彬,通過(guò) jvm(Java 虛擬機(jī))進(jìn)行解釋執(zhí)行 .java→javac→編譯→.class→jvm→解釋執(zhí)行
Java 的跨平臺(tái)是通過(guò)不同操作系統(tǒng)上有不同的 JVM 來(lái)實(shí)現(xiàn)的
JS 的異步性
<link rel = “”> 是異步加載
單線程:同一時(shí)間只能做一件事 js 引擎是單線程 (同一時(shí)間做很多事叫多線程)
同步及為同一時(shí)間只能做同一件事颠毙,異步即為同一時(shí)間可以同時(shí)做多件事
輪轉(zhuǎn)時(shí)間片
js 采用輪轉(zhuǎn)時(shí)間片的方式來(lái)給使用者達(dá)到異步的效果
輪轉(zhuǎn)時(shí)間片即為將時(shí)間拆分成若干片段,每一片段用來(lái)執(zhí)行某一件事的一小部分砂碉,進(jìn)行不斷的切換蛀蜜,但是切換的速度特別的快,人們感知不到這種切換增蹭,所以就會(huì)感覺(jué)是在同時(shí)執(zhí)行
ECMA (歐洲計(jì)算機(jī)制造聯(lián)合會(huì))
為了取得技術(shù)優(yōu)勢(shì)滴某,微軟推出了 JScript 、CEnvi 推出 ScriptEase滋迈。都是與 JavaScript 同樣可在瀏覽器上運(yùn)行霎奢,為了統(tǒng)一規(guī)格 ECMA 推出了同一的標(biāo)準(zhǔn), JavaScript 兼容于 ECMA 標(biāo)準(zhǔn)饼灿,因此也稱(chēng)為 ECMAScript
其中標(biāo)準(zhǔn)是指在任何環(huán)境下通用的標(biāo)準(zhǔn)