作为上世纪 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 是一门基于 JVM 的多范式的编程语言,由洛桑联邦理工学院的 Martin Odersky 教授领导开发,设计初衷是要整合面向对象编程和函数式编程的各种特性。
Scala 语言特性丰富、语法复杂,被一些人称为 JVM 上的 C++。Scala 是一种纯面向对象的语言,每个值都是对象。Scala 也是一种函数式语言,其函数也能当成值来使用。Scala 运行于 JVM,并兼容现有的 Java 程序,在高并发、大数据领域应用广泛。
代表项目:
Akka 基于 Actor 模型的并发框架Spark 大数据计算平台Kakfa、Samza 分布式日志、流处理系统Play、Lift 等 Web 开发框架Kotlin
Kotlin 是一种现代的、基于 JVM 的静态编程语言,由 JetBrains 俄罗斯圣彼得堡团体开发。Kotlin 兼容 Java,但比 Java 更简洁、更安全,能够静态检测常见的错误。另外,相比成熟的竞争对手 Scala,Kotlin 语言更加简单,更容易上手。
Kotlin 最近几年迅速窜红,移动端,Kotlin 已成为 Android 官方推荐的首选开发语言;在服务端,Kotlin 是 Spring、Vertx 等项目除 Java 外的第一选择。
代表项目:
Groovy 是一种基于 JVM 的面向对象编程语言,拥有 Python、Ruby 和 Smalltalk 等语言的一些特性,可以作为 Java 平台的脚本语言使用。
Groovy 使用与 Java 相似的语法,并弥补了 Java 语言动态性不足的弱点,使得开发的趣味性和效率大大提高。Groovy 代码动态地编译成运行于 JVM 上的 Java 字节码,并能与其他 Java 代码和库进行互操作。从 Groovy 2.0 版本开始,Groovy 也可以静态编译,提供类型推到和 Java 相近的性能。
代表项目:
Gradle 新一代自动化构建工具Grails、Ratpack Web 开发框架Clojure
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 全新理念轻量级 IDELeiningen 项目管理、自动构建系统Ceylon
Ceylon 是由 Redhat 公司的一门 JVM 语言,由 Hiberate 之父 Gavin King 领导,面向企业级应用开发设计。Ceylon 是一种模块化的静态类型的现代编程语言,它保留了一些好的 Java 语言特性,在 JVM 上执行,支持与 Java 的交互操作。
Ceylon 使用静态类型并提供高阶函数等语言特性,拥有强大的类型系统并融合了 C 和 Smalltalk 的一些特性。Ceylon 语法灵活,突出了可读性,在保持代码良好可读性的同时进一步降低了开发者入门的难度。
Jython(原名 JPython),是 Python 语言在 Java 中的完全实现,使用户能以 Python 的语法编写在 JVM 上运行的软件。Jython 程序可以和 Java 无缝集成,除了一些从 CPython 中继承的模块,Jython 可以使用 Java 的模块。
Jython 优点:
与 Java 相比,Jython 和 Python 强调了代码的简明、方便和易读,大大减少了代码量。Jython 同时拥有解释器和编译器,无需编译就可以测试程序代码。JRuby
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。