iThome
身為JavaScript之父Brendan Eich說:「總是押寶JavaScript就對了!」他表示,JavaScript剛出現時,被批評無法建構豐富的網路應用程式,而後又被說執行速度緩慢,接著被指稱無法支援多核心或是GPU運算,然而這些預測沒有一次正確,因為JavaScript不停的在進步。而這樣的進步讓JavaScript歷久不衰,根據軟體公司TIOBE的開發語言排名報告,直譯式腳本語言JavaScript一直是受歡迎的前10名,2015年9月更晉升到了第7名、緊追在PHP之後,其重要性不言而喻。
雖然JavaScript是個擁有20年歷史的前端語言,但是隨著時間的發展,語法越來越豐富,並從前端走到了後端應用,出現了如Node.js等框架。近期更在2015的6月釋出ES6(ECMAScript 6)版本,新增了多項語法,使JavaScript成為更方便也更現代的開發語言,各大瀏覽器與開發框架也紛紛宣布開始支援。
由於用來規範JavaScript的標準為ECMA-262,因此又被稱為ECMAScript,並由TC39(Technical Committee)共同維護。而事實上,JavaScript只是其中一種ECMA-262標準的實作語言而已,其他如TypeScript、LiveScript或是CoffeeScript也都屬同家。這個可說是主宰目前Web平臺開發語言的標準ECMA-262,其發展歷史可說是精彩萬分,制定的方向隨著科技公司勢力消長而改變,各家無不想盡辦法讓標準更「適合」自己,因為掌握了ECMA-262的主導權,等同於掌握接下來前端平臺的關鍵技術。
不過,ECMA-262的歷史卻要反過來從JavaScript講起,Brendan Eich在1995年5月花了10天,為當時任職的網景(Netscape)公司設計了用於瀏覽器的前端語言,在12月的時候與當時還未被甲骨文併購的昇陽公司合作,將其正式更名為JavaScript,為的是借Java當時日正當中的名聲,作為行銷的賣點,並在1996年發布的Netscape Navigator 2.0瀏覽器中,正式支援。
將JavaScript操作為給非程式人員使用的腳本語言的行銷策略非常成功,並且因為方便開發所被許多網頁廣為採用,而微軟也不甘示弱的在1996年8月也發表了與JavaScript相容的JScript,在IE(Internet Explorer)瀏覽器上支援,想與網景打對臺,網景為了讓JavaScript成為國際標準一統瀏覽器腳本語言,在1996年11月將其貢獻給資訊與通信系統的ECMA國際(European Computer Manufacturers Association International)非營利標準組織,ECMA規範了許多資訊科技的標準,諸如CD-ROM、C#以及JSON等,其中編號ECMA-262便是用來定義JavaScript的標準,後來JScript也為其實作語言之一。
ECMA-262是一套規範開發語言功能的標準,又稱為ECMAScript標準,JavaScript正是遵循這個標準的所制訂出來的語言,目前已經推出第6版,想要知道JavaScript的未來發展,只要盯緊ECMAScript網站的最新資訊就能掌握。
ECMAScript在瀏覽器之戰中出生
微軟仗著強勢的Windows作業系統,以免費贈送IE的方式打擊需要付費的Netscape Navigator,並將作業系統的營收挹注開發IE所需的成本,雖然一開始IE的功能不足,消費者還是願意花錢購買網景的瀏覽器產品,但是到了IE 3.0,微軟的瀏覽器技術逐漸成熟,而且,微軟還在Windows作業系統的伺服器版本中,免費贈送伺服器軟體,像是IIS(Internet Information Server),從各方面打擊網景的產品線,導致網景嚴重虧損,並在1997年第4季開始大幅度裁員。
網景深知大勢已去,瀏覽器市場已被IE壟斷,因此在1998年2月,為了不讓瀏覽器的發展受困於公司的商業政策下,由網景支助Brendan Eich等網景員工成立Mozilla基金會。
雖然微軟在2006年被控反托拉斯法敗訴後,同意賠償網景7.5億美元,但實則也正象徵微軟的勝利,從2001年開始,IE6市占率日正當中高達95%,但也由於當時在瀏覽器市場微軟毫無競敵,ECMAScript的制定進度遭到擱置。
ES2在1998年釋出,在隔年釋出ES3,但是到了制定ES4時,微軟已在瀏覽器之爭勝利,對於更新ECMAScript標準顯得意興闌珊,況且也沒有競爭的標準提案出現,因此本來預定要在2003年釋出的ES4便被擱置了。直到2005年,Brendan Eich與Mozilla以非營利的角色,重回ECMAScript制定小組TC39的行列,並且Ajax技術開始盛行,標準的制定才開始有所進展。
開發需求加快ECMAScript制定進程
在Adaptive Path創辦人Jesse James Garrett提出了Ajax白皮書,以JavaScript與XML技術達到非同步資料傳輸,使得Web應用程式得以在背景載入更新網頁的內容,而這項技術出現後,使得JavaScript更被廣為採用,並且出現了許多開源的函式庫,諸如jQuery、Prototype以及Dojo等等,助長了JavaScript生態系的社群發展。
Web平臺對於JavaScript日漸倚重,使用者對於功能的需求,2007年,ES4標準制定再度步上軌道,不過,ECMAScript的制定,因為多方角力仍未有太長足的前進。當時尚未被Adobe併購Macromedia,積極的想影響ES4的制定,因為其腳本語言ActionScript 3也是ECMAScript的實作腳本語言之一,Macromedia想將其為ActionScript開發的虛擬機器Tamarin綁進標準之中,但是由於ActionScript 3的目的與Web平臺的使用太過背離,因此當時ES4的提案被Yahoo以及微軟等成員否決。
另外,ES4欲新增的語法當中,還有名稱空間(Namespace)、封裝(Package)、類別(Class)、產生器(Generator)、模組(Module)以及解構賦值(Destructuring)等語法,Brendan Eich與其他TC39的成員也都拒絕未經足夠的評估,便貿然讓這些功能加入ECMAScript語法中,因為這類適用大規模開發(Programming in the Large)的語法,很容易破壞腳本語言的特性。
ES4被否決後,2009年,TC39最後採取了折衷的做法,讓ES3的改良版3.1先行上路,這個版本修補了ES3已知的問題,開特例而增加嚴格模式(Strict Mode)以及支援JSON格式,並重新命名為ES5。而當年的ES4就順延成了今年2015年6月上線的ES6 Harmony(和諧)。
現在負責制訂ECMAScript標準以及實作的TC39成員,包含了開發瀏覽器的組織與企業Mozilla、Google、微軟以及Apple,另外,jQuery基金會、eBay、Intel以及學術單位也都是成員之一。現今的技術也影響著ECMAScript的制定,例如JavaScript的應用從前端到了後端,特別是在Node.js出現後,這樣的應用方式更是盛行,框架具備JavaScript引擎,便能使JavaScript脫離瀏覽器,執行獨立的應用程式,而ES6中模組新設計,也同樣必須符合Node.js的需求才行。
ES6標準加入了類別、產生器與模組等新功能,讓開發者更加方便,同時也加入詞法作用域(Lexical Block Scoping)以及承諾(Promise)語法讓變數範圍以及運算流程更加明確,不過整體來說,ES6的支援不影響網頁使用者,而是針對後端開發者的更新。
熱門新聞
2024-12-24
2024-12-22
2024-08-14
2024-12-20
2024-11-29