JavaScript正在蠶食著開發(fā)領域

2015-12-13 12:10:01來源:伯樂在線作者:Erucy

現(xiàn)代開發(fā)者在近 10 年間的開發(fā)過程中,不得不面對這三大主要平臺:瀏覽器、服務器和本地/手機應用。JavaScript 已經(jīng)成為事實上的 Web 標準語言。而 Lacker 認為 JavaScript 正在接手服務器端開發(fā),馬上就要將觸手伸向安卓及 iOS 上的原生應用。

JavaScript 正在蠶食著開發(fā)領域,抑或是開發(fā)領域正在蠶食著 JavaScript?

好吧,如果你相信 Parse 公司的聯(lián)合創(chuàng)始人兼首席技術官 Kevin Lacker 的話,現(xiàn)在的情況就是這樣的。

在本周于都柏林舉辦的 Web 峰會上,Lacker 在它的演講中表示,強大、無處不在的 JavaScript,及其完善的生態(tài)系統(tǒng),會使得這門語言在未來幾年內成為應用、網(wǎng)站和服務器端開發(fā)的默認語言。

現(xiàn)代開發(fā)者在近 10 年間的開發(fā)過程中,不得不面對這三大主要平臺:瀏覽器、服務器和本地/手機應用。JavaScript 已經(jīng)成為事實上的 Web 標準語言。而 Lacker 認為 JavaScript 正在接手服務器端開發(fā),馬上就要將觸手伸向安卓及 iOS 上的原生應用。

“在瀏覽器中幾乎沒什么可能打亂 JavaScript 一統(tǒng)天下的局面” Lacker 說到,“更有意思的是在服務器端開發(fā)領域。”

日益流行的 Node.js

Lacker 自己確實有利益在其中,因為 Parse 是一家著名的后臺服務提供商,他們使用了服務器端的 JavaScript。Parse 公司在 2013 年被 Facebook 收購,并在最近幾年內成為了 Facebook 開發(fā)過程的關鍵所在。

Java、C、Python、Ruby、PHP 以及大量 ASP.NET(及其他語言)的衍生物,已經(jīng)成為后端處理中傳統(tǒng)的服務器語言。

“運行在服務器上編程語言已經(jīng)永遠是一個碎片化的市場了。” Lacker 說。

Lacker 可能確實有其動機在推進 JavaScript 的發(fā)展,最近幾年中 JavaScript 占領服務器端開發(fā)領域的趨勢日益顯著。

\

在服務器端安裝 JavaScript 的趨勢已經(jīng)有一段時間了,超過 20 多種流行的框架運行在其上。SilkJS、MongoDB、Aptana、CouchDB、Domino(IBM)、SAP HANA XS Engine、TeaJS 以及 Opera 都在這段時間內推出了其服務器端的 JavaScript 框架,在技術領域廣受歡迎。

然而在服務器端 JavaScript 領域中最耀眼的明星當屬 Node.js。

“如果你想要找工作的話,趕緊學習 Node.js吧,” Lacker 說。“ Node.js 正在發(fā)生著不同尋常的變化,它正在顛覆傳統(tǒng)的腳本開發(fā)。”

傳統(tǒng)的腳本開發(fā)是這樣的:你有兩個不同的開發(fā)團隊,一個后端一個前端。后端團隊處理在服務器端的開發(fā),使用的是需要編譯的語言(相對腳本開發(fā)來說),比如 C# 或者 Java。而前端團隊則是在使用 HTML、CSS、JavaScript,以及原生應用開發(fā)語言比如 Swift、Object-C 或 Java。

Lacker 的觀點是,開發(fā)人員傾向于使用他們最熟悉的編程語言。而 JavaScript 的流行則意味著,現(xiàn)在的每個 Web 開發(fā)人員都能成為服務器端開發(fā),而無須從根本上改變其編程方式。

“同一個工程師團隊使用 JavaScript 和 Node.js,而不是 Java 和 JavaScript,” Lacker 說,“你有一個巨大的優(yōu)勢,因為你在使用你已經(jīng)了解的東西。”

Netflix 和 Paypal 都在使用后端 Node.js、前端 JavaScript 的開發(fā)方法,Lacker 這樣說到。

“每家公司總有人會寫 JavaScript,幾乎無一例外。” Lacker 說。“在服務器端驅動 JavaScript 前行的力量是不同的……它的優(yōu)勢在于你可以用更短的時間完成功能。”

