![]() |
1
874
Groovy 是一种动态类型的语言,其语法与Java非常接近,具有许多语法改进,允许更轻的代码和更少的样板。它可以运行一个解释器和编译,这使得它有利于快速原型,脚本和学习动态语言,而不必学习一个新的语法(假设你知道Java)。从groovy 2.0开始,它对 static compilation . groovy支持闭包,并以某种功能性的方式支持编程,尽管它与传统的功能性编程定义相差甚远。 Clojure 是Lisp的一种方言,具有一些高级功能,如 Software Transactional Memory . 如果您喜欢Lisp并且希望在JVM下使用它,Clojure就是为您准备的。这可能是最 functional language 在JVM上运行,当然是最著名的。而且,它更强调 immutability 与其他Lisp方言相比,Lisp方言更接近功能语言爱好者的核心。 Scala 是一种完全面向对象的语言,比Java更先进,是最先进的语言之一。 type systems 可用于非研究语言,当然是JVM上最先进的类型系统。它还结合了功能语言的许多概念和特征,在不影响对象定向的前提下,对功能语言特征的折衷使功能语言的一些狂热者望而却步。 groovy在Grails中具有良好的接受度和流行的Web框架。它还支持Gradle构建系统,这正成为Maven的流行替代方案。我个人认为它是一种实用性有限的语言,特别是当Jython和JRuby开始在JVM领域取得进展时,与其他语言相比。 Clojure,即使是对一些非常有趣的特性进行折扣,也仅仅通过在JVM上使用Lisp方言就具有很强的吸引力。当然,它可能会限制它的受欢迎程度,但我希望它会在很长一段时间内拥有忠诚的社区。 Scala可以直接与Java竞争,并在几乎所有方面为其提供资金。当然,它目前无法在人气上竞争,缺乏强有力的企业支持可能会阻碍它在企业环境中的接受。在语言发展的意义上,它也是一种比Java更具活力的语言。从语言的角度来看,这是件好事。从计划在其中编写数千行代码的用户的角度来看,并非如此。 作为最后一个披露,我非常熟悉斯卡拉,只熟悉其他两个。 |
![]() |
2
219
斯卡拉scala是从一种称为 Funnel 它代表了几乎所有Java语法的一个无尘室实现,只有在可以做出明显改进的地方,或者它会损害语言的功能性质。这种差异包括单例对象而不是静态方法,以及类型推断。 其中很大一部分是基于马丁·奥德斯基之前在 Pizza 语言。OO/FP集成远远超出了闭包的范围,并导致将该语言描述为后功能语言。 尽管如此,它在很多方面与Java最接近。主要是由于OO支持和静态类型的结合,而且由于语言设计中的明确目标,它应该与Java非常紧密地集成。 格罗维Groovy明确地处理了两个Java最大的批评
也许是 句法上 与Java最接近,不提供Culjress和Scala提供的一些更丰富的功能结构,但仍然提供了明确的进化改进——尤其是编写脚本Syle程序。 groovy拥有三种语言中最强大的商业支持,主要是通过SpringSource。 克洛杰尔Clojure是Lisp家族中的一种功能语言,它也是动态类型的。 诸如stm支持之类的特性为它提供了一些开箱即用的最佳并发支持,而scala需要第三方库,例如 Akka 复制这个。 从语法上讲,它也是典型Java代码中三种语言中最远的。 我还得透露我最熟悉斯卡拉:) |
![]() |
3
68
我从来没有时间和Clojure玩过。但是对于scala和groovy来说,这是来自james strachan的话-groovy的创造者
你可以读完整个故事 here |
![]() |
4
30
|
![]() |
5
8
我正在阅读实用程序员的书“Groovy配方:润滑Java的车轮”的Scott Davis,版权2008,并于同年四月打印。 这有点过时了,但这本书清楚地说明Groovy简直就是Java的扩展。我可以编写Java代码,它的功能与Java完全一样,并重命名文件*.Groovy,它工作正常。根据这本书的说法,如果我包括必要的图书馆,情况就会相反。到目前为止,实验似乎证明了这一点。 |
![]() |
6
4
显然,语法完全不同(Groovy最接近Java),但我想这不是你要的。 如果您有兴趣使用它们来编写Java应用程序,那么斯卡拉可能不是一个好的选择,因为 no easy way to evaluate 它来自Java,而Groovy特别适合于此目的。 |