Java不僅僅是Java:盤點執行在JVM下的其他9種語言

程式碼灣發表於2018-05-03

Java 10終於如期釋出了,這是Java開發屆的一件大事。但是作為擁有最龐大企業開發社群和開發人員的一個完整的生態環境,圍繞著Java執行時環境(JRE)和Java虛擬機器(JVM),早已不單單是Java語言的一言堂了,而是擠滿了各式各樣的參與者。

本文,就將帶領大家盤點下,執行在Java虛擬機器環境下的這些別樣的語言們。我們完全有理由相信,隨著JVM效能的進一步提升,這些語言必將會更加大放光彩。

1、Kotlin

官方站點:https://kotlinlang.org/

由JetBrains於2010年建立,並於2012年開源, Kotlin比Java更加簡潔和安全。 您完全可以將Kotlin視為是一種“更加簡單但高效的Java”。Kotlin的編譯速度通常比Java程式碼快,而且在其建立之初,就非常明確的支援了函數語言程式設計,這一點,Java是到Java 8才開始支援的。

特別的,因為有了Google的加持,越來越多的Android開發人員,開始選擇Kotlin來開發應用程式,與此同時,獨立的超越JVM的行動也已經在展開,通過一項名為LLVM的專案,Kotlin正在努力實現程式碼編譯的本地化,而不在基於JVM 。

但無論如何,至少現在,它還活在JVM中。

2、Scala

官方站點:http://www.scala-lang.org/

和Kotlin一樣, Scala也是為了讓Java開發人員提高工作效率而建立的。 作為一種完全的面嚮物件語言和一種完全的函數語言程式設計語言,Scala巧妙的將這兩種程式設計正規化結合到了一起。

特別是在函數語言程式設計方面,Scala幾乎支援函數語言程式設計語言中所有已知的特性,比如,模式匹配(Pattern matching)、延遲初始化(Lazy initialization)、偏函式(Partial Function)、不變性(Immutability)等等等等,

因此,雖然Scala的類Lisp的語法會讓初學者倍感迷惑,但花時間在這上面,永遠是值得的,很快,就會讓你體會到那種只需要關注 What(做什麼),而不用關注How(如何做)的酸爽。

一個最新的關於Scala的訊息是,它似乎也在和Kotlin一樣,在加速準備逃離JVM的控制,這對於JVM,恐怕不是一個什麼特別好的訊息,雖然,其距離用於生產可能還為時尚早。

3、Clojure

官方站點:https://clojure.org/

Clojure是由開發人員Rich Hickey在JVM下,所建立的一種Lisp方言,藉助於JVM的執行效率越來越高,Clojure也常被嵌入在Java中,用於編寫其中需要高併發、高效能的部分 。

4、Groovy

官方站點:http://www.groovy-lang.org/

Groovy是在Java現有基礎上,吸收Python和Ruby等動態語言的特性,而建立的一種新型語言,也是Jenkins持續整合伺服器,所直接支援的語言之一,並且最關鍵的一點,通過基於Groovy的Web開發框架Grails,可以快速的完成相關Web專案的構建 。

在未來,Groovy則擬包含Java和JVM的一些更新的特性,比如如Java 8的lambda語法等。

5、Jython

官方站點:http://www.jython.org/

Jython是JVM的Python實現,與Python的2.x分支相容,可以動態編譯為Java位元組碼,並且可以與其他JVM語言(特別是Java)自由互動操作。

6、JRuby

官方站點:http://jruby.org

JRuby幾乎就是Jython的翻版,所不同的是,JRuby所對標的語言是Ruby,當前所支援的語法規範則和Ruby 2.3相容。

7、Ceylon :

官方站點:https://www.ceylon-lang.org

這個以大象為Logo的語言,其建立初衷可不是像大象一樣笨拙,恰恰相反,語言的創始人 Gavin King,是出於對Java所存在問題的深刻認識,如泛型等特性的複雜性、粗劣的註解語法、不完善的塊結構、對 XML 的依賴性等等,才萌生了建立一種新的靜態型別語言語言,即Ceylon來一勞永逸的解決這些問題的想法。

Ceylon保留了一些好的 Java 語言特性,改進了語言的可讀性和內建的模組性,還吸收了高階函式等函式語言特性,此外,Ceylon 還融合了 C 和 Smalltalk 的一些特性。與 Java 語言一樣,這種新語言也以業務計算為重點,但是它在其他領域也很靈活、很有用。並且,通過這些年的努力,Ceylon已經跨出了其自身跨平臺的第一步,其程式碼已經可以在JVM,Dart VM或Node.js上進行編譯或執行。

8、Eta

官方站點:https://eta-lang.org/

我們的名單中怎麼能少了時下最能裝酷,也是被Node.js的建立者稱為覺得暫無能力駕馭的語言Haskell的JVM實現?

它來了,就是Eta,它的優勢,不僅僅在於它可以在JVM下執行,更在於它可以使用Haskell的軟體包倉庫中的軟體包,最大程度的相容了整個Haskell生態系統。

9、Haxe

官方站點:http://haxe.org

Haxe的口號是:One Language,Everywhere!是不是有點熟悉?是的,在非常久遠的過去,這其實正是Java的初心。

但是,這二者又是如此的迥異。Java的策略是,我做一個平臺JVM,給出一種規範,你們來生成我需要的程式碼;Haxe的策略則正好相反,既然芸芸眾生,語言紛雜,每個人都各有偏好,那好,來吧,我可以把我的程式碼,生成任何一種你們想要的語言下的程式碼!

多麼瘋狂的想法!就為這點瘋狂,就值得我們每個開發人員去膜拜一番了,畢竟,在Haxe看來,JVM,不過是其可以編譯的一個“小”物件而已。

相關文章