注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書人文社科法律法律法規(guī)商法Kotlin編程實戰(zhàn):創(chuàng)建優(yōu)雅、富于表現(xiàn)力和高性能的JVM與Android應(yīng)用程序

Kotlin編程實戰(zhàn):創(chuàng)建優(yōu)雅、富于表現(xiàn)力和高性能的JVM與Android應(yīng)用程序

Kotlin編程實戰(zhàn):創(chuàng)建優(yōu)雅、富于表現(xiàn)力和高性能的JVM與Android應(yīng)用程序

定 價:¥129.00

作 者: [美] 文卡特·蘇布拉馬尼亞姆(Venkat Subram) 著,劉紅泉 譯 譯
出版社: 機(jī)械工業(yè)出版社
叢編項: 華章程序員書庫
標(biāo) 簽: 暫缺

ISBN: 9787111682752 出版時間: 2021-07-01 包裝: 平裝
開本: 16開 頁數(shù): 376 字?jǐn)?shù):  

內(nèi)容簡介

  本書面向程序員、開發(fā)主管、架構(gòu)師和技術(shù)經(jīng)理。假定讀者熟悉編程的基礎(chǔ)知識,同時也假定讀者對Java和JDK有一定的了解。 第I部分主要介紹使用Kotlin編寫腳本。 第II部分是關(guān)于面向?qū)ο蟮木幊獭?第III部分,你將學(xué)習(xí)如何使用該語言的函數(shù)風(fēng)格的功能。 第IV部分將把目前為止所學(xué)的知識結(jié)合起來,使你的代碼更加流暢,并教會你如何創(chuàng)建內(nèi)部領(lǐng)域特定語言(DSL)。 在第V部分中,你將了解新的協(xié)程和異步編程。 第VI部分涉及Java的互操作、測試、使用帶有Spring的Kotlin,以及使用Kotlin編寫Android應(yīng)用程序。

作者簡介

  Venkat Subramaniam博士是一位獲獎作家,Agile Developer公司的創(chuàng)始人,休斯敦大學(xué)的教學(xué)型教授。他在北美洲、歐洲和亞洲培訓(xùn)和指導(dǎo)了數(shù)千名軟件開發(fā)人員,并定期應(yīng)邀在國際會議上發(fā)言。他是多本書的作者(合著者),包括2007年獲得Jolt Productivity獎的Practices of an Agile Developer一書。

圖書目錄

第1章 你好Kotlin1
1.1 愛上Kotlin的理由2
1.1.1 多范式編程3
1.1.2 具有類型推斷的靜態(tài)類型4
1.2 為什么選擇Kotlin5
1.3 帶Kotlin去兜兜風(fēng)5
1.3.1 安裝Kotlin SDK6
1.3.2 驗證安裝6
1.4 編譯成字節(jié)碼并運行7
1.4.1 在命令行上運行7
1.4.2 在IDE中運行8
1.4.3 使用REPL進(jìn)行實驗8
1.4.4 作為腳本運行9
1.5 編譯成其他目標(biāo)11
1.6 選擇哪個選項11
1.7 本章小結(jié)12

【第一部分 使用Kotlin編寫腳本】
第2章 從Java角度了解Kotlin的基本知識14
2.1 減少輸入15
2.1.1 分號是可選的15
2.1.2 變量類型規(guī)范是可選的15
2.1.3 類和函數(shù)是可選的17
2.1.4 try-catch是可選的18
2.2 合理的警告19
2.3 選擇val而不是var20
2.4 改進(jìn)的相等性檢查21
2.5 字符串模板23
2.6 原始字符串24
2.6.1 沒有轉(zhuǎn)義24
2.6.2 多行字符串24
2.7 更多的表達(dá)式,更少的語句26
2.8 本章小結(jié)28

第3章 使用函數(shù)29
3.1 創(chuàng)建函數(shù)30
3.1.1 KISS函數(shù)30
3.1.2 返回類型和類型推斷30
3.1.3 所有的函數(shù)都是表達(dá)式31
3.1.4 定義參數(shù)32
3.1.5 帶有塊體的函數(shù)33
3.2 默認(rèn)參數(shù)和命名參數(shù)34
3.2.1 演化帶有默認(rèn)參數(shù)的函數(shù)34
3.2.2 使用命名參數(shù)提高可讀性35
3.3 vararg和spread37
3.3.1 可變數(shù)量的實參37
3.3.2 spread運算符38
3.4 解構(gòu)39
3.5 本章小結(jié)40

