您所在的位置:开发 > Java > Java+ > Java程序员,你为什么要关注Scala(1)

Java程序员,你为什么要关注Scala(1)

2009-05-26 09:00 Alpha 编译 51CTO.com 字号:T | T
一键收藏,随时查看,分享好友!

Scala是一种针对 JVM 将函数和面向对象技术组合在一起的编程语言。Martin Odersky创建这个语言之时,希望它能够解决Java语言中的一些问题。Scala现在还相对比较小众,但也已经拥有了相当忠实的拥护群体。

AD:

51CTO编辑推荐:Scala编程语言专题

【51CTO独家特稿】上周我们从Scala创始人Martin Odersky的访谈录中了解了Scala创建的背景,这次让我们来看一看Martin Odersky对于Scala语言的设计目标是怎么说的。在创造“超越Java的语言”的过程中,具体都需要考虑到哪些方面呢?

让步

thinking in Javaprogramming in Scala

Frank Sommers:您之前提到,想要创造一种存在于Java体系内,集成Java基础架构的语言。为了做到这一点,Scala要做出什么样的让步,使其能够兼容Java平台? 

Martin Odersky:很幸运,我们不需要做出太多妥协,或者说,很难判断我们所做出的所有妥协都是对我们不利或是有利的。其中一个我们不得不做的妥协是购买Java的静态重载模型。也许我们应该更积极地尝试一些其他方法,如使用多方法,尽管当时我们尝试过这一点,但并没有充分探讨有关多方法的设计。也许直到今天也还没有充分探讨过,所以我不能完全肯定这种方法是否行得通。这种方法本来有着令人振奋的可能性,但我们并没有采用它,因为我们想保持与Java的兼容性。 

另外一件时而会引来人们否定的事是Scala既包含Traits技术又包含类技术。大家认为一个整洁的设计应该是只采用Traits技术。目前已有一些只采用Traits而放弃类概念的整洁设计,但我们并没有这样做。因为我们想从这两方面保留与Java的互用性。我们希望有一种方式可以让Java代码很容易地调用Scala代码,而Traits并不含有映射到Java的特性,因为在Java中根本不存在这种技术。因此,我们选择了Java中所拥有的类的概念,因为我们希望能够向后映射,这样我们就可以很容易地在两个方向保留互用性。 

第3个问题,与其说是语言上的问题,不如说是类库的问题。我们很想要抛弃null(空值)这种概念。NULL是很多错误的根源。在Scala中,不允许null作为任何类型的可能值,取而代之的是选项类型(option type)。当然,有很多Java类库中的类都返回null,我们必须要解决这个问题。

51CTO编者注:在新语言兼容旧语言的这个方面,《Think in Java》和《Think in C++》的作者Bruce Eckel也曾经写过一篇文章,就C++和C的关系评论兼容老语言为新语言带来的好处和限制。这篇文章相关的讨论可以参见这里

内容导航



分享到:

热点职位

更多>>

热点专题

更多>>

读书

Java程序设计教程
本书对第1版的某些章节作了合理的调整,增加了部分实用的程序,并在每一章的最后加了适量的练习题,以巩固前面所学的知识,更加有利

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i