本文,就将带领大家盘点下,运行在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,不过是其可以编译的一个“小”对象而已。
共同学习,写下你的评论
评论加载中...
作者其他优质文章