Scala vs. Groovy vs. Clojure

http://stackoverflow.com/questions/1314732/scala-vs-groovy-vs-clojure

Groovy is a dynamically typed language, whose syntax is very close to Java, with a number of syntax improvements that allow for lighter code and less boilerplate. It can run through an interpreter as well as being compiled, which makes it good for fast prototyping, scripts, and learning dynamic languages without having to learn a new syntax (assuming you know Java). As of Groovy 2.0, it also has growing support for static compilation. Groovy supports closures and has support for programming in a somewhat functional style, although it‘s still fairly far from the traditional definition of functional programming.

Clojure is a dialect of Lisp with a few advanced features like Software Transactional Memory. If you like Lisp and would like to use something like it under the JVM, Clojure is for you. It‘s possibly the most functional language running on the JVM, and certainly the most famous one. Also, it has a stronger emphasis on immutability than other Lisp dialects, which takes it closer to the heart of functional language enthusiasts.

Scala is a fully object oriented language, more so than Java, with one of the most advanced type systems available on non-research languages, and certainly the most advanced type system on the JVM. It also combines many concepts and features of functional languages, without compromising the object orientation, but its compromise on functional language characteristics put off some enthusiasts of the latter.

Groovy has good acceptance and a popular web framework in Grails. It also powers the Gradle build system, which is becoming a popular alternative to Maven. I personally think it is a language with limited utility, particularly as Jython and JRuby start making inroads on the JVM-land, compared to the others.

Clojure, even discounting some very interesting features, has a strong appeal just by being a Lisp dialect on JVM. It might limit its popularity, granted, but I expect it will have loyal community around it for a long time.

Scala can compete directly with Java, and give it a run for its money on almost all aspects. It can‘t compete in popularity at the moment, of course, and the lack of a strong corporate backing may hinder its acceptance on corporate environments. It‘s also a much more dynamic language than Java, in the sense of how the language evolves. From the perspective of the language, that‘s a good thing. From the perspective of users who plan on having thousands of lines of code written in it, not so.

As a final disclosure, I‘m very familiar with Scala, and only acquainted with the other two.

时间: 2024-12-28 00:53:32

Scala vs. Groovy vs. Clojure的相关文章

java环境中基于jvm的两大语言:scala,groovy

可以在java项目里混编这两种语言: scala:静态语言,多范式语言,糅合了面向对象.面向过程:可以与java和net互操作:融汇了众多的语言特性,包括类似net的闭包.lambda表达式:正是语言特性较多,语言复杂度也较高~~ groovy:动态语言,既可作为面向对象语言又可做脚本语言:拥有动态语言的好处:语法简单~~ scala.groovy都是作为java的替代语言,基于jdk1.6可以使用起来像jdk1.8的高级语法特性:学习成本上groovy更容易上手: scala流行的web框架:

Java 之外,是 Scala 还是 Groovy?【转载】

原文地址 Scala 和 Groovy 都是基于 JVM 的语言,相比 Java,它们都有语法更加简明和表达能力更丰富.对于那些既想不脱离开 JVM 又想避免 Java 繁琐语句的开发人员来说,Scala 和 Groovy 都是不错的选择.可是哪一个才能在未来发展过程中取得先机呢?哪一个是未来发展的方向呢? 去年早些时候,一篇名为"Scala,Groovy 的杀手? "的博客对 Scala 和 Groovy 进行了对比: Scala 和 Groovy 之间的核心区别在于前者是静态类型的

Java Next: Groovy、Scala or Clojure?

Java 下一代: 选择您的下一个 JVM 语言 如果任意 Java 下一代语言都适合作为您使用的下一代语言,那么您会如何选择?本文调查了会对这个重要决定产生影响的各个因素. Java 下一代: 克服同义词干扰 上一期 Java 下一代文章(“函数式编码风格”)对比和比较了 Scala.Groovy 和 Clojure 中的函数式编码风格.在本文中,系列作家 Neal Ford 将会更深入地剖析 Java 下一代语言中的过滤.映射和缩减(reduce)功能.文中提供的一系列简短的编码示例可帮助您

【转】程序员的职业生涯该如何过——前锤子科技研发总监池建强

http://www.jizhuomi.com/career/701.html 1.写在前面 加入极客邦的第一天就被拉到了「大咖说」的现场,这也是我始料未及的事情.从锤子科技正式离职之后,我享受了一个短暂的假期,随即投入了下一个战场,极客邦科技和内容服务领域. 很多人都在问我,为什么要离开锤子科技加入极客邦科技,其实这就是一个简单的职业选择.人生在世,一路向前,总会遇到各种各样的选择,有时候是被动选择,有时候是主动选择,仅此而已. 锤子科技是一家独特的,有趣的公司,由于种种原因,它的成长之路比其

职业规划:专属程序员的巡礼之年

百度百科:巡礼之年是由三组钢琴独奏组曲组成的一套专辑,由法兰兹·李斯特(Franz Liszt)作曲.一般被认为是李斯特最杰出的作品,为李斯特音乐风格的集大成之作.第三组曲特别被认为代表了李斯特的晚期风格. 文章起名为「巡礼」,多少有点回顾的意思.当然,你说我受了村上<没有色彩的多崎作和他的巡礼之年>的影响,我觉得也行. 一.程序员是个好职业 工作了十几年,到今天为止,我依然认为程序员是这个时代很好的职业.是不是最好,不敢确认,毕竟没离开过互联网行业,就像你只懂中文就很难说中文是世界上最好的语

[转载] 详述三种现代JVM语言--Groovy,Scala和Clojure

转载自http://www.tuicool.com/articles/jYzuAv和http://www.importnew.com/1537.html 在我与Martin Fowler曾经合作呈现的一次主题演讲中,他作出了一个有洞察性的观点: Java的遗产将是平台,而不是程序设计语言. Java技术的原始工程师们作出了一个明智的决定,就是将编程语言与运行时环境分开,最终这使得超过200种语言能够运行在Java平台上.这种架构对于该平台的长期活力是至关重要的,因为计算机程序设计语言的寿命一般都

Java 下一代: Groovy、Scala 和 Clojure

在与 Martin Fowler 共同参加的一次主题演讲中,他提供了一个敏锐的观察报告: Java 的遗产是  平台,不是  语言. 最初的 Java 技术工程师曾做过一个了不起的决定,将语言从运行时中分离出来,最终使 200 多种语言可在 Java 平台上运行.该基础架构对平台保持长久活力非常关键,因为计算机编程语言的寿命通常很短.自 2008 年以来,每年由 Oracle 主办的 JVM 语言峰会都会为 JVM 上替代语言的实现者提供与平台工程师公开合作的机会. 欢迎来到 Java 下一代专

Scala, Groovy, Clojure, Jython, JRuby and Java ----我们的工作语言

在以前的一封邮件中,我指出在众多改变中,最明显的一个就是:在java领地上的JVM上使用其他流行的语言的发展变得越来越快.一些老的和新的创建的基于JVM的语言---JRuby 和 Jython ,Java风格的语言---Groovy 和Scala 和brand ,新语言---Clojure 和 Kotlin,这些语言为我们提供了选择------得到JVM的性能和可靠性却可以使用一种不同的语法. 在一个理想的世界里所有的开发者都可以自己选择的自己的语言.现实情况是,作为开发者,我们被适合(我们的)

Groovy学习笔记

Groovy控制台 Groovy编译:groovyc filename.groovy Groovy运行:groovy filename Groovy控制台:groovyConsole ? ? 默认导入 groovy.lang.* groovy.util.* java.lang.* java.io.* java.math.BigDecimal.* java.math.BigInteger.* java.net.* java.util.* ? ? 动态类型 1 2 3 4 5 x = new Dat