編者按:曾 幾何時,通信網絡曾經活躍過許多協定,那些協定在不同的場景下都有各自的優勢。但是後來 tcp/ip 随着網際網路的崛起而異軍突起,最終形成一統天下的格局。而原本被視為不入流的 web 前端玩具 javascript 現在似乎也在複制着類似的路徑,先是滲透到 web 後端開發,然後甚至開始入侵到桌面了。最流行語言 javascript 會變成程式設計界的世界語嗎?
創 建于 1995年 的 javascript 原本是想給蒼白的網頁在标記以外再增加一點生氣的。但現在它的用處已經遠遠超出了當時的意圖。像 google、facebook 這樣的公司都用 javascript 來開發複雜的、類桌面的 web 應用;自從 2009年 推出了 node.js 之後,它還成為了開發伺服器端最受歡迎的語言之一(連續很多年雄踞最受歡迎程式設計語言)。時至今日,甚至連 web 也容納不下 javascript 的雄才大略了:現在,它正在開始向桌面應用進軍。
electron 是 github 開發的一個軟體開發平台,它可以讓開發者用 javascript 加上 html、css 等 web 技術來建立跨平台(可運作于 windows、mac os x 以及 linux)運作的桌面應用。近日該公司剛剛釋出了第一款完整版的 eletron。但是業界的一些大拿早已用上這一工具來讓 javascript 沖出浏覽器了。
微軟去年釋出的一款代碼編輯器 visual studio code 就是用 eletron 開發的。協作聊天工具的獨角獸 slack 的桌面用戶端也是用 eletron 開發的。初創企業 nylas(以前的 inbox)的整個郵件用戶端都是用 eletron 開發的。甚至 brave 這家由 javascript 創造者 brendan eich 建立的公司也用 electron 開發了一整個 web 浏覽器。
為什麼在開發桌面應用有無數選擇 的情況下那麼多公司會選擇 javascript 呢?不妨想想 javascript 在伺服器端的崛起。node.js 出來以前開發者也已經有了很多開發伺服器端應用的利器了。但是由于開發者可以使用同一門語言來開發前端(浏覽器)和後端(伺服器),使得 javascript 變得非常流行。事實表明,在 web 上采用通用語是很有用的。而 javascript 的無所不在使得将它移植到桌面成為了自然之舉。
面向每一個人開放
許多使用 electron 的公司都在開發開源軟體,也就是說,誰都可以檢視和修改裡面的代碼。而了解你開放的代碼的人越多,可以為其貢獻 bug 修補和新功能的人就越多。通過利用 javascript,這些公司向了解 javascript 但不熟悉 c++ 等傳統桌面程式設計語言的 web 開發者打開了一道大門。
比方說初創企業 jibo 就用 electron 來開發自己的機器人個人助理,因為這支團隊希望第三方替自己的機器人寫軟體時可用更容易些。“我們希望把門檻降到盡可能的低,” jobo 開發者 jonathan ross 說:“是以我們馬上想到應該向遊戲開發者和 web 開發者推銷。”
這也是起初做 electron 的一大原因。electron 原先是做來給開發 atom 當平台用的,後者是 github 建立的一款文本編輯器。github 聯合創始人 chris wanstrath 說,他之是以用 javascript 來做文本編輯器是希望 web 開發者合适的時候能夠對其進行定制。“我自己可以 hack 我的編輯器是一回事,” wanstrath 說:“但是能夠使用别人寫的插件卻要強大得多。”
當然,跑相當于 web 浏覽器的應用也有不好的地方。“跑 electron 應用的負載相當的大,” nylas 的首席前端開發者 ben gotow 說。但是權衡之下還是值得的,因為 electron 能做的不僅僅是提供使用一門流行語言的能力。用 javascript 建立桌面應用使得開發者可以選擇海量的免費代碼庫和架構,免去了大量乏味枯燥的編碼工作。比方說登入系統就不用再寫了,網上有大量開源的身份驗證庫可供選 擇。
“我們僅用 1年 的時間就搞定了郵件用戶端,那是相當驚人的了,” gotow 說。
極客産物
用 web 技術開發桌面應用的想法并不新鮮。adobe 的 air 系統就可以讓開發者利用其 flash 平台開發桌面應用,另一家小公司 appcelerator(現在專注于移動 app 的開發)也曾經提供過利用 html 和 javascript 開發桌面應用的工具。最近又有一支開發者團隊做出了 nw.js,也就是之前 node webkit。
但是到了 2014年 的時候,github 團隊發現所有的可用選擇都沒了,于是他們做了極客都會做的事情:自己寫一個然後釋出給全世界。“我們認為做出的好應用應該給大家一起用,” github 産品 vp kakul srivastava 這樣說。
github electron 團隊的 jessicalord 則說 electron 要比之前的那些工具都要高效。electron 捆綁了 chromium(google 浏覽器 chrome 的開源版),但是對其進行了瘦身。這使得該團隊內建 google 的新功能變得更加容易,因為這樣每次 chromium 釋出新版時他們就不需要對每個部分都要進行測試來看看是否會導緻 electron 功能出問題了。
github 的努力似乎收到了回報。從 2年 前推出項目至今,electron 貢獻者的數量已經超過了 300。其下載下傳量也已經突破百萬大關。但是競争也日趨激烈。nw.js 還在不斷改進,而 facebook 也釋出了自己的 javascript 架構 react native,開發者可以使用後者來開發 windows、xbox 以及 android 等各種平台的應用。
無論開發者最終決定使用哪種架構或者平台,顯然 javascript 都已經在桌面找到了安身之所。對于使用者來說,線上和離線之間的界限早就已經模糊了。現在對于代碼來說也是一樣的。