嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

作為上世紀 90 年代發明的語言,從 1996年1月發佈 1.0 版到 2019年9月發佈 Java 13,Java 語言將迎來 24 週年。近十年來,Java 在 IT 軟件業界非常流行,一直佔據著編程語言排行榜首,成了企業開發的第一選擇。

Java 語言天生擁有眾多優勢:跨平臺、面向對象、安全穩健、簡單高效。不過相對 Python、JavaScript、Ruby 等語言,Java 的語法顯得死板、冗長、不夠靈活。雖然 Java 也在不斷吸收其他語言的優點:比如 Java 8 引入了函數式編程,Java 10 引入了 var 類型推斷等,但受制於規模、兼容性和商業因素等原因,Java 只能小步改進,不可能期待 Java 語法能有 Python 等動態語言的表現力。

不過 Java 不是 JVM 的全部,近些年來 JVM 上產生了許多優秀的語言,給開發者們帶來了新的選擇。這些語言提供更多的語言特性(包括語法糖),使語言變得有表現力,實現相同只需要少量代碼。另外,這種語言通常能與 Java 互操作,充分利用 Java 強大的生態庫。

Scala

嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

Scala 是一門基於 JVM 的多範式的編程語言,由洛桑聯邦理工學院的 Martin Odersky 教授領導開發,設計初衷是要整合面向對象編程和函數式編程的各種特性。

Scala 語言特性豐富、語法複雜,被一些人稱為 JVM 上的 C++。Scala 是一種純面向對象的語言,每個值都是對象。Scala 也是一種函數式語言,其函數也能當成值來使用。Scala 運行於 JVM,併兼容現有的 Java 程序,在高併發、大數據領域應用廣泛。

代表項目:

  • Akka 基於 Actor 模型的併發框架
  • Spark 大數據計算平臺
  • KakfaSamza 分佈式日誌、流處理系統
  • PlayLift 等 Web 開發框架

Kotlin

嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

Kotlin 是一種現代的、基於 JVM 的靜態編程語言,由 JetBrains 俄羅斯聖彼得堡團體開發。Kotlin 兼容 Java,但比 Java 更簡潔、更安全,能夠靜態檢測常見的錯誤。另外,相比成熟的競爭對手 Scala,Kotlin 語言更加簡單,更容易上手。

Kotlin 最近幾年迅速竄紅,移動端,Kotlin 已成為 Android 官方推薦的首選開發語言;在服務端,Kotlin 是 Spring、Vertx 等項目除 Java 外的第一選擇。

代表項目:

  • okiookhttpanko :大量 Android 開源庫
  • Ktor Web 開發框架
  • SpringVertx 等項目引入 Kotlin

Groovy

嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

Groovy 是一種基於 JVM 的面向對象編程語言,擁有 Python、Ruby 和 Smalltalk 等語言的一些特性,可以作為 Java 平臺的腳本語言使用。

Groovy 使用與 Java 相似的語法,並彌補了 Java 語言動態性不足的弱點,使得開發的趣味性和效率大大提高。Groovy 代碼動態地編譯成運行於 JVM 上的 Java 字節碼,並能與其他 Java 代碼和庫進行互操作。從 Groovy 2.0 版本開始,Groovy 也可以靜態編譯,提供類型推到和 Java 相近的性能。

代表項目:

  • Gradle 新一代自動化構建工具
  • GrailsRatpack Web 開發框架

Clojure

嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

Clojure 是 Lisp 語言在 JVM 平臺上的現代、動態及函數式方言。與其他 Lisp 一樣,Clojure 視代碼為數據且擁有一套 Lisp 宏系統。Clojure 不僅可在 JVM 上運行,而且在設計上還兼顧了 Java 的互操作性。Clojure 在設計上也考慮了併發性,並具有併發編程的一些獨特特性。

Clojure 提倡不可變性(immutability)與持久數據結構(persistent data structures)並鼓勵程序員顯式地管理標識(identity)及其狀態(state)。對利用不可變值(immutable values)及顯式時間進展構造(explicit progression-of-time constructs)進行編程的專注旨在促進更加健壯的(尤其是併發)程序的開發。

代表項目:

  • Metabase 數據分析、可視化工具
  • Light Table 全新理念輕量級 IDE
  • Leiningen 項目管理、自動構建系統

Ceylon

嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

Ceylon 是由 Redhat 公司的一門 JVM 語言,由 Hiberate 之父 Gavin King 領導,面向企業級應用開發設計。Ceylon 是一種模塊化的靜態類型的現代編程語言,它保留了一些好的 Java 語言特性,在 JVM 上執行,支持與 Java 的交互操作。

Ceylon 使用靜態類型並提供高階函數等語言特性,擁有強大的類型系統並融合了 C 和 Smalltalk 的一些特性。Ceylon 語法靈活,突出了可讀性,在保持代碼良好可讀性的同時進一步降低了開發者入門的難度。

Jython

嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

Jython(原名 JPython),是 Python 語言在 Java 中的完全實現,使用戶能以 Python 的語法編寫在 JVM 上運行的軟件。Jython 程序可以和 Java 無縫集成,除了一些從 CPython 中繼承的模塊,Jython 可以使用 Java 的模塊。

Jython 優點:

  • 與 Java 相比,Jython 和 Python 強調了代碼的簡明、方便和易讀,大大減少了代碼量。
  • Jython 同時擁有解釋器和編譯器,無需編譯就可以測試程序代碼。
  • JRuby

    嫌 Java 太繁瑣、表現力太差?這些 JVM 語言給你不一樣的體驗

    JRuby 是 100% 純 Java 實現的 Ruby 解釋器,可以在 JVM 上直接運行 Ruby 程序(支持 Rails),調用 Java 的類庫。JRuby 由 JRuby 團隊開發維護,成員包括 Charles Oliver Nutter、Thomas Enebo 和 Nick Sieger 等。JRuby 最新版本為 9.2.9.0,兼容 Ruby 2.5.7。


    分享到:


    相關文章: