InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

综述:Scala是Java未来的后继者

作者 Dionysios G. Synodinos 译者 杨晨 发布于 2009年7月19日

领域
语言 & 开发,
过程 & 实践
主题
Ruby ,
变更 ,
语言 ,
Java
标签
JRuby ,
Groovy ,
JVM ,
Scala

作为Java未来的后继者之一,Scala最近受到了大量关注。Groovy的创始人James Strachan和James Gosling、Charles Nutter一样,是Scala的拥趸,后两人分别是Java的创造者和JRuby的核心开发者。

James首先解释了他不喜欢的Java特性

Java是一个令人惊讶的复杂语言(规范有600页,但是有人的确对Java的特性心领神会了吗?),表现在它的自动装箱 (在这里隐藏了可爱的NPE),原生类型,讨厌的数组(它们不是collection,而且由于缺少多态性,对于通用数据结构和bean特性需要很冗繁的 语法,并且仍然没有闭包(即使在JDK7中),导致了大量令人烦躁的try/catch/finally的语句,除非你使用包含了全新自定义API的架 构,但是这样会导致语言更加复杂。Java甚至有类型引用,不过我们还是不要使用它来存储任何typing/reading。

尤其是没有Java7(即使在Snorcle之后它显得更加有意义 - 我想知道javac是否会被jdkc取代?我猜javac已经达到其巅峰;而且闭包看起来不会带来任何的简化或者进步),这个问题表现得更加严重。

他看起来已经被Scala深深影响了,尤其是当他说到如果那个时候有可用的Scala,那么他不会一开始就去发明Groovy

老实说,如果在2003年就有人给我介绍了Martin Odersky Lex Spoon和Bill Venners的Programming in Scala,那么我很可能不会创造Groovy。

当然,也有一些Scala的特性他不是那么热衷:

对于任何一门语言来说,都有你喜欢和不喜欢的东西。Scala给我的早期印象的确看起来它在尝试使用一点更多的符号,但是你不需要全部使用。如果你喜欢,你可以仍然使用Java风格的OO。但是我想未来为“特殊物体”使用符号来避免和标识符冲突。

我不是嵌入import语句的狂热粉丝,使用_root_.java.util.List来区分从相对import 中得到的“全局”import。我更喜欢子前缀,例如,如果你从com.acme.cheese.model.Foo导入,那么导入 model.impl.FooImpl的时候,我喜欢使用一个相对前缀,也就是说,导入_.impl.FooImpl将会使事情简化,而且和Scala在 简化和删除冗余代码(导入java.util._是多种类型的)保持一致。

任何时候和Java相比,James都认为Scala好太多了

Java的不足可以比作大量的毛疣,那么同样在Scala中,这些地方正是表现了Scala的美、简化和强大。

Adam Bien在他的博客中指出,即使是Java之父James Gosling,看起来也是对Scala喜爱有加

在一个社区(java.net booth)举办的和James Gosling对话会议上,一个与会者问了一个非常有意思的问题:“除了Java,现在你会把哪种语言运行于JVM之上?”。答案是惊人地快速简洁:Scala

Charles Nutter,JRuby核心开发者,他也认为和Groovy和JRuby相比,Scala更可能替代Java

我必须说Scala看起来是是现在Java王座的继承人。其他在JVM的语言看起来不可能有Scala那样的能力来取代 Java,Scala背后的推动力是无可置疑的。Scala还不是一个动态语言,但是它有许多流行动态语言的特性,例如它的灵活富类型系统,稀疏和简洁的 语法,函数式语言和面向对象范式的完美结合。Scala的缺点:“太复杂”或者“太丰富”,但这些可以通过编码规范很好避免,从而构建更健壮的编辑器和工 具,以及指导多语言开发者明白如何更好地使用Scala。Scala是JVM上静态语言的重生,它也像JRuby那样延伸平台的性能,这些都是Java做 不到的。

Scala现在已经是今年JavaOne的一个主题,有一些相关的议程,而且在大会的最后一天甚至会有一个开放的讨论

你怎么想呢?Scala是不是在将来最合适取代Java的语言?或者,Java是最后一门巨型语言(LBL)

查看英文原文:Roundup: Scala as the long term replacement for Java

译者 杨晨 对数据库和搜索引擎有深入了解,尤其擅长经典计算机科学理论,对历史学兴趣浓厚。

Javac的确可以用固步自封来形容 发表人 Zhao Jeffrey 发表于
C#进步的有一点过分把 发表人 wang egmkang 发表于
Re: C#进步的有一点过分把 发表人 Zhao Jeffrey 发表于
未来是多语言时代 发表人 Jian Johnny 发表于
Re: 未来是多语言时代 发表人 Zhao Jeffrey 发表于
每种语言都有优缺点 发表人 Chang Steven 发表于
说了半天不知道Scala到底有什么好处 发表人 liu jim 发表于
Re: 说了半天不知道Scala到底有什么好处 发表人 Zhao Jeffrey 发表于
Re: 说了半天不知道Scala到底有什么好处 发表人 jn duan 发表于
是不是用google翻译的啊 发表人 be ming 发表于
宁可相信这是广告 发表人 ying hu 发表于
Re: 宁可相信这是广告 发表人 shen conghui 发表于
Re: 宁可相信这是广告 发表人 li zy 发表于
不敢相信。。。 发表人 cat tom 发表于
  1. 返回顶部

    Javac的确可以用固步自封来形容

    发表人 Zhao Jeffrey

    多少年下来,语言生产力已经落后于目前的主流语言不是一点两点了。

  2. 返回顶部

    C#进步的有一点过分把

    发表人 wang egmkang

    相比之下C#进步的也太快了吧

  3. 返回顶部

    Re: C#进步的有一点过分把

    发表人 Zhao Jeffrey

    关于这一点,我有一些古怪的感觉。
    有时候我觉得C#进步的很稳当,因为例如C# 3.0及之前的改进,都是顺利成章,非常优雅有用的。
    但是C# 4.0一下子加入了协变/逆变,这一下子就不得了,开始绕脑了。
    但是协变/逆变的支持却只针对接口和委托,类不支持,有点半吊子的感觉。
    同样,C# 3.0的Lambda表达式,虽然有了一般情况下可用的类型推导,但是实现的也半吊子。
    还有C# 4.0的表达式树,虽然支持statements了(以前只有expressions),但是编译器没跟上……还是半吊子……

  4. 返回顶部

    未来是多语言时代

    发表人 Jian Johnny

    没有哪一门语言会取代谁,只会在一个系统里运用多门语言

    PS:James Strachan虽然是Groovy的创始人,但是他早就退出Groovy的社区了,所以不要再拿他说事了,如果他不发明Groovy,也会有其他人来发明的

  5. 返回顶部

    每种语言都有优缺点

    发表人 Chang Steven

    因为复杂所以强大,每种语言都有优缺点

  6. 返回顶部

    Re: 未来是多语言时代

    发表人 Zhao Jeffrey

    “取代”和“并用”并不矛盾,并不是说语言“并用”了就不会产生淘汰了——我是指一门语言在工程应用中的消退,不是指真正灭亡。只要同一平台某语言全方面胜出,就容易产生更替,就算没有更替,也不是因为“并用”,而是其它原因(例如历史系统维护)。
    还有,这和James有没有退出Groovy社区又说明了什么?这和他的能力,他的专业性有关系吗?为什么我们一边排斥“屁股决定脑袋”,一边又要“看着别人屁股才听他说话”呢?

  7. 返回顶部

    说了半天不知道Scala到底有什么好处

    发表人 liu jim

    说得那么复杂,没见到Scala好在什么地方
    这玩意到底有没有独门绝技
    不能说人家媳妇丑,就等于你家媳妇漂亮。

  8. 返回顶部

    Re: 说了半天不知道Scala到底有什么好处

    发表人 Zhao Jeffrey

    www.infoq.com/presentations/Scala-Jonas-Boner

    这是jboner的演讲,作为概述还是很不错的。

  9. 返回顶部

    Re: 说了半天不知道Scala到底有什么好处

    发表人 jn duan

    主要是meta-programming

  10. 返回顶部

    是不是用google翻译的啊

    发表人 be ming

    感觉翻译的水平有点差

  11. 返回顶部

    宁可相信这是广告

    发表人 ying hu

    scala这种把各种特性强捏在一起的东西居然说成优美。。。

  12. 返回顶部

    Re: 宁可相信这是广告

    发表人 shen conghui

    我相信scala

  13. 返回顶部

    不敢相信。。。

    发表人 cat tom

    scala 感觉好麻烦 。。。。。。。。。。。

  14. 返回顶部

    Re: 宁可相信这是广告

    发表人 li zy

    入门后就不会这么认为了

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。