Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

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

  • 2009 年 7 月 19 日
  • 本文字数:1513 字

    阅读完需:约 5 分钟

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

2009 年 7 月 19 日 08:0411847
用户头像

发布了 90 篇内容, 共 30.1 次阅读, 收获喜欢 2 次。

关注

评论

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

『腾讯网』赛车飞艇平台[手机乐乎]

天马行空

赛车飞艇平台

Android 框架解析:热修复框架 Tinker 从使用到 patch 加载、生成、合成原理分析

拭心

android Framework 内容合集 签约计划第二季 shixinzhang

架构实战营毕业总结

紫云

架构实战营

Android 进阶之路:深入理解常用框架实现原理

拭心

android Framework 内容合集 技术专题合集 shixinzhang

『腾讯网』飞艇技巧图片图解【重点推荐】[手机乐乎]

天马行空

飞艇技巧图片图解

极客时间【架构实战营】第二期 毕业设计

Geek_91606e

架构实战营

Git进阶(八):git stash 与 git add

No Silver Bullet

git 12月日更

【Promise 源码学习】第十二篇 - Promise.race 的实现

Brave

源码 Promise 12月日更

极客时间架构实战营总结

jjn0703

架构实战营

『腾讯网』1分彩计划软件下载[手机乐乎]

天马行空

1分彩计划软件下载

自定义规则删除过期文件(linux)

liuzhen007

28天写作 12月日更

『腾讯网』德国飞艇平台[手机乐乎]

天马行空

德国飞艇平台

现代软件架构师的10个技巧

俞凡

架构 微服务 云原生

Android 框架解析:Picasso 核心功能实现原理

拭心

android Framework 内容合集 签约计划第二季 shixinzhang

JetPack-Paging3-入门

Changing Lin

12月日更

『腾讯网』幸运彩票是真是假[手机乐乎]

天马行空

幸运彩票是真是假

极客时间架构实战营 - 模块九及大作业

jjn0703

架构实战营

存储引擎漫话

ElvinYang

B-tree LSM-Tree Hash Index MySQL InnoDB

Golang Gin 框架之模型绑定(八)

liuzhen007

28天写作 12月日更

Springboot异步任务执行及监控

xcbeyond

springboot 异步任务 28天写作 12月日更

Android 框架解析:Picasso 源码基本架构

拭心

android Framework 内容合集 签约计划第二季 shixinzhang

JavaScript基础语法之对象的哪些事

前端史塔克

JavaScript 大前端 js 基础语法 12月日更

Android 框架解析:OkHttp 请求原理基本认识

拭心

android Framework 内容合集 签约计划第二季 shixinzhang

Android 框架解析:深入理解 Retrofit 实现

拭心

android Framework 内容合集 签约计划第二季 shixinzhang

『腾讯网』极速飞艇游戏[手机乐乎]

天马行空

极速飞艇游戏

『腾讯网』腾讯分分彩 官网平台[手机乐乎]

天马行空

腾讯分分彩 官网平台

毕业设计:电商秒杀系统架构设计

紫云

随手记录一下消息队列的一些模型

终于有了一个人人可以访问的网站了

老表

WordPress 个人网站 跟老表学云服务器

『腾讯网』网贷强制上岸后果[手机乐乎]

天马行空

网贷强制上岸后果

『腾讯网』腾讯分分彩计划最准软件[手机乐乎]

天马行空

腾讯分分彩计划最准软件

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

综述:Scala是Java未来的后继者_Java_Dio Synodinos_InfoQ精选文章