Node.js 創始人:Javascript 容器是簡化伺服器抽象的“先驅”踐行者
技術編輯:MissD丨發自 思否編輯部
公眾號: SegmentFault
近日,Node.js 創始人 Ryan Dahl 在社群以“JavaScript Containers”為題發文談論了自己對 Javascript 容器的看法 —— Javascript 是通用指令碼語言的“未來”,而 Javascript 容器則是簡化伺服器抽象的“先驅”踐行者。
眾所周知,大多數伺服器程式都執行的是 Linux 系統,它們由一個檔案系統、一些可執行檔案、一些共享庫組成,它們可能與 systemd 或 nsswitch 等系統軟體介面。
但由於伺服器軟體通常依賴於許多系統資源和配置,因此在過去部署它一直是一項挑戰。而 Linux 容器的出現,就很好的解決了這個問題。特別是 Docker 進一步讓 Linux 容器的使用得到普及後,作業系統級的虛擬化為分發伺服器軟體提供了極好的機制,每個容器映像都是一個無依賴性的隨時可以執行的軟體包。
Ryan Dahl 表示,儘管是在更高的抽象級別上,但 browser JavaScript 中也依舊能找到類似的封閉環境。直到 2018年,Cloudflare 的 Zack Bloom 推出了 Workers 服務,這才“促使我們思考 JavaScript 本身能否能提供一種新型的自給自足的伺服器容器” —— “我們越能消除不必要的抽象,就越能接近‘The Network Is the Computer’的概念。
JavaScript 是通用指令碼語言的“未來”
Ryan Dahl 認為,技術很難預測,但 World Wide Web (全球資訊網、廣域網)肯定會在 10 年後出現。隨著越來越多的人類基礎設施通過網路應用連線在一起,10 年後 HTTP、HTML、CSS、JavaScript 這些構成網路的標準肯定也會出現。因此,“我相信 JavaScript 將會繼續得到開發和改進”。
我們知道,網路是人類資訊的基本媒介,指令碼語言則像是驅動網路發展的“基石”,這其中,JavaScript 不同於其他程式語言,因為它與這個基礎設施緊密相連。
指令碼語言對於解決許多伺服器端問題很有意義,它允許更快、更便宜地編寫業務邏輯,但大多數正在編寫的程式碼不受計算的限制,而是受生產力的限制 —— 編寫速度和開發人員的金錢成本。
指令碼語言(Python、Ruby、Lua、Shell、Perl、Smalltalk、JavaScript)非常相似,在語法和 API 方面存在差異,但幾乎沒有其他可以與之對比的地方。這一點,相信每一位在 Rust 或 C 中工作過的人都能理解指令碼語言的感受。
Ryan Dahl 總結稱,指令碼語言很有用,但它們幾乎都是一樣的,其中 “JavaScript 的使用要廣泛得多,而且是未來的證明。因此,將 JavaScript視為通用指令碼語言是有道理的”。
伺服器軟體高級別容器:
JavaScript 沙箱
Javascript 中的沙箱並非傳統意義上的沙箱,它是一種語法上的 hack 寫法,指 Javascript 中處理模組依賴關係的閉包。
JavaScript 沙箱本身這個“容器”並非為了解決 Linux 容器所針對的問題,它的出現是其簡單化的結果 —— 最小化了 web 服務業務邏輯的樣板檔案,它與瀏覽器共享概念,並減少程式設計師需要知道的概念(如在編寫web服務時,很可能任何 systemd 配置都只是不必要的樣板)。
提起 JavaScript browser API,相信每個網路開發者都知道,因為 JavaScript 容器抽象是在相同的 browser API 上構建的,所以開發者需要的經驗總量減少了,這恰恰是 Javascript 的通用性降低了其複雜性。
在這個新伺服器抽象層中,JavaScript 取代了 Shell,且比 Bash/Zsh 更適合編寫指令碼。JavaScript 沙箱可以呼叫 Wasm,而非像 Shell 那樣呼叫 Linux 可執行檔案。
綜述
不可否認,JavaScript 是通用的指令碼語言,也正是由於 JavaScript 的普遍性,一種新的類似容器的抽象正在出現 —— JavaScript 容器,它簡化了伺服器。
JavaScript 容器的出現並非意味著 Linux 容器正在“消亡”,這種抽象層次總是有用的。特別是對於編寫的許多“業務邏輯”的開發者來說,當你建立一個網站的時候,或許大多數“web服務”可以通過使用 JavaScript 容器而不是 Linux 容器來簡化。
目前,為了試圖從根本上簡化伺服器抽象,為了進一步探索這些想法,JavaScript 容器或許就是一種“先驅”踐行者。你是否也這麼覺得呢?歡迎在評論區留言互動。
- END -
- 2022 年程式語言趨勢:Swift、Kotlin 熱度持續增長,收入最高的 5 種語言竟是它們
- 6 月 TIOBE 榜單:C 即將超越 Java 進入 Top3,PHP 熱度再下滑
- 雲端計算的未來在哪?破解亞馬遜雲科技增長神話
- Node.js 創始人:Javascript 容器是簡化伺服器抽象的“先驅”踐行者
- SegmentFault 思否加入 ONES
- 36氪首發 | ONES 收購技術問答社群SegmentFault 思否,為ONES第三次併購
- 歐盟 DMA 法案洩露:蘋果或將被迫對 Siri、App Store、瀏覽器等服務做徹底整改
- Rust 公佈 2024 年路線圖:重點涉及三個方向
- 思否開源專案推介丨docsify:一個神奇的文件網站生成器
- 思否獨立開發者丨@一隻碼:致力於技術變現,並由此走向自由的光明之路
- 思否開源專案推介丨簡閱:提升閱讀體驗的瀏覽器擴充套件
- AWS x 思否 | 2020:AI 在雲端,乘風破浪!
- 思否開源專案推介丨DataX Web:簡潔易用的離線資料同步工具
- 思否有約丨夏磊:拒絕做只會“複製-貼上”的程式設計師