Java減肥後輕量級語言:Scala全方位程式開發 | 如何做好生意 - 2024年4月

Java減肥後輕量級語言:Scala全方位程式開發

作者:周志湖牛亞真
出版社:佳魁資訊
出版日期:2018年04月30日
ISBN:9789863796473
語言:繁體中文

  本書為作者在Scala學習、實作及教育訓練過程中的心得體會並精心將之系統歸納,絕對是學習Scala語言的絕佳工具書!

  全書涵蓋Scala語言的三大主要部分:
  1. 基礎篇:介紹Scala語言入門基礎知識、變數的定義、程式控制結構、Scala集合。
  2. 中級篇:介紹Scala函數式程式設計、Scala物件導向程式設計、Scala模式比對。
  3. 進階篇:介紹Scala類型參數、自動轉型、Scala平行處理程式設計、Scala與Java互動操作。

  適用:Scala語言初學者、有興趣者,大數據開發人員與框架運維工程師、軟體培訓機構以及電腦相關科系學生。

  書附內容
  本書範例可至佳魁資訊官網下載

作者簡介

周志湖

  電子科技大學電腦軟體與理論碩士,研究機器學習與模式識別,任職綠城房地產集團資訊管理部,擔任平台架構師、資料開發主管。對傳統資料倉、基於Hadoop和Spark的大資料倉架構有深入的研究。

牛亞真

  中國科學院大學電腦資訊處理與檢索方向碩士,Hadoop大資料工程師,目前主要從事分散式環境下的資料分析、資料採擷相關工作。

Chapter 01 Scala入門
1.1 Scala簡介
1.2 Scala開發環境架設
1.3 Scala Hello World
1.4 Intellij IDEA常用快捷鍵
1.5 互動式指令行使用

Chapter 02 變數及基本資料型別
2.1 變數
2.2 基本資料型態
2.3 基本類型操作
2.4 運算子的優先順序
2.5 元組類型
2.6 符號類型

Chapter 03 程式控制結構
3.1 if敘述
3.2 while循環敘述
3.3 for循環敘述

Chapter 04 集合
4.1 集合簡介
4.2 陣列
4.3 列表 (List)
4.4 集合 (Set)
4.5 對應 (Map)
4.6 佇列 (Queue)
4.7 堆疊 (Stack)

Chapter 05 函數
5.1 函數
5.2 值函數
5.3 高階函數
5.4 閉包
5.5 函數柯里化 (Currying)
5.6 部分應用函數
5.7 偏函數

Chapter 06 Scala物件導向程式設計(上)
6.1 類別與物件
6.2 主建構函數
6.3 輔助建構函數
6.4 繼承與多形
6.5 成員存取控制
6.6 抽象類別
6.7 內部類別與內建物件
6.8 匿名類別

Chapter 07 Scala物件導向程式設計(下)
7.1 trait簡介
7.2 trait的使用
7.3 trait與類別
7.4 多重繼承問題
7.5 本身類型

Chapter 08 套件 (package)
8.1 套件的定義
8.2 套件的使用和作用域
8.3 套件物件
8.4 import進階特性

Chapter 09 模式比對
9.1 模式比對簡介
9.2 模式符合的7大類型
9.3 模式比對原理
9.4 正規表示法與模式比對
9.5 for循環中的模式比對
9.6 模式比對與範例類別、範例物件

Chapter 10 自動轉型
10.1 自動轉型簡介
10.2 自動轉型函數
10.3 隱式類別與隱式物件
10.4 隱式參數與隱式值
10.5 自動轉型規則與問題

Chapter 11 型態參數
11.1 類別與類型
11.2 泛型
11.3 類型變數界定
11.4 視圖界定
11.5 上下文界定
11.6 多重界定
11.7 協變與逆變
11.8 進階類型

Chapter 12 Scala平行處理程式設計基礎
12.1 Scala平行處理程式設計簡介
12.2 Actor
12.3 Typed Actor
12.4 Dispatcher
12.5 Router
12.6 容錯

Chapter 13 Scala與Java的互動操作
13.1 Java與Scala集合互動操作
13.2 Scala與Java泛型互動操作
13.3 Scala trait在Java中的使用
13.4 Scala與Java異常處理互動操作

前言

為什麼要寫這本書

  Apache Spark、Apache Kafka等以Scala語言實現為基礎的架構在大數據生態圈內佔有舉足輕重的地位,它們某種程度上領導著大數據最先進的技術方向,另外Akka、Apache Gearpump等以Scala語言實現為基礎的架構在大數據生態圈內也備受關注,工業實作已經證明了Scala語言的強大,這使Scala語言近一兩年名聲大噪,進而引起許多程式語言同好及各大公司的親睞,國內外也因此掀起了一場學習Scala語言的熱潮。

  Scala語言基於JVM平台,能夠與Java語言進行良好地互動操作,它最大的特點是可以將物件導向程式語言與函數式程式語言的特點結合起來。Scala語言的簡潔性和表達能力,使得Scala語言與Java語言相比,同樣的功能用Scala實現程式量要少很多。Scala語言的許多優點,讓許多業內名家對其推崇備至,這其中便有Java之父James Gosling和Groovy語言創始人James Strachan。

  "If I were to pick a language to use today other than Java, it would be Scala."1(如果現在讓我選擇使用除Java之外的一種語言的話,那一定是Scala)——Java之父James Gosling

  "Though my tip though for the long term replacement of javac is Scala. I’m very impressed with it! I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy."(我認為將來可能替代javac的就是Scala ,它相當大地震撼了我,老實說如果有人在2003年把Martin Odersky、Lex Spoon和Bill Venners寫的《Programming in Scala》書拿給我,我可能就不會再去發明Groovy語言了)2——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資深使用者,你可以自由閱讀各章內容,相信書中部分內容一定能夠給你帶來一些新的啟發。

  勘誤和支援

  由於筆者水準有限,加之撰寫時間倉促,書中難免出現一些錯誤或不準確的地方,懇請讀者批評指正。有任何問題,可以透過電子郵件[email protected]聯繫,將盡最大努力為讀者提供對應的解答。


相關書籍