面向 Java 开发人员的 Scala 指南系列

Ted Neward 将和您一起深入探讨 Scala 编程语言。在本系列专栏中,您将深入了解 Sacla,并在实践中看到 Scala 的语言功能。进行比较时,Scala 代码和 Java 代码将放在一起展示,但(您将发现)Scala 中的许多内容与您在 Java 编程中发现的任何内容都没有直接关联,而这正是 Scala 的魅力所在!如果用 Java 代码就能够实现的话,又何必再学习 Scala 呢?

系列文章

第 1 期,面向对象的函数编程:了解 Scala 如何利用两个领域的优点 (2008 年 2 月)
在历史上,Java 平台一直属于面向对象编程的领域,但是现在,甚至 Java 语言的坚定支持者也开始注意应用程序开发中的一种新趋势:函数编程。在这个新的系列中,Ted Neward 介绍了 Scala,一种针对 JVM 将函数和面向对象技术组合在一起的编程语言。在本文中,Ted 将举例说明您为何应该花时间学习 Scala(例如并发),并介绍如何快速从中受益。
第 2 期,类操作:理解 Scala 的类语法和语义 (2008 年 3 月)
Java 开发人员可以将对象作为理解 Scala 的出发点。本文是 “面向 Java 开发人员的 Scala 指南” 系列的第二期,作者 Ted Neward 遵循对一种语言进行评价的基本前提:一种语言的威力可以直接通过它集成新功能的能力衡量,在本文中就是指对复数的支持。跟随本文,您将了解在 Scala 中与类的定义和使用有关的一些有趣特性。
第 3 期,Scala 控制结构内部揭密 (2007 年 6 月)
Scala 是专为 Java 平台编写的,因此其语法设计会使 Java 代码编码人员感觉很轻松。同时,Scala 为 JVM 提供了函数语言的固有的强大功能,并以这些函数设计概念为出发点。在这一期的 “面向 Java 开发人员的 Scala 指南” 系列文章中,Ted Neward 将介绍两种语言之间的细微差异,从一些控制结构(比如 if、while 和 for)开始介绍。正如您将要学习到的那样,Scala 为这些结构提供了一些在其 Java 等效物中无法获得的功能和复杂性。
第 4 期,关于特征和行为:使用 Scala 版本的 Java 接口 (2008 年 7 月)
Scala 并不仅仅只给 JVM 引入了功能概念,它还为我们提供了一种对于面向对象语言设计的现代视角。在这一期的面向 Java 开发人员的 Scala 指南中,Ted Neward 介绍了 Scala 如何利用特征(trait)使对象更加简单、更易于构建。您将了解到,特征与 Java 接口和 C++ 多重继承提供的传统极性既有相似之处,也有不同之处。
第 5 期,实现继承:当 Scala 继承中的对象遇到函数 (2008 年 8 月)
Scala 对实现继承的支持与 Java 语言一样丰富,但 Scala 的继承带来了一些惊喜。这个月,Ted Neward 介绍了以 Scala 方式完成的多态,还介绍了混合函数与面向对象的语言风格,同时使您依然能够完美地映射到 Java 平台的继承模型。
第 6 期,集合类型:在 Scala 使用元组、数组和列表 (2008 年 8 月)
在 Scala 中,对象占有一席之地,然而,也经常使用到一些函数类型,比如元组、数组和列表。在这一期由 Ted Neward 撰写的流行系列文章中,您将探究 Scala 中的函数部分,并且首先研究 Scala 对函数语言中常见类型的支持。
第 7 期,包和访问修饰符:Scala 中的 public、private 以及其他成员 (2008 年 9 月)
在现实生活中,代码一定要引用并打包。在本期的面向 Java 开发人员的 Scala 指南系列中,Ted Neward 首先介绍了 Scala 的包和访问修饰符功能,接着通过研究 “apply” 机制探讨了 Scale 中的函数内容。
第 8 期,构建计算器,第 1 部分:Scala 的 case 类和模式匹配 (2008 年 9 月)
特定于领域的语言已经成为一个热门话题;很多函数性语言之所以受欢迎,主要是因为它们可以用于构建特定于领域的语言。鉴于此,在面向 Java 开发人员的 Scala 指南系列的第 8 篇文章中,Ted Neward 着手构建 一个简单的计算器 DSL,以此来展示函数性语言的构建 “外部” DSL 的强大功能。为了达到这个目的,他研究了 Scala 的一个新的特性:case 类,并重新审视一个功能强大的特性:模式匹配。
第 9 期,构建计算器,第 2 部分:Scala 的解析器组合子 (2008 年 11 月)
Ted Neward 继续讨论一个简单的计算器 DSL,以展示函数性语言在构建“外部”DSL 的强大功能,并在此过程中解决将文本输入转换成用于解释的 AST 的问题。为了解析文本输入,并将它转换成上一篇文章中解释器使用的树结构,Ted 引入了 解析器组合子(parser combinator),这是一个专门为这项任务设计的标准 Scala 库。
第 10 期,构建计算器,第 3 部分:将 Scala 解析器组合子和 case 类结合起来 (2009 年 1 月)
在构建了 AST 模式和基本前端解析器 之后(用于获取文本和生成适合解释的对象图形),作者在这篇文章中将这些知识无缝地整合起来(虽然有点麻烦)。然后他将推荐一些适合 DSL 语言及其解释器的扩展。
第 11 期,Scala 和 servlet (2009 年 2 月)
如果 Scala 是一门完全兼容 JVM 的语言,那么就应该可以在各种 “现实” 环境中使用它,比如在构建 servlet 和其他 Web 应用程序的环境中。在本文中,作者将探讨在 servlet 环境中使用 Scala。
第 12 期,深入了解 Scala 并发性:了解 Scala 如何简化并发编程并绕过陷阱 (2009 年 7 月)
对于许多(如果不是大多数)Java 程序员来说,Scala 的吸引力在于处理并发性以及编写线程安全的代码时非常轻松。在本期文章中,Ted Neward 将开始深入研究 Scala 语言及环境所提供的各种并发特性和库。
第 13 期,深入了解 Scala 并发性:了解 actor 如何提供新的应用程序代码建模方法 (2009 年 8 月)
主要芯片厂商已经开始提供同时运行两个或更多个核的芯片(虽然不一定更快),在这种情况下,并发性很快成为每个软件开发人员都关心的热门主题。在本文中,Ted Neward 通过研究 actor 深入讨论并发性这个热门主题,actor 是通过传递消息相互协作的执行实体。
第 14 期,Scala + Twitter = Scitter (2009 年 8 月)
抽象地讨论 Scala 是一件有趣的事情,但对于本专栏的大多数读者而言,需要通过实践才能理解理论和应用之间的区别。在本期文章中,Ted Neward 将使用 Scala 为客户构建基础框架,用于访问流行的微型博客系统 Twitter。
第 15 期,增强 Scitter 库 (2009 年 8 月)
抽象地谈论 Scala 的确有趣,然而一旦将其付诸实践,就会发现将它作为 “玩具” 与在工作中使用它的区别。Scala 狂热者 Ted Neward 撰写了一篇对 Scitter 的介绍,Scitter 是一个用于访问 Twitter 的 Scala 库,本文是其后续篇,在本文中,Ted Neward 为这个客户机库提供了一组更有趣也更有用的特性。
第 16 期,用 Scitter 更新 Twitter (2009 年 12 月)
Scitter 客户机库即将发布,但是还差最后一步。在这一期面向 Java 开发人员的 Scala 指南中,Ted Neward 展示如何将更新、显示和删除功能添加到用于访问 Twitter 的基于 Scala 的库中。