第4章 外部迭代和參數(shù)匹配42
4.1 范圍與迭代43
4.1.1 范圍類43
4.1.2 正向迭代43
4.1.3 反向迭代44
4.1.4 跳過范圍內(nèi)的值44
4.2 遍歷數(shù)組和列表45
4.3 何時應(yīng)該使用when47
4.3.1 when用作表達(dá)式47
4.3.2 when用作語句49
4.3.3 when和變量的作用域49
4.4 本章小結(jié)50

第5章 使用集合51
5.1 集合的類型51
5.1.1 Kotlin所添加的便利方法52
5.1.2 視圖53
5.2 使用Pair和Triple53
5.3 對象和基元數(shù)組55
5.4 使用列表56
5.5 使用集合59
5.6 使用映射59
5.7 本章小結(jié)61

第6章 使用類型安全性解決問題63
6.1 Any和Nothing類64
6.1.1 Any是基類64
6.1.2 Nothing比void更深入65
6.2 可空的引用65
6.2.1 null是件不好的事66
6.2.2 使用可空類型67
6.2.3 安全調(diào)用運算符69
6.2.4 Elvis運算符69
6.2.5 不要使用不安全的斷言運算符70
6.2.6 使用when71
6.3 類型檢查和轉(zhuǎn)換72
6.3.1 類型檢查72
6.3.2 使用is72
6.3.3 智能轉(zhuǎn)換73
6.3.4 使用帶有when的類型檢查和智能轉(zhuǎn)換75
6.4 顯式類型轉(zhuǎn)換75
6.5 泛型:參數(shù)類型的變化和約束77
6.5.1 類型不變性77
6.5.2 使用協(xié)變79
6.5.3 使用逆變81
6.5.4 使用where的參數(shù)類型約束82
6.5.5 星投影83
6.6 具體化的類型參數(shù)84
6.7 本章小結(jié)86

【第二部分 面向?qū)ο蟮腒otlin】
第7章 對象和類88
7.1 對象和單例88
7.1.1 帶有對象表達(dá)式的匿名對象89
7.1.2 帶有對象聲明的單例91
7.1.3 頂級函數(shù)與單例92
7.2 創(chuàng)建類93
7.2.1 最小的類94
7.2.2 只讀屬性94
7.2.3 創(chuàng)建實例94
7.2.4 讀寫屬性95
7.2.5 底層探秘—字段和屬性95
7.3 伴生對象和類成員102
7.3.1 類級別成員102
7.3.2 訪問同伴103
7.3.3 Companion作為Factory103
7.3.4 不是非常靜態(tài)的104
7.4 創(chuàng)建泛型類105
7.5 數(shù)據(jù)類106
7.6 本章小結(jié)108

第8章 類層次結(jié)構(gòu)和繼承110
8.1 創(chuàng)建接口和抽象類110
8.1.1 創(chuàng)建接口111
8.1.2 創(chuàng)建抽象類113
8.1.3 是接口還是抽象類113
8.2 嵌套類和內(nèi)部類114
8.3 繼承116
8.4 Sealed類119
8.5 創(chuàng)建和使用枚舉120
8.6 本章小結(jié)122

第9章 通過委托進(jìn)行擴(kuò)展124
9.1 何時選擇委托而不是繼承125
9.2 使用委托進(jìn)行設(shè)計126
9.2.1 一個設(shè)計問題126
9.2.2 繼承的錯誤指向127
9.2.3 委托—艱難的方式128
9.2.4 使用Kotlin的by來進(jìn)行委托129
9.3 委托給一個參數(shù)130
9.4 處理方法沖突131
9.5 Kotlin委托的注意事項133
9.6 委托變量和屬性135
9.6.1 委托變量135
9.6.2 委托屬性137
9.7 內(nèi)置的標(biāo)準(zhǔn)委托139
9.7.1 有點兒懶惰也沒關(guān)系140
9.7.2 Observable委托141
9.7.3 行使你的可否決權(quán)利142
9.8 本章小結(jié)143

【第三部分 函數(shù)式Kotlin】
第10章 使用lambda進(jìn)行函數(shù)式編程146
10.1 函數(shù)式風(fēng)格146
10.1.1 什么是函數(shù)式風(fēng)格147
10.1.2 為什么以及何時使用函數(shù)式風(fēng)格148
10.2 lambda表達(dá)式149
10.2.1 lambda的結(jié)構(gòu)149
10.2.2 傳遞lambda150
10.2.3 使用隱式參數(shù)151
10.2.4 接收lambda151
10.2.5 用lambda作為最后一個參數(shù)151
10.2.6 使用函數(shù)引用152
10.2.7 函數(shù)返回函數(shù)154
10.3 lambda和匿名函數(shù)155
10.4 閉包和詞法作用域157
10.5 非局部和帶標(biāo)簽的return158
10.5.1 默認(rèn)情況下不允許使用return 158
10.5.2 帶標(biāo)簽的return159
10.5.3 非局部return161
10.6 帶有l(wèi)ambda的內(nèi)聯(lián)函數(shù)163
10.6.1 默認(rèn)情況下沒有內(nèi)聯(lián)優(yōu)化163
10.6.2 內(nèi)聯(lián)優(yōu)化164
10.6.3 對參數(shù)精心選擇noinline 165
10.6.4 內(nèi)聯(lián)lambda中允許非局部return166
10.6.5 crossinline參數(shù)167
10.6.6 inline和return的良好實踐168
10.7 本章小結(jié)169

第11章 內(nèi)部迭代和延遲計算170
11.1 外部迭代器與內(nèi)部迭代器171
11.2 內(nèi)部迭代器172
11.2.1 filter、map和reduce172
11.2.2 得到第一個和最后一個174
11.2.3 flatten和flatMap175
11.2.4 排序177
11.2.5 將對象進(jìn)行分組177
11.3 延遲計算序列178
11.3.1 使用序列提高性能179
11.3.2 無限序列181
11.4 本章小結(jié)183

【第四部分 優(yōu)雅且高效的Kotlin】
第12章 Kotlin的流暢性186
12.1 重載運算符187
12.2 使用擴(kuò)展函數(shù)和屬性進(jìn)行注入190
12.2.1 使用擴(kuò)展函數(shù)注入方法190
12.2.2 使用擴(kuò)展函數(shù)注入運算符191
12.2.3 使用擴(kuò)展屬性注入屬性192
12.2.4 注入第三方類192
12.2.5 注入靜態(tài)方法195
12.2.6 從類內(nèi)注入195
12.3 擴(kuò)展函數(shù)197
12.4 帶中綴的函數(shù)流暢性198
12.5 帶Any對象的流暢性199
12.5.1 四種方法的行為200
12.5.2 來自冗長和混亂的代碼201
12.5.3 使用apply刪除重復(fù)的引用202
12.5.4 使用run獲得結(jié)果203
12.5.5 使用let將對象作為參數(shù)傳遞203
12.5.6 使用also將void函數(shù)鏈接起來205
12.6 隱式接收方206
12.6.1 傳遞一個接收方206
12.6.2 帶接收方的多個作用域207
12.7 本章小結(jié)209

第13章 創(chuàng)建內(nèi)部DSL210
13.1 DSL的類型和特征211
13.1.1 外部DSL與內(nèi)部DSL211
13.1.2 語境驅(qū)動和流暢211
13.2 用于內(nèi)部DSL的Kotlin211
13.2.1 分號可選212
13.2.2 點和圓括號不與中綴在一起212
13.2.3 使用擴(kuò)展函數(shù)獲得特定的域212
13.2.4 傳遞lambda不需要圓括號213
13.2.5 隱式接收方影響DSL的創(chuàng)建213
13.2.6 還有一些特性可以幫助DSL214
13.3 構(gòu)建流暢性方面的挑戰(zhàn)214
13.3.1 使用擴(kuò)展函數(shù)215
13.3.2 使用接收方和中綴216
13.4 類型安全構(gòu)建器220
13.4.1 HTML構(gòu)建器220
13.4.2 XML構(gòu)建器222
13.5 使用作用域控制來縮小訪問范圍225
13.6 本章小結(jié)227

第14章 編寫遞歸和記憶228
14.1 遞歸的威力和危險228
14.2 尾調(diào)用優(yōu)化230
14.3 記憶232
14.3.1 重復(fù)計算233
14.3.2 記憶—Kotlin中的Groovy方法234
14.3.3 記憶作為委托235
14.4 將記憶應(yīng)用于動態(tài)規(guī)劃237
14.5 本章小結(jié)238

【第五部分 編寫異步應(yīng)用程序】
第15章 探索協(xié)程242
15.1 協(xié)程和并發(fā)242
15.1.1 并行與并發(fā)243
15.1.2 協(xié)程作為協(xié)作函數(shù)243
15.2 使用協(xié)程并發(fā)運行244
15.2.1 從順序執(zhí)行開始244
15.2.2 創(chuàng)建一個協(xié)程245
15.2.3 啟動一個任務(wù)246
15.2.4 與掛起點交錯調(diào)用247
15.3 協(xié)程上下文和線程249
15.3.1 顯式設(shè)置上下文249
15.3.2 在自定義池中運行250
15.3.3 在掛起點后切換線程251
15.3.4 修改CoroutineContext253
15.4 調(diào)試協(xié)程254
15.4.1 async 和await255
15.4.2 看一眼延續(xù)256
15.5 創(chuàng)建無限序列258
15.5.1 使用序列258
15.5.2 使用iterator函數(shù)259
15.6 本章小結(jié)261

第16章 異步編程262
16.1 非阻塞異步編程262
16.1.1 按順序開始262
16.1.2 進(jìn)行異步264
16.2 異常處理266
16.2.1 啟動和異常266
16.2.2 異步和異常268
16.3 取消和超時270
16.3.1 取消協(xié)程270
16.3.2 請勿打擾273
16.3.3 雙向取消274
16.3.4 監(jiān)督作業(yè)275
16.3.5 編程時使用超時276
16.4 本章小結(jié)277

【第六部分 互操作和測試】
第17章 將Java與Kotlin混合使用280
17.1 聯(lián)合編譯280
17.2 從Kotlin調(diào)用Java283
17.3 從Java調(diào)用Kotlin286
17.3.1 使用Java中的重載運算符287
17.3.2 創(chuàng)建靜態(tài)方法288
17.3.3 傳遞lambda289
17.3.4 添加throws子句290
17.3.5 使用帶默認(rèn)參數(shù)的函數(shù)292
17.3.6 訪問頂級函數(shù)293
17.3.7 更多注釋294
17.4 本章小結(jié)294

第18章 使用Kotlin進(jìn)行單元測試296
18.1 被測試的代碼296
18.2 獲取項目文件297
18.2.1 設(shè)置Gradle298
18.2.2 設(shè)置Maven300
18.3 從Canary測試開始300
18.4 編寫經(jīng)驗測試301
18.5 編寫數(shù)據(jù)驅(qū)動的測試304
18.6 模擬依賴項305
18.6.1 創(chuàng)建交互測試306
18.6.2 測試解析數(shù)據(jù)308
18.7 測試頂級函數(shù)310
18.8 測試協(xié)程和異步調(diào)用313
18.9 與服務(wù)集成316
18.10 查看代碼覆蓋率317
18.11 將應(yīng)用程序用于驅(qū)動318
18.12 本章小結(jié)319

第19章 使用Kotlin編寫Spring應(yīng)用程序320
19.1 創(chuàng)建一個Starter項目320
19.2 創(chuàng)建一個控制器322
19.3 創(chuàng)建一個實體類324
19.4 創(chuàng)建一個存儲庫接口325
19.5 創(chuàng)建一個服務(wù)326
19.6 將服務(wù)與控制器集成327
19.7 繼續(xù)實踐329
19.8 本章小結(jié)330

第20章 使用Kotlin編寫Android應(yīng)用程序331
20.1 創(chuàng)建一個項目331
20.2 定義域?qū)ο?33
20.3 創(chuàng)建布局335
20.4 實施活動337
20.5 更新RecyclerView341
20.6 查看應(yīng)用程序的運行情況343
20.7 本章小結(jié)344
附錄1 轉(zhuǎn)換為JavaScript346
附錄2 Kotlin/Native350
附錄3 Kotlin到WebAssembly353
參考文獻(xiàn)357

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號