JavaScript/ECMAScript的起源與瀏覽器之戰
➤ JavaScript起源
隨著網際網路的發展及Netscape瀏覽器市場份額的高佔有率,Netscape(網景通訊公司,Netscape Communications Corporation)發現,瀏覽器需要一種可以嵌入網頁的指令碼語言,來讓瀏覽器控制網頁的行為。
當時的網速很慢,而網頁卻變得更大、更復雜。在瀏覽器上如果沒有嵌入指令碼語言,僅是驗證表單欄位是否有效就要與伺服器進行多次互動,如果在與伺服器互動多次後,話很多時間等待緩慢的網路資料傳輸,結果被告知某個欄位不正確,會讓人很痛苦。諸如此類的情況,讓客戶端指令碼語言成為了亟需。
當時就職於Netscape的Brendan Eich(布蘭登·艾克)開始著手為即將在1995年釋出的Netscape Navigator 2.0開發一款稱為LiveScript的指令碼語言。因為當時Netscape和Sun為合作關係,且Sun公司的java語言釋出後推廣非常成功,為了搭上被媒體炒得火熱的Java的順風車,在釋出前改名為JavaScript。
1995年12月Netscape和Sun聯合釋出JavaScript語言,並在釋出後得到了快速的發展,大大提高了上網體驗,成為web中的必要元件。Brendan Eich被稱為JavaScript之父。
➤ 瀏覽器之戰
1996年3月釋出的Netscape Navigator 正式內建了javascript。同年,微軟在Internet Explorer 3.0 中加入名為JScript的JavaScript實現(命名為JScript是為了避開與Netscape註冊的JavaScript的相關授權問題),由於微軟在其windows系統中自帶IE瀏覽器,且免費使用(當時網景瀏覽器是收費的),使得IE3.0很快被使用者所接受。
Internet Explorer 4.0的釋出,IE在穩定上超過了網景瀏覽器,網景與微軟在瀏覽器的競爭中逐漸處於下風,1999年網景瀏覽器市場份額被微軟IE趕超。
1998年1月,在瀏覽器市場失利的情況下,網景開始開展Mozilla開源專案(即現在的Mozilla),網景寄望透過開放 Netscape Communicator 4.0 的原始碼,使其成為有成就的開源計劃。後來釋出了FireFox瀏覽器,與IE競爭,繼續促進瀏覽器的發展,直到2008年穀歌釋出Chrome瀏覽器。
經過十來年的競爭,Chrome在瀏覽器全球市場上取得了絕對領先的地位,直至現在市場佔有率為62%左右,遠遠的超過了Safari、Edge、IE、FireFox、Opera、UC、Brave等瀏覽器。
瀏覽器市場佔有率檢視:
➤ ECMAScript標準化
1996年,微軟JScript的釋出,便出現了3個不通同的JavaScript的實現:NetScape Navigator 的JavaScript、IE的JScript和ScriptEase中的CEnvi,由於沒有統一標準規定JavaScript的語法和特性,三個不同版本並存,肯定會存在相容性問題。隨著指令碼語言的發展及業界的日益關注和擔心,JavaScript的標準化問題便提上了議程。(也有說法是網景為了避免與微軟在瀏覽器指令碼語言主導權競爭中失利,而受制於微軟,1996年11將Javascript提交給ECMA)。
1996年11月,ECMA(European Computer Manufacturers Association,歐洲計算機制造商委員會)基於NetScape的JavaScript和JScript的實現開始這指令碼語言規範的制定,成立(指定)39號技術委員會(TC39,Technical Committee 39)來制定和稽核JavaScript的標準,成員由業內各大公司(NetScape、微軟、Sun、Borland及及其他關注指令碼語言發展的公司)派出的程式設計師組成。該委員會定期開會,所有的會議記錄、郵件討論都是公開的。
1997年6月,ECMA釋出262號標準檔案(ECMA-262)第一版,也是ECMAScript 1。至於為什麼不叫JavaScript,一方面由於商標,Java是Sun公司的商標,根據一份授權協議,只有Netscape公司可以合法地使用JavaScript這個名字,且被Netscape公司註冊為商標;另一方面也是想體現這門語言的制定者是ECMA,不是Netscape,這樣有利於保證這門語言的開放性和中立性。而JavaScript和JScript一樣是ECMAScript作為標準的指令碼語言的一個實現(後來還有ActionScript),只是有了標準後JScript、JavaScript更趨一致,名稱的差別也就漸漸變得沒必要,所以JavaScript這個名字被廣泛接受。
參考:
- ECMAScript® 2018 Language Specification
- JavaScript語言的歷史
- JavaScript高階程式設計·第三版