除了枯燥的看看題解,做做題外,偶爾還做做執行個體,放鬆放鬆心情.前段時間也擺弄過Google Engine App(下簡稱GEA),以前依次在上面部署過Python,Java的應用,不過還真沒怎麼做真正的開發,一來環境不熟悉,二來功底不夠.忽聞AppengineJS發布馬上部署了一個,欣喜若狂的打算做個JavaScript(下簡稱JS)應用,不過靜下心來,發現很多問題.
為什麼不做JavaScript服務端開發
- 沒有合適的JavaScript Runtime(JSR ?)
現在JS之所以能夠流行,很大程度上取決於瀏覽器的普及.瀏覽網頁的時候需要計算一道簡單的四則混合運算,你會怎麼做?心算?開啟計算機然後點幾個按鈕?我的方法是在瀏覽器地址欄輸入"javascrit:alert(1+2+4*5);".很方便不是麼.
但是服務端的情況就不容樂觀,除了少數幾個解析器能夠勉強運行單薄的JS文法,似乎很難讓他在服務端大展拳腳.V8?嗯,確實很快,不過還只是個跑在用戶端的小夥子.Node.js?嗯,的確提出了很多特性,不過就拿這些特性想征服服務端的開發還是不容樂觀.RingoJS?JVM的龐大,讓JS無法靈巧的伸展.IronJS?無案例,無圖,無真相.
- 沒有成熟的類庫
你願意在一片荒蕪的土地上開荒,還是在肥沃的農田揮鋤?
JS在用戶端確實意氣風發,jQuery,Prototype,YUI,Ext,Dojo等等.無數的架構,為我們的網頁動態化提出瞭解決方案之道.在這百家爭鳴的日子裡,眾多特性,理念,被提出來,鏈式操作,函數式編程....一片繁華.
反觀JS在服務端的表現,集合操作停留在增刪改,沒有filter,沒有order.字串只能拼接,沒有格式化.檔案讀寫就一個CommonJS標準.資料互動的確得益於JSON的流行,很方便,但是資料存放區似乎又回到了ASP/VBScript時代.
- 標準
就像用戶端瀏覽器對JS的支援參差不齊,服務端對於CommonJS標準也是有待加強.所幸服務端JS沒有跨"瀏覽器"之憂.
- 效率
開發效率頂呱呱的JS在服務端由於缺少類庫的支援,使得服務端開發相比現存的幾個平台(JVM,.NetFX),慢了不止幾個檔次.用戶端就備受詬病的執行效率放到服務端仍舊是一個不可忽視的問題.
為什麼要看好JavaScript服務端開發
- 靈巧
沒人否認JS本身強大的靈活性,強大的自解析,原型鏈和弱類型衍生出的種樣繁多的開發方式.實在是讓人愛不釋手.
- 普及
JSON確實有XML不可比擬的潛質,體積瘦小,方便傳輸.眾多語言中都有支援.用戶端無需外掛程式就能原生解析.還有什麼比這更棒的麼?
- 活躍的社區
一個籬笆三個樁,一個好漢三個幫.活躍的JS社區不會甘心JS止步與用戶端,必然會向服務端虎視眈眈.
AppengineJS使用一段時間後有感而發.
原文地址: http://www.macgoo.com/myblog/archives/166/