BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Dio Synodinos 关注 3 他的粉丝 ,译者 杨晨 关注 0 他的粉丝 发布于 2009年7月20日. 估计阅读时间: 5 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

作为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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

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

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

C#进步的有一点过分把 by wang egmkang

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

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

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

未来是多语言时代 by Jian Johnny

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

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

每种语言都有优缺点 by Chang Stephen

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

Re: 未来是多语言时代 by Jeffrey Zhao

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

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

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

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

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

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

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

主要是meta-programming

是不是用google翻译的啊 by be ming

感觉翻译的水平有点差

宁可相信这是广告 by ying hu

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

Re: 宁可相信这是广告 by shen conghui

我相信scala

不敢相信。。。 by cat tom

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

Re: 宁可相信这是广告 by li zy

入门后就不会这么认为了

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

14 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT