关注前沿技术,分享热点话题,QCon全球软件开发大会三站同启,重磅回归!立即查看 了解详情

Java之外,选择Scala还是Groovy?

2008 年 1 月 14 日

Scala 和 Groovy 都是基于 JVM 的语言,相比 Java 都有更加简明的语法和丰富的表达能力。对于那些既想不脱离开 JVM 又想避免 Java 繁琐的语句的开发人员来说,Scala 和 Groovy 都是不错的选择。可是选择哪一个才能在未来发展过程中取得先机呢?哪一个是未来发展的方向呢?这些都是困扰开发者的难题。

去年早些时候,一篇名为“ Scala,Groovy 的杀手? ”的博客对 Scala 和 Groovy 进行了对比:

Scala 和 Groovy 之间的核心区别在于前者是静态类型的。有些人可能争辩说这使得达到脚本化目标变得更加复杂了,而脚本化正是 Groovy 的动机。然而,Scala 有完整的体系特征,这使 Groovy 看上去更像个玩具。比如,Scala 有“ sequence comprehensions ”。该要素导致对算法的表述非常紧凑和强大。Scala 还有更多被证明是非常有用的特性,如嵌套类,currying 和代数类型模式匹配。它还支持类似于 JDK1.5 所增加的泛型和注解。这些还都只是冰山一角。

之后,Derek Young 撰文“ Scala 对比 Groovy:静态类型是性能的关键”。在文中他举了一个实际的例子,试图说明针对同样的算法,Scala 的性能远高于 Groovy。

然而,Scala 并不是尽善尽美的,它也有一些明显的缺陷。Rick Hightower 在最近发表的一篇博客中,尖锐地批评了 Scala 的语法问题:

Scala 并不是更好的选择。在阅读了 Scala 的文档之后,我的想法是:虽然这种语言的特性听起来挺好,但是语法却让我想放弃。为什么事情非要为了不同而不同?Scala 让 Groovy 看起来比以前更加美味可口。憎恨是个很强烈的词。我恨 Scala 的语法。请不要再推进这种语法了。……Scala 有好的思想吗?有。借用过来就行了……

总而言之,Scala 看起来像下一个被过度宣传的语言。只需要把其精华引入到 Groovy 中,然后扔掉那些糟糕的语法。我最喜欢的 Scala 特性是推理类型和强类型。C#3.0 也有这些。(我不用 C#,不见得我不喜欢它的一些特性。)

Rick Hightower 还建议 Sun 应该在 Groovy 上进行投资,而不是对 JRuby 作无谓的投资。

Groovy 更像 Java,更容易上手,语法也让开发者不反感。为什么 Sun 在 JRuby 上投那么多钱呢?投资应该给 Groovy。这样了解 Java 的开发者可以更快地学习 Groovy,而且如果有工具支持他们,那么就更可能这样做。

为了说明 Sun 投资在 Ruby 上的不明智,Rick Hightower 还引用了一幅统计图表来说明企业采用 Ruby 的趋势还是比较低的:

另外,无论是 Ruby、Scala 还是 Groovy 都有对应的 Web 框架,且对应的框架都是用各自对应的语言编写的。这些框架分别是 Rails、Lift 和 Grails。尽管 Lift 和 Grails 中的许多东西都从 Rails 借鉴来的,但是 Grails 对其他已有 Java 技术框架进行了很好的继承,这无疑会保护用户或厂商在这方面的已有投资。Grails 框架参考文档中这样描述:

Grails 构建在这些概念之上,并且显著地减少了在 Java 平台上构建 Web 应用的复杂程度。不同的是,这些是建立在已确立的如 Spring 和 Hibernate 这样的 Java 技术之上的。

目前,Scala 和 Groovy 两种语言都在快速发展的过程中。就目前的情况来看,Groovy 的优势在于易用性以及与 Java 无缝衔接,Scala 的优势在于性能和一些高级特性,如果在发展过程中两者能互相借鉴对方的优点来充实自身,对开发者来讲无疑是福音。正如第一篇所引用的博客作者最后提到的那样:

大家并不想看到一场殊死斗争,而是想看到更注重实效思想的 Groovy 团队能与更具有学术思想的 Scala 团队一起合作,制作出一门既强大又易用的语言。

你会将赌注押在谁身上呢?

2008 年 1 月 14 日 04:25 15390
用户头像

发布了 150 篇内容, 共 35.0 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

python——dict常用方法

菜鸟小sailor 🐕

关于java使用JDBC连接数据库

谷鱼

Java JDBC

快三十岁了,网上玩赌博输掉了四百万后的忏悔

红叶

网上赌博输了怎么办 赌博玩快三输了怎么回血

windows平台python3使用impyla连接hive问题汇总

誓约·追光者

hive python3.x Windows 10

食堂就餐卡系统设计

Geek_Albert

食堂就餐卡系统设计

关于性别

北宋

值得学习!阿里P8架构师“墙裂”推荐:Java程序员必读的架构书籍

Java成神之路

Java 编程 程序员 面试 书籍

架构师训练营 - 大作业(二)

张明森

招商2020第十三届(南京)智慧城市技术与应用产品展览会

InfoQ_caf7dbb9aa8a

手写一个抖音视频去水印工具,千万别刚一个程序员

程序员内点事

springboot java;

宁静的可贵

谷鱼

宁静

甲方日常 16

大橘子

随笔杂谈

架构师训练营大作业一

子豪sirius

【高并发】面试官:说说缓存最关心的问题?有哪些类型?回收策略和算法?

冰河

缓存 面试 引用 offer 回收

IP网络

菜鸟小sailor 🐕

【高并发】面试官:Java中提供了synchronized,为什么还要提供Lock呢?

冰河

Java synchronized 同步 lock 锁机制

升级Php Curl扩展遇到的坑

心平气和

php curl php扩展

Docker Swarm 集群管理利器核心概念扫盲

哈喽沃德先生

Docker Docker Swarm 容器 容器云 容器化

我擦~字符串转字节切片后,切片的容量竟然千奇百怪

新世界杂货铺

golang 后端 后端开发

为什么很多人不买iPhone?

北柯

Spring 5 中文解析数据存储篇-理解Spring事物抽象

青年IT男

Spring5 数据存储

JDK15正式发布,新增功能预览!

王磊

Java

拓扑排序就这么回事

码农田小齐

数据结构 算法 数据结构和算法

共享内存原理与VCS监控采集实战

vivo互联网技术

监控 中间件 架构设计 数据采集 埋点

不愧是阿里大牛,竟然熬夜写了份《Spring MVC源码笔记》还整理成了文档,赶紧收藏!

Java成神之路

Java 编程 程序员 面试 Spring MVC

JDK15真的来了,一起来看看它的新特性

程序那些事

java15 JDK15 JDK15新特性 java15新特性

第一周学习总结

Geek_Albert

oeasy教您玩转linux 010216 随机诗词 fortunezh

o

配置时间特性

小知识点

大数据 flink scal

快讯2020第十三届亚洲国际物联网展览会-南京站

InfoQ_caf7dbb9aa8a

全屋智能2020第十三届(南京)国际智能家居展览会

InfoQ_caf7dbb9aa8a

Java之外,选择Scala还是Groovy?-InfoQ