Java不仅仅是Java:盘点运行在JVM下的其他9种语言

Java的策略是,我做一个平台JVM,给出一种规范,你们来生成我需要的代码;Haxe的策略则正好相反,既然芸芸众生,语言纷杂,每个人都各有偏好,那好,来吧,我可以把我的代码,生成任何一种你们想要的语言下的代码!

Java 10终于如期发布了,这是Java开发届的一件大事。但是作为拥有最庞大企业开发社群和开发人员的一个完整的生态环境,围绕着Java运行时环境(JRE)和Java虚拟机(JVM),早已不单单是Java语言的一言堂了,而是挤满了各式各样的参与者。

图0:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

本文,就将带领大家盘点下,运行在Java虚拟机环境下的这些别样的语言们。我们完全有理由相信,随着JVM性能的进一步提升,这些语言必将会更加大放光彩。

1、Kotlin

图1:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

官方站点: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

图2:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

官方站点: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

图3:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

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

Clojure是由开发人员Rich Hickey在JVM下,所创建的一种Lisp方言,借助于JVM的执行效率越来越高,Clojure也常被嵌入在Java中,用于编写其中需要高并发、高性能的部分 。

4、Groovy

图4:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

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

Groovy是在Java现有基础上,吸收Python和Ruby等动态语言的特性,而创建的一种新型语言,也是Jenkins持续集成服务器,所直接支持的语言之一,并且最关键的一点,通过基于Groovy的Web开发框架Grails,可以快速的完成相关Web项目的构建 。

在未来,Groovy则拟包含Java和JVM的一些更新的特性,比如如Java 8的lambda语法等。

5、Jython

图5:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

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

Jython是JVM的Python实现,与Python的2.x分支兼容,可以动态编译为Java字节码,并且可以与其他JVM语言(特别是Java)自由交互操作。

6、JRuby

图6:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

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

JRuby几乎就是Jython的翻版,所不同的是,JRuby所对标的语言是Ruby,当前所支持的语法规范则和Ruby 2.3兼容。

7、Ceylon :

图7:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

官方站点: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

图8:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

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

我们的名单中怎么能少了时下最能装酷,也是被Node.js的创建者称为觉得暂无能力驾驭的语言Haskell的JVM实现?

它来了,就是Eta,它的优势,不仅仅在于它可以在JVM下执行,更在于它可以使用Haskell的软件包仓库中的软件包,最大程度的兼容了整个Haskell生态系统。

9、Haxe

图9:Java不仅仅是Java:盘点运行在JVM下的其他9种语言

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

Haxe的口号是:One Language,Everywhere!是不是有点熟悉?是的,在非常久远的过去,这其实正是Java的初心。

但是,这二者又是如此的迥异。Java的策略是,我做一个平台JVM,给出一种规范,你们来生成我需要的代码;Haxe的策略则正好相反,既然芸芸众生,语言纷杂,每个人都各有偏好,那好,来吧,我可以把我的代码,生成任何一种你们想要的语言下的代码!

多么疯狂的想法!就为这点疯狂,就值得我们每个开发人员去膜拜一番了,毕竟,在Haxe看来,JVM,不过是其可以编译的一个“小”对象而已。

阅读余下内容

发表评论

电子邮件地址不会被公开。 必填项已用*标注


京ICP备12002735号