1.4 本书的内容

我写这本书的目标是让你快速理解Scala,可以用它编写并发、可伸缩、有表现力的程序。为了做到这些,你需要学很多东西,但是还有很多你也不必了解。如果你的目标是了解Scala的全部,本书满足不了你。我们已经有了这样一本书,叫Programming in Scala [OSV08],由Martin Odersky、Lex Spoon和Bill Venners编写,它相当深入的介绍了这门语言,非常值得一读。本书里讲述的是开始使用Scala所需的一些必要概念。

我假定你非常熟悉Java。因此,你并不会从这本书里面学到基本的编程概念。然而,我并不假定你拥有函数式编程的知识,或是了解Scala语言本身——你会在本书里学到。

我是为忙碌的Java开发者编写的这本书,因此我的目标是让你很快觉得Scala很舒服,以便你可以很快地开始用它构建真实的应用。你会看到概念介绍得相当快,但会提供很多例子帮助你理解它们的。

本书的其余部分按照如下方式组织。

在每章里,你都会学到一些必需的知识点,让你更接近于用Scala编写并发代码。

第2章,起步。这一章我会带着你安装Scala,让你的第一个Scala代码执行起来。我会为你展示如何把Scala当作脚本用,如何像传统的Java代码一样编译,以及如何使用Java工具运行它。

第3章,Scala步入正轨。从这一章开始,你会拥有一次快速Scala之旅,了解它的简洁,了解它如何处理Java类和基本类型,如何在已有Java知识的基础上学习新内容。对于那些毫无戒心的Java程序员而言,Scala还是有些惊奇的,你会在这章看到这些惊奇。

第4章,Scala的类。作为一门纯粹的面向对象语言,Scala处理类的方式与Java有相当大的差异。比如,它没有static关键字,然而你可以用伴生对象创建类成员。你会在这一章中学到Scala的OO编程方式。

第5章,自适应类型⑧。Scala是一种静态类型语言。它提供了编译时检查,但是与其他静态类型语言不同,它没有繁文缛节的⑨语法。在这一章中,你会学到Scala轻量级自适应类型。

⑧自适应类型(Sensible Typing),并不是Scala本身的术语,而是作者为了形容Scala类型的特性而想出的一个说法。这章主要是描述Scala的类型的推演能力和类型体系。从字面理解,是有意识或有知觉的确定类型,把Scala比作一个生命体,用以形容Scala的类型特征。这里把它译作自适应类型。——译者注

⑨参见附录A。

第6章,函数值和闭包。函数值和闭包是函数式编程的核心概念,也是Scala的一个最常见特征。在这一章中,我会带你领略如何善用它们。

第7章,Trait和类型转换。你会学到如何抽象行为,并将其混入任意的类中,也会了解到Scala的隐式类型转换。

第8章,使用容器,Scala提供可变和不变的容器。你可以很简洁的创建它们,通过闭包进行迭代,正如你在这一章所见到的。

第9章,模式匹配和正则表达式。从这章开始,你会开始探索模式匹配功能。它是Scala最强大的特性之一,也是你需要在并发编程中依赖的一个特性。

第10章,并发编程。在这一章,你会读到本书中最令人期待的特性。你会学习到强大的基于事件的并发模型和用做支撑的actor API。

第11章,与Java混合。一旦你解决了如何使用并发的问题,你就会想把它用到你的Java应用里面了。这一章会为你展示如何做到这一点。

第12章,Scala的单元测试。如果你想确保你键入的代码确实做了你想做的事情,那么Scala拥有的单元测试可以提供良好的支持。在这一章中,你会学习如何使用JUnit、TestNG和基于Scala的测试工具,测试Scala和Java代码。

第13章,异常处理。我知道你能写出很好的代码。然而,你还是不得不处理你调用代码所抛出的异常。Scala有一种不同于Java的异常处理方法,你会在这一章中看到。

第14章,使用Scala。在这章中,我会把这本书的概念放到一起,为你展示如何善用Scala构建真实世界的应用。

最后,在附录A中,你会找到本书所引用的一些Web上的文章和blog。