转自:https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-scala/index.html
Scala 语言衍生自 Funnel 语言。Funnel 语言尝试将函数式编程和 Petri 网结合起来,而 Scala 的预期目标是将面向对象、函数式编程和强大的类型系统结合起来,同时让人要能写出优雅、简洁的代码。本文希望通过一系列 Java 与 Scala 语言编写的相同程序代码的对比,让读者能够尽快地熟悉 Scala 语言。
Scala 隐式引用了包 java.lang、scala 的成员、Predef 的单例对象。Predef 包括 println 和 assert 等等。清单 21 和 23 所示代码里,无论 ChecksumAccumulator.scala 还是 Summer.scala 都不是脚本,因为他们是以定义结束的。反过来说,脚本必然以一个结果表达式结束。因此如果您尝试以脚本方式执行 Summer.scala,Scala 解释器将会报错说 Summer.scala 不是以结果表达式结束的(当然前提是您没有在 Summer 对象定义之后加上任何您自己的表达式)。正确的做法是,您需要用 Scala 编译器真正地编译这些文件,然后执行输出的类文件。其中一种方式是使用 scalac,Scala 的基本编译器。输入$ scalac ChecksumAccumulator.scala Summer.scala 命令会编译您的源代码,每次编译器启动时,都要花一些时间扫描 jar 文件内容,并在即使您提交的是新的源文件也需要查看之前完成其他初始化工作。
因此,Scala 的发布包里还包括了一个叫做 fsc(快速 Scala 编译器)的 Scala 编译器后台服务:daemon。您可以这样使用: $ fsc ChecksumAccumulator.scala Summer.scala 第一次执行 fsc 时,会创建一个绑定在您计算机端口上的本地服务器后台进程。然后它就会把文件列表通过端口发送给后台进程去编译,后台进程完成编译。下一次您执行 fsc 时,后台进程就已经在运行了,于是 fsc 将只是把文件列表发给后台进程,它会立刻开始编译文件。使用 fsc,您只需要在第一次等待 Java 运行时环境的启动。如果想停止 fsc 后台进程,可以执行 fsc -shutdown 来关闭。
不论执行 scalac 还是 fsc 命令,都将创建 Java 类文件,然后您可以用 Scala 命令,就像之前的例子里调用解释器那样运行它。不过,不是像前面每个例子里那样把包含了 Scala 代码的带有.scala 扩展名的文件交给它解释执行,而是采用这样的方式,$ scala Summer of love。
本文对 Scala 语言的基础做了一些解释,由于篇幅所限,所以下一篇文章里会针对 Spark 附带的示例代码、Spark 源代码中出现的 Scala 代码进行解释。
通过本文的学习,读者了解了如何下载、部署 Scala。此外,通过编写 Scala 与 Java 相同功能的程序,让 Java 程序员可以快速掌握 Scala 语言,为后面的 Spark 源代码分析文章做知识准备。目前市面上发布的 Spark 中文书籍对于初学者来说大多较为难读懂,作者力求推出一系列 Spark 文章,让读者能够从实际入手的角度来了解 Spark。后续除了应用之外的文章,还会致力于基于 Spark 的系统架构、源代码解释等方面的文章发布。
相关学习资料移步: