JavaScript 正在蠶食著開發(fā)領(lǐng)域,抑或是開發(fā)領(lǐng)域正在蠶食著 JavaScript?
好吧,如果你相信 Parse 公司的聯(lián)合創(chuàng)始人兼首席技術(shù)官 Kevin Lacker 的話,現(xiàn)在的情況就是這樣的。
在本周于都柏林舉辦的 Web 峰會(huì)上,Lacker 在它的演講中表示,強(qiáng)大、無處不在的 JavaScript,及其完善的生態(tài)系統(tǒng),會(huì)使得這門語言在未來幾年內(nèi)成為應(yīng)用、網(wǎng)站和服務(wù)器端開發(fā)的默認(rèn)語言。
現(xiàn)代開發(fā)者在近 10 年間的開發(fā)過程中,不得不面對(duì)這三大主要平臺(tái):瀏覽器、服務(wù)器和本地/手機(jī)應(yīng)用。JavaScript 已經(jīng)成為事實(shí)上的 Web 標(biāo)準(zhǔn)語言。而 Lacker 認(rèn)為 JavaScript 正在接手服務(wù)器端開發(fā),馬上就要將觸手伸向安卓及 iOS 上的原生應(yīng)用。
“在瀏覽器中幾乎沒什么可能打亂 JavaScript 一統(tǒng)天下的局面” Lacker 說到,“更有意思的是在服務(wù)器端開發(fā)領(lǐng)域。”
日益流行的 Node.js
Lacker 自己確實(shí)有利益在其中,因?yàn)?Parse 是一家著名的后臺(tái)服務(wù)提供商,他們使用了服務(wù)器端的 JavaScript。Parse 公司在 2013 年被 Facebook 收購(gòu),并在最近幾年內(nèi)成為了 Facebook 開發(fā)過程的關(guān)鍵所在。
Java、C、Python、Ruby、PHP 以及大量 ASP.NET(及其他語言)的衍生物,已經(jīng)成為后端處理中傳統(tǒng)的服務(wù)器語言。
“運(yùn)行在服務(wù)器上編程語言已經(jīng)永遠(yuǎn)是一個(gè)碎片化的市場(chǎng)了。” Lacker 說。
Lacker 可能確實(shí)有其動(dòng)機(jī)在推進(jìn) JavaScript 的發(fā)展,最近幾年中 JavaScript 占領(lǐng)服務(wù)器端開發(fā)領(lǐng)域的趨勢(shì)日益顯著。
在服務(wù)器端安裝 JavaScript 的趨勢(shì)已經(jīng)有一段時(shí)間了,超過 20 多種流行的框架運(yùn)行在其上。SilkJS、MongoDB、Aptana、CouchDB、Domino(IBM)、SAP HANA XS Engine、TeaJS 以及 Opera 都在這段時(shí)間內(nèi)推出了其服務(wù)器端的 JavaScript 框架,在技術(shù)領(lǐng)域廣受歡迎。
然而在服務(wù)器端 JavaScript 領(lǐng)域中最耀眼的明星當(dāng)屬 Node.js。
“如果你想要找工作的話,趕緊學(xué)習(xí) Node.js吧,” Lacker 說。“ Node.js 正在發(fā)生著不同尋常的變化,它正在顛覆傳統(tǒng)的腳本開發(fā)。”
傳統(tǒng)的腳本開發(fā)是這樣的:你有兩個(gè)不同的開發(fā)團(tuán)隊(duì),一個(gè)后端一個(gè)前端。后端團(tuán)隊(duì)處理在服務(wù)器端的開發(fā),使用的是需要編譯的語言(相對(duì)腳本開發(fā)來說),比如 C# 或者 Java。而前端團(tuán)隊(duì)則是在使用 HTML、CSS、JavaScript,以及原生應(yīng)用開發(fā)語言比如 Swift、Object-C 或 Java。
Lacker 的觀點(diǎn)是,開發(fā)人員傾向于使用他們最熟悉的編程語言。而 JavaScript 的流行則意味著,現(xiàn)在的每個(gè) Web 開發(fā)人員都能成為服務(wù)器端開發(fā),而無須從根本上改變其編程方式。
“同一個(gè)工程師團(tuán)隊(duì)使用 JavaScript 和 Node.js,而不是 Java 和 JavaScript,” Lacker 說,“你有一個(gè)巨大的優(yōu)勢(shì),因?yàn)槟阍谑褂媚阋呀?jīng)了解的東西。”
Netflix 和 Paypal 都在使用后端 Node.js、前端 JavaScript 的開發(fā)方法,Lacker 這樣說到。
“每家公司總有人會(huì)寫 JavaScript,幾乎無一例外。” Lacker 說。“在服務(wù)器端驅(qū)動(dòng) JavaScript 前行的力量是不同的……它的優(yōu)勢(shì)在于你可以用更短的時(shí)間完成功能。”
原生應(yīng)用緩慢地接受 JavaScript
Lacker 指出,在 JavaScript 正在蠶食開發(fā)領(lǐng)域這個(gè)論點(diǎn)中,最薄弱的環(huán)節(jié)就是應(yīng)用生態(tài)環(huán)境。最優(yōu)秀的高性能應(yīng)用都是使用原生語言編寫的——在安卓上是 Java,在 iOS 上則是 Object-C / Swift。
但是程序員們?cè)谂瓮粋(gè)通用的開發(fā)語言。HTML5 加上 CSS 和 JavaScript 曾經(jīng)被認(rèn)為是這個(gè)通用開發(fā)語言,不過“混合”應(yīng)用(基本上是把網(wǎng)站“封裝”成原生應(yīng)用)由于性能問題在近幾年開始淡出這個(gè)舞臺(tái),。Lacker 認(rèn)為第一代使用 JavaScript 創(chuàng)建原生應(yīng)用(也就是混合應(yīng)用)的工具——PhoneGap、Sencha、appMobi、Appcelerator——都還不錯(cuò),不過并沒有解決底層的問題。
Facebo 和 Parse 在嘗試解決這個(gè)問題。React Native 是一個(gè) JavaScript 框架,它嘗試創(chuàng)建一套工具和方法,能夠不借助原生語言,只用 Web 技術(shù)來創(chuàng)建動(dòng)態(tài)的原生 app。Xamarin 則是另一家公司,提供了跨平臺(tái)的原生應(yīng)用開發(fā)工具,幫助開發(fā)者在 JavaScript 中調(diào)用 C#。(譯者注:在 Xamarin 中,通過 WebView 控件使用 JavaScript 調(diào)用 C# 只是該框架的很小一部分功能,Xamarin 基本上還是使用 C# 而非 JavaScript 進(jìn)行開發(fā)的。在原始版本中作者將 Xamarin 描述為 JavaScript工具,經(jīng)評(píng)論提醒后已進(jìn)行修正。)
參見:一次編寫,多處運(yùn)行:React Native 引領(lǐng)通用 App 開發(fā)潮流
“在這個(gè)核心領(lǐng)域的編程語言有可能發(fā)生改變的原因之一就是人們?cè)谶@些語言的部署和應(yīng)用上投入了大量的精力。” Lacker 說。
對(duì)于開發(fā)者來說,在當(dāng)下使用 JavaScript 創(chuàng)建一個(gè)完全沉浸式的、動(dòng)態(tài)的原生應(yīng)用依然很困難。如果你提議說使用 JavaScript 來編寫一個(gè)街機(jī)風(fēng)格的游戲,那會(huì)招來人們的嘲笑。JavaScript 在硬件加速、游戲引擎(比如 iOS 上的 Metal)以及圖形支持能力等方面都還沒有準(zhǔn)備好。
JavaScript 作為全平臺(tái)的主導(dǎo)語言
Web 開發(fā)者(依然是開發(fā)者中最多的一支)被綁在了 JavaScript 上。到目前為止它還沒有任何競(jìng)爭(zhēng)對(duì)手。Google 的 Dart 語言曾經(jīng)試圖挑戰(zhàn) JavaScript 的地位,不過 Google 意識(shí)到這不太可能成功,于是把 Dart 設(shè)計(jì)成能夠被編譯為 JavaScript 的語言(就像 CoffeeScript 或者 GorillaScript)。
Lacker 的主要觀點(diǎn)之一,就是 JavaScript 的生態(tài)環(huán)境能夠使得 JavaScript 變得更好,隨之而來的就是大型商業(yè)公司會(huì)逐步使用 JavaScript。生態(tài)環(huán)境使得產(chǎn)品越來越好,而越來越好的產(chǎn)品意味著占領(lǐng)市場(chǎng)。
“其他的編程語言并沒有顯現(xiàn)出這種增長(zhǎng)的勢(shì)頭。” Lacker 說到。
JavaScript 市場(chǎng)的增長(zhǎng)證明了 Lacker 的這一觀點(diǎn)。
4 月份,在 Stack Overflow 的一份調(diào)查中顯示,54.8% 的開發(fā)者在使用 JavaScript。Node.js 同樣占有了 13.3% 的席位。7 月,一家名為 Devpost 的公司指出,HTML 和 JavaScript 目前是在學(xué)生開發(fā)者當(dāng)中最受歡迎的語言(數(shù)據(jù)來自其黑客馬拉松網(wǎng)絡(luò))。最近,Stack Overflow 做出了一份編程語言的情感分析。令人驚訝的是,JavaScript 在討厭比例的排行榜上并沒有排到很高。
“JavaScript 程序員的生態(tài)環(huán)境,以及 JavaScript 的工具正在占領(lǐng)這個(gè)市場(chǎng)。市場(chǎng)也會(huì)反哺產(chǎn)品,讓它變得越來越好。這正是 JavaScript 逐步蠶食著開發(fā)領(lǐng)域的原因。” Lacker 說。
本文的原始版本錯(cuò)誤地將 AngularJS 認(rèn)為是服務(wù)器端語言,現(xiàn)在本文已經(jīng)更正了該問題。
標(biāo)題圖片:“The Real JavaScript Robot”,來自 Flickr 用戶 Ben Alman,CC協(xié)議