写点什么

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

  • 2009-07-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-07-19 08:0412065
用户头像

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

关注

评论

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

2023我的前端面试小结

loveX001

JavaScript

国内首款支持gRPC+WebSocket调试的工具——Apipost

不想敲代码

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

Koordinator v1.1发布:负载感知与干扰检测采集

阿里巴巴云原生

阿里云 云原生 Koordinator

小心被坑死!如果你还在用 Zookeeper 做注册中心

风铃架构日知录

Java zookeeper 程序人生 后端 注册中心

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

一体化运维,降本增效!秒云助力海富通基金打造智能运维平台

秒云

运维 金融 智能运维 IT解决方案

经常会采坑的javascript原型应试题

loveX001

JavaScript

基于ERNIELayout&pdfplumber-UIE的多方案学术论文信息抽取

汀丶

nlp 信息抽取 2022年终总结 2023新展望

web前端技术应该怎么规划学习?

小谷哥

谈谈你在面试中遇到的一面、二面、三面有什么区别?

风铃架构日知录

Java java面试 程序员面试 面试‘’ 面试流程

群晖NAS设置Calibre个人电子图书馆

刘旭东

群晖 Calibre 个人图书

贴吧低代码高性能规则引擎设计

百度Geek说

低代码 规则引擎 平台化 企业号 1 月 PK 榜

前端培训机构如何学习开发技术

小谷哥

云时代,最好用的MySQL客户端工具推荐

NineData

MySQL 数据库 GUI

2023我的前端面试小结

loveX001

JavaScript

深圳大数据培训机构怎么选

小谷哥

Rancher RFO 正式 GA

openEuler

Linux 开源 Kubernetes 操作系统 rancher

用javascript分类刷leetcode13.单调栈(图文视频讲解)

js2030code

JavaScript LeetCode

深入理解JS作用域链与执行上下文

loveX001

JavaScript

ARM 算子性能优化上手指南

MegEngineBot

深度学习 开源 性能优化 MegEngine

Kubernetes 跨集群流量调度实战 :访问控制

Flomesh

Service Mesh 服务网格 服务网格

每个人都必须为2023年的十大基本技术趋势做好准备

超自动化

AI 超自动化

一文教会你mock(Mockito和PowerMock双剑合璧)

京东科技开发者

测试 powermock Mock pom 企业号 1 月 PK 榜

Reids的BigKey和HotKey

小小怪下士

Java redis 程序员

4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

HarmonyOS开发者

HarmonyOS

SPL 实现电力高频时序数据实时存储统计

石臻臻的杂货铺

SPL

【架构设计】你的应用该如何分层呢?

JAVA旭阳

Java 架构

AIGC最近很火,给大家推荐一个已经有1000位开发者使用的中文aigc开源模型,包括ai画图、ai聊天

AIGC布道者

人工智能 机器学习 AI AIGC AI绘画

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