那些JVM 上试图取代Java 的语言们
Java 的保守陈旧与新特性的缺乏正在使越来越多的人转而寻找其他方案。既想使用更现代的语法,又割舍不下成熟的JVM 和 社区积累的人们,开始在JVM 创造一个个新的语言。Clojure 和 Groovy, Jython 这样的函数式或者动态语言,虽然也在某些领域吸引了不少用户,但是更多人想要的是这样一种静态强类型语言:
- 支持lambda表达式、First-class functions、高阶函数等函数式编程的支持
- 类型推导
- 运算符重载
- 对null 值运算更好的支持
- collection/object literal
- data Properties ,取代繁琐的getter/setter
- 增强的switch,match expressoin
- Named arguments tuple
- 语法简洁
scala 其实并不是一种新语言,他已经有10年以上的历史。Scala 的初衷是结合函数式编程,然而近年来对Java Community Process 感到绝望,渴望一个better java 的程序员们将它作为了一个替代品。Scala 本身也存在这类型系统过于复杂,语法魔幻,喜欢奇技淫巧,学习难度高,编译速度慢的问题,这阻碍了scala 的进一步发展流行。
Ceylon 是 Red Hat 下SpringSource 的作品,领导者是大名鼎鼎的Gavin King。他有感于Java发展迟缓,Scala 过于复杂,而开始了Ceylon 这个项目。这几个语言中Ceylon 的语法是最为规整和良设计的,但是其出现较晚,也不如scala 和 Xtend 成熟和流行。
Xtend 是Eclipse 基金会下开发的一种语言,也是这几种语言中语法跟Java 最像的。Xtend 的源代码会被先翻译成Java 源代码,然后再进行编译。值得一提的是Xtend 为Android 开发提供了一个slim 的运行库,只有200多k, 而scala 的lib 已经有10多M 了。
Kotlin 是Jetbrains 推出的一种语言,也是有感于Scala 过多的函数式特性和复杂度而另起炉灶。Kotlin 有着更接近于scala 的语法,其目标是实现一个不复杂的scala.