轉自: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 的系統架構、源代碼解釋等方面的文章發布。
相關學習資料移步: