2010年7月23日 星期五

Ringojs

有一段時間未寫部落格。但不表示這段時間什麼事都沒發生。

這段時間發生了很多事。

首先,在個人工作方面,已經確定要將 javascript 用於自己的產品中。最主要的工具是 YUI 3 和 RingoJS

此外,在 javascript 世界也有很多值得注意的變化。由於我較重視 Server side,CommonJS 的風起雲湧以至最後的雲淡風清讓我感到一點憂心。早先,有志於 Server Side Javascript 的人們成立了 CommonJS 社群,建立 module 的架構,以及可以讓程式相容的 libraries。但在 NodeJS 出現後,NodeJS 瞬間抓出大家的眼光。以致於 CommonJS 的努力讓人們漸漸淡忘。

在這段時間,原本我極感興趣的 Helma-NG 改名為 RingoJS,採用了 CommonJS 的規範。現在它可以說是最符合 CommonJS 規範的 Server Side Javascript 平台了。比 Helma-NG 還讓我喜歡,也成了我工作上的選擇。雖然有點兒默默無聞,但它的撰寫者十多年來在 Server Side Javascript 上的堅持讓人信賴。最近,更因一篇「RingoJS vs. NodeJS」,它開始被更多的人注意。

身為 RingoJS 的愛用者,我自然也要加入這場戰局。因此,我將這篇「RingoJS vs. NodeJS」中 RingoJS 的優點翻譯於後,和我的讀者分享,在這翻譯中加上了我自己的修正。

  1. RingoJS 是最符合 CommonJS 規範的平台。此點勝過 NarwahlJS 及 NodeJS。
  2. RingoJS 的執行速度快。RingoJS在執行前會經過 JVM 的編譯,同時,RingoJS 的模組是動態載入的,這使得它的 start up time很短。
  3. RingoJS 成熟、穩定、不會當。這是我自己的使用經驗。我還沒遇過 RingoJS 當掉的情況。
  4. 直接使用成千上萬的 Java libraries。Ringo架構在 Rhino javascript 引擎之上,它和 Java 之間的關係真是血溶於水般,它可以直接使用 Java libraries 及物件,就好像它們是以 javascript 寫成的。不像 NodeJS 等,呼叫 C 時必須撰寫各種 wrappers。
  5. 程式可以在 Linux/Windows 下執行。跨平台呢。(當然也可以在目前正熱的 Android 上執行囉。)
  6. 支援同步(synchronous)及非同步(asynchronous)的程式撰寫風格。NodeJS紅的原因是它強調非同步撰寫風格。但是在絕大多數的場合,以同步風格撰寫最簡單。使用 Ringo,簡單的問題可以簡單解決,複雜的問題一樣能解決。
  7. 因為「AppengineJS」提供了大量可以在 Google App Engine 上使用的 libraries,RingoJS 很適合用來開發 Google App Engine 上的雲端運算程式。
  8. RingoJS 的 Leader 技術一流,又十分親切,願意傾聽使用者的建議。