還記得以前本站的一篇文章《如何在Google App Engine上運行PHP》嗎,其實那是借用 Quercus, 一個 100% 的用Java 實現的一個 PHP 引擎。今天,這樣的東西太多了,能運行在Java的虛擬機JVM上的程序意味着有天然的跨平臺性,現在JVM並不單單隻能運行Java程序,在JVM上出現了若干使用Java虛擬機運行的腳本程序,比如什麼PHP, Python, Ruby等等,這裏有一篇文章評論了在JVM上的可以運行的排名前五腳本語言。他們分別是:
- Groovy。構建在強大的Java語言之上 並添加了從Python,Ruby和Smalltalk等語言中學到的諸多特徵,爲Java開發者提供了現代最流行的編程語言特性,而且學習成本很低(幾乎爲零),在開發Web,GUI,數據庫或控制檯程序時, 通過減少框架性代碼 大大提高了開發者的效率。支持單元測試和模擬(對象),可以簡化測試。無縫集成 所有已經存在的 Java對象和類庫。直接編譯成Java字節碼,這樣可以在任何使用Java的地方 使用Groovy。
- JRuby。一個純Java實現的Ruby解釋器。通過JRuby,你可以在JVM上直接運行Ruby程序,調用Java的類庫。很多Java編寫的Ruby IDE都是使用JRuby來解釋語法的。
- Scala。一種多範式的編程語言,設計意圖是要整合面向對象編程和函數式編程的各種特性。Scala編程語言近來抓住了很多開發者的眼球。它看起來像是一種純粹的面向對象編程語言,而又無縫地結合了命令式和函數式的編程風格。Scala的名稱表明,它還是一種高度可伸縮的語言。Scala的設計始終貫穿着一個理念:創造一種更好地支持組件的語言。
- Fantom 。Fantom 前身是 (Fan) 是一個基於 Java 和 .NET 平臺的編程腳本引擎,用來在運行時產生 JVM 和 .NET 平臺的字節碼,該語言是面向對象的,跟 Groovy 和 JRuby 有點類似,可通過特定的接口來集成 Java 的類庫。
- Jython。Jython由於繼承了Java和Python二者的特性而顯得很獨特。其是一種完整的語言,而不是一個Java翻譯器或僅僅是一個Python編譯器,它是一個Python語言在Java中的完全實現。Jython也有很多從CPython中繼承的模塊庫。最有趣的事情是Jython不像CPython或其他任何高級語言,它提供了對其實現語言的一切存取。所以Jython不僅給你提供了Python的庫,同時也提供了所有的Java類。這使其有一個巨大的資源庫。
下面是一張表格比較了這五大JVM腳本語言:
Groovy | JRuby | Scala | Fantom | Jython | |
---|---|---|---|---|---|
風格類型 | OO / 動態 | OO / 動態 | OO, 過程/ 靜態 | OO / 靜態 | OO / 動態 |
源語言 | Java | Ruby | N/A | N/A | Python |
運行 | 編譯型 |
編譯型, 解釋型 |
編譯型 | 半編譯型 | 編譯型 |
平臺 | JVM | JVM | JVM | JVM, .Net CLR | JVM |
Java集成 | 極好 | 極好 | 極好 | 好 | 極好 |
運行速度 | 好 | 好 | 極好 | 很好 | 慢 |
工具支持 | 廣泛 | 還可以 | 廣泛 | 幾乎沒有 | 幾乎沒有 |