原生應用緩慢地接受 JavaScript

Lacker 指出,在 JavaScript 正在蠶食開發(fā)領域這個論點中,最薄弱的環(huán)節(jié)就是應用生態(tài)環(huán)境。最優(yōu)秀的高性能應用都是使用原生語言編寫的——在安卓上是 Java,在 iOS 上則是 Object-C / Swift。

但是程序員們在盼望一個通用的開發(fā)語言。HTML5 加上 CSS 和 JavaScript 曾經(jīng)被認為是這個通用開發(fā)語言,不過“混合”應用(基本上是把網(wǎng)站“封裝”成原生應用)由于性能問題在近幾年開始淡出這個舞臺,。Lacker 認為第一代使用 JavaScript 創(chuàng)建原生應用(也就是混合應用)的工具——PhoneGap、Sencha、appMobi、Appcelerator——都還不錯,不過并沒有解決底層的問題。

Facebo 和 Parse 在嘗試解決這個問題。React Native 是一個 JavaScript 框架,它嘗試創(chuàng)建一套工具和方法,能夠不借助原生語言,只用 Web 技術來創(chuàng)建動態(tài)的原生 app。Xamarin 則是另一家公司,提供了跨平臺的原生應用開發(fā)工具,幫助開發(fā)者在 JavaScript 中調用 C#。(譯者注:在 Xamarin 中,通過 WebView 控件使用 JavaScript 調用 C# 只是該框架的很小一部分功能,Xamarin 基本上還是使用 C# 而非 JavaScript 進行開發(fā)的。在原始版本中作者將 Xamarin 描述為 JavaScript工具,經(jīng)評論提醒后已進行修正。)

\

參見:一次編寫,多處運行:React Native 引領通用 App 開發(fā)潮流

“在這個核心領域的編程語言有可能發(fā)生改變的原因之一就是人們在這些語言的部署和應用上投入了大量的精力。” Lacker 說。

對于開發(fā)者來說,在當下使用 JavaScript 創(chuàng)建一個完全沉浸式的、動態(tài)的原生應用依然很困難。如果你提議說使用 JavaScript 來編寫一個街機風格的游戲,那會招來人們的嘲笑。JavaScript 在硬件加速、游戲引擎(比如 iOS 上的 Metal)以及圖形支持能力等方面都還沒有準備好。

JavaScript 作為全平臺的主導語言

\

Web 開發(fā)者(依然是開發(fā)者中最多的一支)被綁在了 JavaScript 上。到目前為止它還沒有任何競爭對手。Google 的 Dart 語言曾經(jīng)試圖挑戰(zhàn) JavaScript 的地位,不過 Google 意識到這不太可能成功,于是把 Dart 設計成能夠被編譯為 JavaScript 的語言(就像 CoffeeScript 或者 GorillaScript)。

Lacker 的主要觀點之一,就是 JavaScript 的生態(tài)環(huán)境能夠使得 JavaScript 變得更好,隨之而來的就是大型商業(yè)公司會逐步使用 JavaScript。生態(tài)環(huán)境使得產(chǎn)品越來越好,而越來越好的產(chǎn)品意味著占領市場。

“其他的編程語言并沒有顯現(xiàn)出這種增長的勢頭。” Lacker 說到。

JavaScript 市場的增長證明了 Lacker 的這一觀點。

4 月份,在 Stack Overflow 的一份調查中顯示,54.8% 的開發(fā)者在使用 JavaScript。Node.js 同樣占有了 13.3% 的席位。7 月,一家名為 Devpost 的公司指出,HTML 和 JavaScript 目前是在學生開發(fā)者當中最受歡迎的語言(數(shù)據(jù)來自其黑客馬拉松網(wǎng)絡)。最近,Stack Overflow 做出了一份編程語言的情感分析。令人驚訝的是,JavaScript 在討厭比例的排行榜上并沒有排到很高。

“JavaScript 程序員的生態(tài)環(huán)境,以及 JavaScript 的工具正在占領這個市場。市場也會反哺產(chǎn)品,讓它變得越來越好。這正是 JavaScript 逐步蠶食著開發(fā)領域的原因。” Lacker 說。

本文的原始版本錯誤地將 AngularJS 認為是服務器端語言,現(xiàn)在本文已經(jīng)更正了該問題。

標題圖片:“The Real JavaScript Robot”,來自 Flickr 用戶 Ben Alman,CC協(xié)議

關鍵詞:JavaScript