1. 程式人生 > >警惕Java,歡迎Javascript

警惕Java,歡迎Javascript

一段 andro 在那 squirrel 編程風格 神奇 語法 comm 多個

最近Oracle控告搜索巨人Google,宣稱其Android智能手機操作系統上的Dalvik虛擬機侵犯了Java專利,這很自然讓很多的開 發人員感到擔心。但大多數分析指出,這場訴訟對絕大多數Java開發人員將不會有多少的影響,但有些程序員卻驚恐不安,他們已經開始尋找一種可替代的語言 了。如果你也是這樣,你是否考慮過轉向JavaScript?

“什麽?”,你也許會詫異。任何一個開發人員或多說少都知道Java跟JavaScript幾乎沒有任何的關系。Netscape最初是想把這個跨 瀏覽器的腳本語言叫做LiveScript,但Sun微系統公司說服他們使用JavaScript這個名字——他們的想法是要把JavaScript當成 一種HTML和Sun的全功能的Java之間的橋梁。

但如果Sun漠視JavaScript的存在而認為Java將成為Web上的真正語言,那它就大錯特錯了。Java最終發現它的用武之地只是作為一種服務器端語言,JavaScript在瀏覽器裏給了它致命打擊。如今,像CommonJS和Node.js這樣的項目把JavaScript擴展到了更廣的地方,使它也能夠扮演Java在數據中心上的傳統角色。在這樣一種神奇的角色轉換中,JavaScript正在成為一種多才多藝的,強大的,功能齊全的Web語言,而Java卻日益顯現淪為昔日COBOL語言的結局。

橋接客戶端/服務器端

估計經歷了那個年代的人都能回憶起當時以瀏覽器為平臺的Java applet的那種笨拙,醜陋,激不起興趣的樣子,它更多給人帶來的是煩惱,而不是真正的用處。即使Sun最近的在富(rich)互聯網應用技術的嘗試 ——JavaFX,也沒有使其在對抗其現有的競爭對手(包括Adobe Flash,微軟Silverlight)的進程上前進多少。客戶端Java,看起來在出生之日就已被判了死刑。

相似的,服務器端JavaScript(SSJS)也從來沒制造出多少火花。早在1996年,Netscape Enterprise Server就支持SSJS,但它一種昂貴且有專利的產品。它很快就被開源的Apache server搶光了所有的市場,SSJS也隨著它消失了。

然而,在那些日子裏,JavaScript的確成為了最適合Web頁面的輕量級腳本語言。對比一下那個時期新興的其它語言,例如Perl和 Python,JavaScript運行緩慢而且語法怪異,只有有限的功能支持。更糟糕的是,每個廠商對其的實現還各不相同,導致開發人員浪費時間寫一些 修改補丁和相關處理。

至今,JavaScript已經走了一段很長的路。獨立的、開源的JavaScript引擎的出現——包括谷歌的V8,Mozilla的 SpiderMonkey,和WebKit的SquirrelFish Extreme——意味著任何人都可以在自己的代碼裏嵌入一個標準兼容的JavaScript解釋器,無需你從頭來開發它們。目前這三個項目正處在一場猛 烈的性能競賽中,每種引擎的性能都在穩定的進步。隨著這些底層技術高速的成熟發展,JavaScript展現出了一種Java從未實現的態勢:打破傳統的 領域壁壘,貫通服務器端和客戶端。客戶端的Java從未景氣過,但服務器端JavaScript卻殺了回來。.

服務器端JavaScript越來越受重視

現代的JavaScript引擎都能夠單獨的獨立運行,這使得它們給SSJS提供了天然的便利。但目前JavaScript還只是主要的作為一種瀏 覽器端的語言,這使得它缺少一些開發人員們期望的在其它環境中的功能特征。例如,客戶端的開發人員通常是通過互聯網加載單獨的.js文件,而服務器端的開 發人員需要一種更常用的方式,使代碼程序能打成包。同樣,JavaScript缺少常見的系統功能標準庫,相比較而言,像C和Java這樣的更加面向系統 的語言在這方面要豐富的多。

CommonJS項目正試圖解 決這些問題。它的目標就是要創造出一套開放的、標準的API,提供諸如二進制對象處理,並行線程,文件、流、和套接字 I/O,系統日誌處理等功能接口。除此之外,它還提議了一套代碼和相關命名空間的模塊格式標準。雖然這還是個很年輕的項目,但它的終極目標卻是要讓 JavaScript開發人員在寫代碼時有一個CommonJS規範,寫出的程序在不作任何修改的情況下可以在任何CommonJS兼容的平臺上運行—— 不論底層的JavaScript引擎和操作系統是什麽。

然而,更令人興奮的卻是Node.js這個 項目,它和CommonJS的初衷很相似,而且實現了一些CommonJS API。可是,它卻把SSJS的概念提升到了一個新的高度。它的最重要的一項革新就是實現了針對服務器端開發的面向事件的編程模型。這意味著不僅僅 Nodo.js編程會讓客戶端的JavaScript開發人員感覺到得心應手——因為事件驅動模型是他們的開發規範,同時對於那些嚴重依賴於並行操作來支 持多個並行用戶的Web應用程序也是理想的選擇。

如果這聽起來像有一只手在向你招喚,請看看Node.js 編程例子。這個完全等效的“Hello,world!”程序是只用了6行JavaScript代碼的完全的HTTP服務器端實現。

JavaScript:Web之王?

不要奢望JavaScript能把Java從唯我獨尊的寶座上拉下來。CommonJS和Node.js都還有很多的功課要做,一種精確的對這兩個 項目的描述應該是:試驗品。對於更多的改進,例如特定的優化和管理工具等,就像Oracle對JRockit JVM所做的這方面的工作將會使Java成為企業軟件開發的一個很有吸引力的平臺。

然而,JavaScript作為服務器端開發語言所帶來的好處顯而易見。它能夠讓Web開發人員用一種單一的語法實現所有的程序,去除了典型Web 應用上的混亂和混淆。JavaScript的運行效率的改進日新月異,這是開發人員最看重的。而JavaScript語言本身也發展成熟,成為一種不錯的 語言,具有同時支持面向對象和函數的編程風格的特征。

還有另外一點需要註意:JavaScript是完全免費和開放的,它由行業內廠商組成的ECMA標準委員會維護。ECMAScript工作組過去處 於停滯狀態,但它已經克服了種種困難,使JavaScript繼續得到高速的發展。而同時,Java,一邊假裝開放,有不倫不類的JCP(Java Community Process)負責,一邊又受到Oracle潛在的法律訴訟的威脅。如果Oracle自己不能意識的現在的形勢,那我相信開發人員們可是清清楚楚的看清 楚了。

警惕Java,歡迎Javascript