Java不僅僅是Java:盤點執行在JVM下的其他9種語言
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,不過是其可以編譯的一個“小”物件而已。
相關文章
- 雲不僅僅是一種全新的IT基礎設施
- NoSQL——not onlySQL不僅僅是SQLSQL
- 元素,不僅僅是化學
- Redis不僅僅是快取,還是……Redis快取
- Linux不僅僅是開源Linux
- 你的工作不僅僅是程式設計程式設計
- 電子競技,不僅僅是遊戲遊戲
- Valve正在招聘各種學術人才,不僅僅是做遊戲遊戲
- 不僅是 64 位 Android L 還有這 9 大亮點Android
- iCloud不僅僅是為了雲音樂Cloud
- 實踐敏捷估算(1)——不僅僅是估不準的問題敏捷
- 軟體測試——你不僅僅應該會點點點
- CDP營銷方案 不僅僅是資料整合!
- 前端魔法堂——異常不僅僅是try/catch前端
- 程式設計師不僅僅是寫程式碼程式設計師
- 虛擬化不僅僅只是一種技術?薦
- 拿工資不僅僅是讓你寫程式碼的
- 2017程式語言三季盤點:Java,不變的王者!Java
- 資料隱私不僅僅是指機密性
- 為什麼 async/await 不僅僅是句法糖AI
- 重要 | Spark和MapReduce的對比,不僅僅是計算模型?Spark模型
- 在遊戲裡拍照、造樓、飆演技,並不僅僅是一點個人愛好遊戲
- 蘋果春季新品釋出會將有四大焦點:不僅僅是表蘋果
- Apache Flink,流計算?不僅僅是流計算!Apache
- DBA不僅僅是管理資料庫--也要管理好需求資料庫
- SmartCode—不僅僅是功能強大的程式碼生成器
- iPhone5,釋出的不僅僅是一部手機iPhone
- 電視盒子不僅僅是點播,功能細分的電視盒子實用性更強
- 我們必須要了解的Java位運算(不僅限於Java)Java
- Java是一種廣泛使用的程式語言Java
- 不僅僅是前端er——折騰伺服器武裝自己前端伺服器
- 【虹科分享】Redis 不僅僅是記憶體資料庫Redis記憶體資料庫
- DBA不僅僅是管理資料庫--也要管理中介軟體資料庫
- android socket聊天室——也不僅僅是聊天室Android
- 賽博朋克中的設計核心(一):不僅僅是日本文化
- 做好使用者引導不僅僅是設計師的工作
- 要重視報表的資料而不僅僅是做報表
- java語言屬於哪種語言Java