前 言
為什麼要寫這本書
Apache Spark、Apache Kafka 等以Scala 語言實現為基礎的架構在大數據生態圈內佔有舉足輕重的地位,它們某種程度上領導著大數據最先進的技術方向,另外Akka、Apache Gearpump 等以Scala 語言實現為基礎的架構在大數據生態圈內也備受關注,工業實作已經證明了Scala 語言的強大,這使Scala 語言近一兩年名聲大噪,進而引起許多程式語言同好及各大公司的親睞,國內外也因此掀起了一場學習Scala 語言的熱潮。
Scala 語言基於JVM 平台,能夠與Java 語言進行良好地互動操作,它最大的特點是可以將物件導向程式語言與函數式程式語言的特點結合起來。Scala語言的簡潔性和表達能力,使得Scala 語言與Java 語言相比,同樣的功能用
Scala 實現程式量要少很多。Scala 語言的許多優點,讓許多業內名家對其推崇備至, 這其中便有Java 之父James Gosling 和Groovy 語言創始人JamesStrachan。
"If I were to pick a language to use today other than Java, it would be Scala."
(如果現在讓我選擇使用除Java 之外的一種語言的話,那一定是Scala)——Java 之父James Gosling
"Though my tip though for the long term replacement of javac is Scala. I'mvery impressed with it! I can honestly say if someone had shown me theProgramming in Scala book by Martin Odersky, Lex Spoon & Bill Vennersback in 2003 I'd probably have never created Groovy."(我認為將來可能替代javac 的就是Scala ,它相當大地震撼了我,老實說如果有人在2003 年把Martin Odersky、Lex Spoon 和Bill Venners 寫的《Programming in Scala》書拿給我,我可能就不會再去發明Groovy 語言了)——Groovy(另一種以JVM平台為基礎的語言)創始人James Strachan。
目前中文Scala 方面教材的短缺某種程度上限制了Scala 語言的普及,本書試圖彌補這一空白。
本書內容
本書是筆者在Scala 學習、工作實作及教育訓練過程中的心得體會和系統歸納。內容涵蓋Scala 語言基礎知識,包含變數的定義、程式控制結構、Scala集合操作;Scala 語言中級知識,包含Scala 函數式程式設計、Scala 物件導向程式設計、Scala 模式比對;Scala 語言進階程式設計知識,包含Scala 類型參數、自動轉型、Scala 平行處理程式設計、Scala 與Java 互動操作。書中利用大量的實際案例來說明Scala 語言的應用,既能夠掌握核心語法,又能夠了解其背後的深層原理。
適合讀者群
(1)Spark、Kafka 等架構延伸開發人員
Spark、Kafka 等大數據處理 架構目前在穩定性、擴充性方面雖然已經獲得了長足的進步,但在實際使用時難免遇到問題,此時需要深入到核心原始程式碼中分析問題,在了解其架構原理與實現細節的基礎上透過修改核心原始程式碼來解決問題,這需要開發人員有很強的Scala 語言功力。
(2)Spark、Kafka 等架構應用程式開發人員
在學習Spark、Kafka 等Scala 語言實現的大數據技術架構時,這些架構大多都提供了Java、Scala、Python 等上層應用API 程式設計介面,但僅學會使用其上層API 是不夠的,因為上層API 抽象程度較高,各架構的底層實現細節、設計原理等對開發人員來說是一個黑盒子,在遇到效能等問題時,開發人員如果對底層實現細節不熟悉的話可能很難進行程式的效能最佳化。
(3)Spark、Kafka 等架構運行維護工程師
目前Spark、Kafka 等大數據處理架構基本上已經成為各大公司大數據解決方案的標準配備,但基於開放原始碼解決方案常常會面臨一些技術風險,架構本身的問題及實際應用場景的不同可能會遇到很多故障,因此對於這些使用Scala 語言實現的架構而言,運行維護工程師也需要知曉各架構的底層細節,這樣才能夠迅速定位問題並找到合適的解決辦法。
(4)從事大數據技術的Java 開發人員
Scala 語言完全相容Java 語言,Scala 語言中大量使用了Java 語言現有的函數庫,因此如果你是一個Java 大數據開發人員,在此建議學習Scala 語言,相信它會給你帶來全新的感受,甚至有拋棄Java 的念頭。
(5)大數據技術開放原始碼同好
Spark、Kafka 等是大數據技術架構中的明星,Scala 語言已經通過了工業界的檢驗,學習Scala 語言為學習這些架構的設計原理打下堅實的基礎,為以後參與開放原始碼、學習工業界最先進的大數據技術架構的優秀思想打下了堅實的基礎。
如何閱讀本書
本書涵蓋三大主要部分:
(1) Scala 語言基礎篇,主要介紹Scala 語言入門基礎知識、變數的定義、程式控制結構、Scala 集合。
(2) Scala 語言中級篇,主要介紹Scala 函數式程式設計、Scala 物件導向程式設計、Scala 模式比對。
(3) Scala 語言進階篇,主要介紹Scala 類型參數、自動轉型、Scala 平行處理程式設計、Scala 與Java 互動操作。
如果你是一名初學者,請按照書的順序從第一章基礎理論部分開始學習,學習時先認真看書中的程式範例和說明,然後照著程式親自動手實作,這樣可以達到事半功倍的學習效果;如果你是一名Scala 資深使用者,你可以自由閱讀各章內容,相信書中部分內容一定能夠給你帶來一些新的啟發。
資源下載
本書程式可以從本公司官網http://www.topteam.cc 下載。
勘誤和支援
由於筆者水準有限,加之撰寫時間倉促,書中難免出現一些錯誤或不準確的地方,懇請讀者批評指正。有任何問題,可以透過電子郵件403408607@qq.com 聯繫,將盡最大努力為讀者提供對應的解答。