JavaScript 是如何成長爲一門普遍使用的編程語言

時間回到 1999 年,若是預測 20 年後 JavaScript 會成爲世界上最流行的編程語言之一,也許你會懷疑。由於當時 JavaScript 沒法完成專業編程語言可以完成的工做,甚至不是一門嚴謹、正式的編程語言。當時有不少成熟的工具供 Web 開發人員使用。好比:Java、PHP 等。前端

在 1995 年,開創了網景瀏覽器的網景公司以爲應該有一種更簡單的語言被創造出來,用於解決瀏覽器和用戶的交互問題。當時的網景正處於和微軟的市場競爭中,與此同時開啓了與 Sun 公司戰略合做。他們聘請了 Brendan Eich 來研究這項工做,最終在 10 天內完成了 JavaScript 初版。起初,Brendan Eich 是想研究 Scheme 語言做爲網頁腳本語言的可能性。可是公司但願創造一種看起來像 Java,可是比 Java 簡單的語言,這也是爲何叫 JavaScript 的緣故。程序員

早期的 JavaScript

在最初的五年,JavaScript 一直是那些未能具有 Java 編程能力人員的入門選擇。他們包括業餘愛好者,用來作簡單的功能;網頁設計師之類的新技術工做者,讓網頁看起來更好看,好比實現比 <blink> 標籤更精緻,比 GIF 動圖更現代化的功能。數據庫

在專業領域,JavaScript 主要充當膠水語言的做用,實現更復雜的網頁交互設計,好比:交互按鈕、彈出菜單、頁面特效等。不久以後,JavaScript 被大量使用於鼠標點擊,而後觸發圖像的變化之類的功能。編程

雖然開發人員認爲,實現一個按鈕動做,須要將代碼分發到每一個人的瀏覽器去執行,是不合理的。可是不多人想要去對 JavaScript 作進一步的更新改造。由於大多數程序員更喜歡用服務器端編程語言去實現 JavaScript 代碼。若是說讓 JavaScript 代替服務器端編程語言作這些事情,當時的人們會以爲很荒謬。就像要用 Excel 代替數據庫實現存儲過程同樣。瀏覽器

有限領域的應用

今天人們批評 JavaScript,一般是由於這門語言的侷限性,好比:弱類型、笨重的 DOM 對象,== 和 === 比較的混亂等等。可是這些不是 JavaScript 早年看起來糟糕的緣由。即便語言糟糕,可是在合適的時間出如今合適的領域,也會讓一門語言變得相當重要。JavaScript 是全部瀏覽器都支持的惟一語言,就像 Web 要統領整個世界同樣,它在合適的時間出如今了合適的領域。安全

當時真正限制 JavaScript 的是它有限的功能,好比:沒法直接訪問文件系統、顯示器或任何硬件。另外,JavaScript 不能夠操做 Web 服務器的任何內容,例如存儲在數據庫中的用戶列表或產品數據等,也不能夠在服務器端運行業務邏輯。只能應用於本身有限的領域,增長網頁的交互特效。服務器

XMLHttpRequest 的出現

微軟實現了 JavaScript 的突破。今天的微軟,是開源領域重要的公司之一。可是,當時的微軟是反開源的戰士,以「擁抱、擴展和消滅」的理念戰勝競爭對手。網絡

當時,微軟的一個團隊正在研究如何爲 Outlook 實現響應更快的 Web 前端。他們構建了一個叫 Outlook Web Access 的產品。微軟的目標相對保守,但願開發一個能夠在瀏覽器中瀏覽郵件的閱讀器,它不須要每隔幾秒就要刷新整個頁面,而是在後臺能夠檢查郵件是否更新。在如今看來,十分簡單。但當時 Gmail 尚未誕生,谷歌公司也才成立幾年。編程語言

微軟的團隊用 XMLHttpRequest 實現了與服務器的交互。使得 JavaScript 能夠發出 Web 請求,這樣網頁就能夠利用 Web 服務器的全部資源,好比數據庫、執行服務器計算、安全測試、安全驗證等等。同時也實現了頁面請求在後臺運行。工具

顯然早期的 XMLHttpRequest 不是完美的,好比它具備大小寫不一致的奇怪命名方法,使得 JavaScript 同樣區分大小寫的語言變得麻煩。另外只能發送和接收 XML 信息。然而,一般狀況下,信息能夠是任何普通文本,HTML 代碼塊,序列化爲 JSON 的 JavaScript 對象。其實,最大的問題是 XMLHttpRequest 依賴於 ActiveX,使得它只能在 Windows 計算機上運行,並且只能在 Internet Explorer 中運行。

可是這些缺陷並無阻止它的發展,在短短几年內,其它瀏覽器提供了本身對 XMLHttpRequest 的相同實現,並且不依賴於 ActiveX。雖然微軟首先建立了 XMLHttpRequest,可是在其 Web 開發中對這項技術的應用速度比較慢,在基於 Web 的電子郵件系統 Hotmail 中使用猶豫不決。相反,谷歌一直在使用 XMLHttpRequest,並在 2004 年推出 Gmail,2005 年推出谷歌地圖。

通往現代的道路

XMLHttpRequest 是改變 JavaScript 的關鍵因素,此後也陸續有幾回關鍵節點。

多年來,JavaScript 發展緩慢,問題在於,市場領先的瀏覽器 Internet Explorer 是隨着操做系統升級,也就意味着升級的速度比較慢。開發人員被迫要檢查不一樣瀏覽器的版本,從而試圖解決兼容問題。

2006 年,開發人員經過 jQuery 的形式得到了解決方案,雖然今天 jQuery 有點過期了,可是在 10 年前,若是想更快的解決瀏覽器兼容,把更多的時間花在構建功能上,它是必不可少的工具。

2008 年,谷歌發佈了一款名爲 V8 的新的 JavaScript 引擎。像 jQuery 提供了普遍的瀏覽器兼容方案同樣,V8 帶來了極高的性能。並且它是一個獨立的開源項目,其它的項目均可以使用它。在以後,爲 Node.js 和 Electron 的出現奠基了基礎。

同年,HTML5 第一份正式草案公佈。雖然 HTML5 自己不是關於 JavaScript 的,可是與新的 JavaScript API 配合使用,使得開發人員擁有了存儲本地數據、管理瀏覽器歷史記錄、使用音頻和運行後臺工具的能力。再一次縮小了 Web 應用和桌面應用之間的差距。

現代的 JavaScript

JavaScript 的成功是其在瀏覽器中的特殊地位的必然結果,仍是純粹是運氣好?很差說,不過大部分時間 JavaScript 都不是人們最愛的語言。可是它的發展證實了決定新技術是否能夠走下去,是靠它的影響力。若是一門語言它的受衆足夠廣,即便是開始作的很差,也沒有關係,在實踐中它會變得愈來愈好。

JavaScript 的將來延續了快速發展的道路。咱們在 Web 服務器上能夠運行 JavaScript(Node.js),而且能夠構建桌面應用(Electron)。進一步的發展,如 Typescript 能夠編譯成純 JavaScript,爲開發人員提供了構建大型應用的工具。並且在將來,WebAssembly 可能會完全打破語言的限制,讓開發者能夠搭載 JavaScript 引擎來使用他們任何想要使用的更高級別的語言。

須要認可的是,JavaScript 是偉大的語言之一。Brendan Eich 將 JavaScript 放入了網景瀏覽器,而咱們把整個世界放入了瀏覽器,構成了現代網絡。

關注公衆號「展白說」,獲取更多有價值的內容。

相關文章
相關標籤/搜索