Kotlin 移動應用開發 (Kotlin for Android App Development)
內容描述
近年來,Kotlin已逐漸成為Android應用程序開發人員的優選語言。
本書通過大量的代碼對Kotlin進行了深入淺出的講解,
並通過兩個Android應用程序開發來指導讀者進行實踐,
以幫助讀者使用Kotlin編寫出更健壯、更易維護的Android應用程序。
全書分兩部分,共10章。
第一部分(第1~6章)從細節入手講解Kotlin的語言特性。
第1章概述Kotlin,
第2章介紹Kotlin的基本語言結構(如控制流、函數和異常),
第3章展示Kotlin中如何使用函數式編程以及函數式編程的優點,
第4章講解Kotlin中如何處理面向對象,
第5章討論與Java的互操作性,
第6章涵蓋以協程為主要內容的並發性。
第二部分(第7~10章)通過完成兩個Android應用來將第一部分學到的知識加以實踐。
第7章和第8章分別介紹使用Kotlin開發一個待辦事項應用Kudoo App和一個為使用者提供營養數據的應用Nutrilicious,
第9章涵蓋綜合使用Kotlin的語言特性來創建簡單的領域特定語言,
第10章為Java遷移到Kotlin提供指導。
本書適合想要學習Kotlin並利用它來開發Android應用程序的所有讀者閱讀。
目錄大綱
★第一部分學習Kotlin
●第1章Kotlin簡介2
1.1 Kotlin是什麼2
1.2 Kotlin的目標和語言特性3
1.3 為什麼在Android系統開發中使用Kotlin4
1.3.1 Android中的Java4
1.3.2 Android中的Kotlin5
1.4 Kotlin與Java 85
1.5 支持的工具與社區6
1.6 商業角度6
1.7 誰在使用Kotlin7
1.8 本章小結8
●第2章走進Kotlin9
2.1 Kotlin REPL交互式編程命令行9
2.2 變量和數據類型10
2.2.1 變量聲明10
2.2.2 基本數據類型11
2.2.3 類型推導12
2.3 條件語句13
2.3.1 將if和when作為語句13
2.3.2 條件表達式15
2.4 循環和範圍17
2.4.1 while循環17
2.4.2 for循環17
2.5 函數19
2.5.1 函數簽名19
2.5.2 單行表達式函數的簡寫方式20
2.5.3 main函數20
2.5.4 參數默認值和指定參數名稱21
2.5.5 擴展函數22
2.5.6 中綴函數24
2.5.7 運算符函數25
2.6 空安全26
2.6.1 可空類型26
2.6.2 可空類型的使用27
2.7 相等性檢查29
2.8 異常處理30
2.8.1 異常處理的原則30
2.8.2 Kotlin的異常處理31
2.8.3 Checked異常和Unchecked異常32
2.9 本章小結33
●第3章Kotlin中的函數式編程34
3.1 函數式編程的目的34
3.2 函數36
3.3 Lambda表達式37
3.4 高階函數38
3.5 集合的使用41
3.5.1 集合API在Kotlin與Java中的區別42
3.5.2 在Kotlin中實例化集合42
3.5.3 集合的訪問和編輯43
3.5.4 過濾集合44
3.5.5 映射集合44
3.5.6 集合分組45
3.5.7 集合關聯46
3.5.8 計算最小值、最大值,以及和46
3.5.9 集合排序46
3.5.10 折疊集合47
3.5.11 鍊式函數調用49
3.6 作用域函數49
3.6.1 let函數的使用49
3.6.2 apply函數的使用50
3.6.3 with函數的使用51
3.6.4 run函數的使用52
3.6.5 also函數的使用54
3.6.6 use函數的使用54
3.6.7 組合高階函數55
3.6.8 帶接收者的Lambda56
3.7 惰性序列57
3.7.1 惰性計算57
3.7.2 使用惰性序列58
3.7.3 惰性序列的性能60
3.8 本章小結62
●第4章Kotlin中的面向對象63
4.1 類和對象的實例化63
4.2 屬性64
4.3 方法73
4.4 主構造函數和次構造函數76
4.5 繼承和重寫規則78
4.6 類型檢查和轉換82
4.7 可見性84
4.8 數據類86
4.9 枚舉89
4.10 密封類91
4.11 對象和伴生93
4.12 泛型97
4.13 本章小結112
●第5章與Java的互操作性113
5.1 在Kotlin中使用Java代碼113
5.2 在Java中使用Kotlin代碼122
5.3 互操作的最佳實踐137
5.4 本章小結138
●第6章Kotlin中的並發140
6.1 並發140
6.1.1 普遍難題142
6.1.2 最先進的解決方案143
6.2 Kotlin中的協程146
6.2.1 引入協程146
6.2.2 基本概念147
6.2.3 掛起函數147
6.2.4 協程構建器150
6.2.5 生成器169
6.2.6 actors和channels171
6.2.7 並發樣式178
6.2.8 協程實踐178
6.2.9 內部實現183
6.3 本章小結185
★第二部分使用Kotlin進行Android開發
●第7章使用Kotlin進行Android應用程序開發:Kudoo App188
7.1 在Android上配置Kotlin188
7.2 編寫待辦事項列表應用Kudoo192
7.3 本章小結219
●第8章使用Kotlin進行Android應用程序開發:Nutrilicious221
8.1 新建並配置項目222
8.2 為主頁面添加RecyclerView223
8.3 調用Nutrition的API從USDA中拉取數據230
8.4 映射JSON數據和領域類236
8.5 在搜索邏輯中使用ViewModel241
8.6 增加搜索食品功能243
8.7 介紹Fragment I:實現搜索Fragment246
8.8 介紹Fragment II:實現收藏Fragment254
8.9 在Room數據庫中存儲用戶收藏食品數據258
8.10 從USDA食品報告API中拉取營養詳情數據265
8.11 集成詳情頁270
8.12 在數據庫中存儲食品詳情277
8.13 為可操作的數據添加RDI282
8.14 優化用戶體驗286
8.15 本章小結288
●第9章Kotlin DSL289
9.1 DSL簡介289
9.2 在Kotlin中創建DSL292
9.3 DSL在Android佈局中的應用—使用Anko301
9.4 DSL在Gradle構建腳本中的應用308
9.5 本章小結315
●第10章遷移到Kotlin316
10.1 軟件中的移植316
10.2 引領改變317
10.3 部分或整體遷移320
10.4 從何處開始322
10.5 工具支持325
10.6 本章小結327
附錄更多資源329
術語表332
作者介紹
【作者簡介】
★Peter Sommerhoff
一位對教學充滿熱情的軟件開發者,為此,他創立了CodeAlong.TV。
如今,他為全球35000多名積極進取的學生教授開發與設計課程。
他擁有德國亞琛工業大學計算機科學碩士學位。
【譯者簡介】
★陳洋
ThoughtWorks高級諮詢師,常年從事並熱衷於Android插件化、
組件化的開發和培訓工作,同時擁有PMP、網絡工程師、Oracle OCP認證。
★王亞鑫
ThoughtWorks諮詢師,常年從事Android及後端開發工作,
在使用Kotlin進行後端和Android開發方面具有豐富的經驗。
★康顥曦
ThoughtWorks高級諮詢師,常年從事Android開發工作,
對Kotlin組件化開發具有豐富的經驗。2018年成都GDG和Android Bus社區講師。