日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
Kotlin實(shí)戰(zhàn)圖書(shū)
人氣:772

Kotlin實(shí)戰(zhàn)

《Kotlin 實(shí)戰(zhàn)》將從語(yǔ)言的基本特性開(kāi)始,逐漸覆蓋其更多的高級(jí)特性,尤其注重講解如何將 Koltin 集成到已有 Java 工程實(shí)踐及其背后的原理。
  • 所屬分類(lèi):圖書(shū) >計(jì)算機(jī)/網(wǎng)絡(luò)>程序設(shè)計(jì)>其他  
  • 作者:(美)[Dmitry] [Jemerov]([德米特里·詹莫瑞福]), (美)[Svetlana] [Isakova]([斯維特拉娜·伊凡諾沃])
  • 產(chǎn)品參數(shù):
  • 叢書(shū)名:--
  • 國(guó)際刊號(hào):9787121321580
  • 出版社:電子工業(yè)出版社
  • 出版時(shí)間:2017-08
  • 印刷時(shí)間:2017-07-01
  • 版次:1
  • 開(kāi)本:16開(kāi)
  • 頁(yè)數(shù):--
  • 紙張:膠版紙
  • 包裝:平裝-膠訂
  • 套裝:

內(nèi)容簡(jiǎn)介

《Kotlin 實(shí)戰(zhàn)》將從語(yǔ)言的基本特性開(kāi)始,逐漸覆蓋其更多的高級(jí)特性,尤其注重講解如何將 Koltin 集成到已有 Java 工程實(shí)踐及其背后的原理。本書(shū)分為兩個(gè)部分。部分講解如何開(kāi)始使用 Kotlin 現(xiàn)有的庫(kù)和API,包括基本語(yǔ)法、擴(kuò)展函數(shù)和擴(kuò)展屬性、數(shù)據(jù)類(lèi)和伴生對(duì)象、lambda 表達(dá)式,以及數(shù)據(jù)類(lèi)型系統(tǒng)(著重講解了可空性和集合的概念)。第二部分教你如何使用 Kotlin 構(gòu)建自己的 API,以及一些深層次特性——約定和委托屬性、高階函數(shù)、泛型、注解和反射,以及領(lǐng)域特定語(yǔ)言的構(gòu)建。《Kotlin 實(shí)戰(zhàn)》適合廣大移動(dòng)開(kāi)發(fā)者及入門(mén)學(xué)習(xí)者,尤其是緊跟主流趨勢(shì)的前沿探索者。

編輯推薦

《Kotlin 實(shí)戰(zhàn)》教會(huì)你使用 Kotlin 語(yǔ)言來(lái)開(kāi)發(fā)達(dá)到產(chǎn)品級(jí)品質(zhì)的應(yīng)用。《Kotlin 實(shí)戰(zhàn)》為具備一定 Java 經(jīng)驗(yàn)的開(kāi)發(fā)者編寫(xiě),包含了豐富的示例,和大多數(shù)介紹編程語(yǔ)言的書(shū)籍相比更加深入,涵蓋了非常有趣的話題,例如怎樣構(gòu)建使用自然語(yǔ)言語(yǔ)法的 DSL。兩位作者是 Kotlin 的核心開(kāi)發(fā)者,所以你可以相信書(shū)中細(xì)枝末節(jié)的內(nèi)容都無(wú)比地。

● 在 JVM 上進(jìn)行函數(shù)式編程

● 編寫(xiě)整潔并符合語(yǔ)義習(xí)慣的代碼

● 結(jié)合運(yùn)用 Kotlin 和 Java

● 領(lǐng)域特定語(yǔ)言

作者簡(jiǎn)介

作者簡(jiǎn)介

本書(shū)作者為 JetBrains 的 Kotlin 核心開(kāi)發(fā)者!Dmitry Jemerov 從2003年起就在 JetBrains ?作并參與了許多產(chǎn)品的開(kāi)發(fā),包括IntelliJ IDEA、PyCharm 和 WebStorm。他是 Kotlin 最早的貢獻(xiàn)者之?,創(chuàng)建了最初版本的 Kotlin JVM 字節(jié)碼?成器,并且還在世界各地的活動(dòng)上做了很多關(guān)于 Kotlin 的演示。?前他帶領(lǐng)了進(jìn)? Kotlin IntelliJ IDEA 插件開(kāi)發(fā)的團(tuán)隊(duì)。

Svetlana Isakova 從2011年成為 Kotlin 團(tuán)隊(duì)的?員。她從事編譯器類(lèi)型推導(dǎo)和重載解析?系統(tǒng)的?作。現(xiàn)在她是?名技術(shù)布道者,在各種會(huì)議上進(jìn)? Kotlin 相關(guān)討論并從事 Kotlin 在線課程的相關(guān)?作。

譯者簡(jiǎn)介

覃宇,ThoughtWorks 高級(jí)咨詢師,10余年移動(dòng)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn),Android 技術(shù)專家,曾為AOSP貢獻(xiàn)過(guò)測(cè)試用例;目前專注于移動(dòng)應(yīng)用的架構(gòu)設(shè)計(jì)、自動(dòng)化測(cè)試以及持續(xù)交付。

羅麗,高級(jí)軟件工程師,移動(dòng)技術(shù)開(kāi)發(fā)顧問(wèn),擁有豐富的軟件開(kāi)發(fā)經(jīng)驗(yàn), 熟悉React Native,Android,iOS等多種開(kāi)發(fā)技術(shù)。目前任職于ThoughtWorks海外事業(yè)部,曾在多個(gè)大型移動(dòng)應(yīng)用項(xiàng)目中擔(dān)任技術(shù)顧問(wèn)。

李思陽(yáng),ThoughtWorks咨詢師,移動(dòng)開(kāi)發(fā)工程師。熟悉Android、Mobile Web相關(guān)技術(shù),有著豐富的移動(dòng)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn),在移動(dòng)應(yīng)用體驗(yàn)和兼容性相關(guān)領(lǐng)域有獨(dú)特的見(jiàn)解;長(zhǎng)期關(guān)注Android領(lǐng)域相關(guān)技術(shù)動(dòng)向。

蔣揚(yáng)海,ThoughtWorks移動(dòng)開(kāi)發(fā)咨詢師,深耕Android開(kāi)發(fā)多年,應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)豐富,對(duì)Android開(kāi)發(fā)領(lǐng)域的技術(shù)有廣泛的涉獵,對(duì)Android技術(shù)動(dòng)向有著敏銳的洞察力。

目錄

第 1 部分 Kotlin 簡(jiǎn)介 1

1 Kotlin :定義和目的 3

1.1Kotlin 初體驗(yàn) 3

1.2Kotlin 的主要特征4

1.2.1目標(biāo)平臺(tái) :服務(wù)器端、Android 及任何 Java 運(yùn)行的地方 4

1.2.2靜態(tài)類(lèi)型5

1.2.3函數(shù)式和面向?qū)ο?6

1.2.4免費(fèi)并開(kāi)源 7

1.3Kotlin 應(yīng)用8

1.3.1服務(wù)器端的 Kotlin8

1.3.2Android 上的 Kotlin 9

1.4Kotlin 的設(shè)計(jì)哲學(xué) 10

1.4.1務(wù)實(shí)10

1.4.2簡(jiǎn)潔 11

1.4.3安全12

1.4.4互操作性 13

1.5使用 Kotlin 工具 14

1.5.1編譯 Kotlin 代碼 14

1.5.2IntelliJ IDEA 和 Android Studio 插件 15

1.5.3交互式 shell15

1.5.4Eclipse 插件 15

1.5.5在線 playground 15

1.5.6Java 到 Kotlin 的轉(zhuǎn)換器 16

1.6小結(jié)16

2 Kotlin 基礎(chǔ) 17

2.1基本要素 :函數(shù)和變量 17

2.1.1Hello,world!18

2.1.2函數(shù)18

2.1.3變量20

2.1.4更簡(jiǎn)單的字符串格式化 :字符串模板 22

2.2類(lèi)和屬性 23

2.2.1屬性24

2.2.2自定義訪問(wèn)器 25

2.2.3Kotlin 源碼布局 :目錄和包26

2.3表示和處理選擇 :枚舉和“when” 28

2.3.1聲明枚舉類(lèi)28

2.3.2使用“when”處理枚舉類(lèi) 29

2.3.3在“when”結(jié)構(gòu)中使用任意對(duì)象 30

2.3.4使用不帶參數(shù)的“when” 31

2.3.5智能轉(zhuǎn)換 :合并類(lèi)型檢查和轉(zhuǎn)換32

2.3.6重構(gòu) :用“when”代替“if” 34

2.3.7代碼塊作為“if”和“when”的分支 35

2.4迭代事物 :“while”循環(huán)和“for”循環(huán) 36

2.4.1“while”循環(huán)36

2.4.2迭代數(shù)字 :區(qū)間和數(shù)列 37

2.4.3迭代 map 38

2.4.4使用“in”檢查集合和區(qū)間的成員39

2.5Kotlin 中的異常 41

2.5.1“try”“catch”和“finally” 41

2.5.2“try”作為表達(dá)式 42

2.6小結(jié)44

3 函數(shù)的定義與調(diào)用 45

3.1在 Kotlin 中創(chuàng)建集合 45

3.2讓函數(shù)更好調(diào)用 47

3.2.1命名參數(shù) 48

3.2.2默認(rèn)參數(shù)值49

3.2.3消除靜態(tài)工具類(lèi) :頂層函數(shù)和屬性 50

3.3給別人的類(lèi)添加方法 :擴(kuò)展函數(shù)和屬性53

3.3.1導(dǎo)入和擴(kuò)展函數(shù) 54

3.3.2從 Java 中調(diào)用擴(kuò)展函數(shù)54

3.3.3作為擴(kuò)展函數(shù)的工具函數(shù)55

3.3.4不可重寫(xiě)的擴(kuò)展函數(shù) 56

3.3.5擴(kuò)展屬性 58

3.4處理集合 :可變參數(shù)、中綴調(diào)用和庫(kù)的支持 59

3.4.1擴(kuò)展 Java 集合的 API 59

3.4.2可變參數(shù) :讓函數(shù)支持任意數(shù)量的參數(shù)60

3.4.3鍵值對(duì)的處理 :中綴調(diào)用和解構(gòu)聲明 60

3.5字符串和正則表達(dá)式的處理 62

3.5.1分割字符串62

3.5.2正則表達(dá)式和三重引號(hào)的字符串63

3.5.3多行三重引號(hào)的字符串 64

3.6讓你的代碼更整潔 :局部函數(shù)和擴(kuò)展 66

3.7小結(jié)68

4 類(lèi)、對(duì)象和接口 69

4.1定義類(lèi)繼承結(jié)構(gòu) 70

4.1.1Kotlin 中的接口 70

4.1.2open、final 和 abstract 修飾符 :默認(rèn)為 final72

4.1.3可見(jiàn)性修飾符 :默認(rèn)為 public 75

4.1.4內(nèi)部類(lèi)和嵌套類(lèi) :默認(rèn)是嵌套類(lèi)76

4.1.5密封類(lèi) :定義受限的類(lèi)繼承結(jié)構(gòu)79

4.2聲明一個(gè)帶非默認(rèn)構(gòu)造方法或?qū)傩缘念?lèi)80

4.2.1初始化類(lèi) :主構(gòu)造方法和初始化語(yǔ)句塊80

4.2.2構(gòu)造方法 :用不同的方式來(lái)初始化父類(lèi)83

4.2.3實(shí)現(xiàn)在接口中聲明的屬性85

4.2.4通過(guò) getter 或 setter 訪問(wèn)支持字段 87

4.2.5修改訪問(wèn)器的可見(jiàn)性 88

4.3編譯器生成的方法 :數(shù)據(jù)類(lèi)和類(lèi)委托 89

4.3.1通用對(duì)象方法 89

4.3.2數(shù)據(jù)類(lèi) :自動(dòng)生成通用方法的實(shí)現(xiàn) 92

4.3.3類(lèi)委托 :使用“by”關(guān)鍵字 93

4.4“object”關(guān)鍵字 :將聲明一個(gè)類(lèi)與創(chuàng)建一個(gè)實(shí)例結(jié)合起來(lái)95

4.4.1對(duì)象聲明 :創(chuàng)建單例易如反掌 95

4.4.2伴生對(duì)象 :工廠方法和靜態(tài)成員的地盤(pán)98

4.4.3作為普通對(duì)象使用的伴生對(duì)象 100

4.4.4對(duì)象表達(dá)式 :改變寫(xiě)法的匿名內(nèi)部類(lèi) 102

4.5小結(jié) 104

5 Lambda 編程 105

5.1Lambda 表達(dá)式和成員引用 105

5.1.1Lambda 簡(jiǎn)介 :作為函數(shù)參數(shù)的代碼塊106

5.1.2Lambda 和集合 107

5.1.3Lambda 表達(dá)式的語(yǔ)法 108

5.1.4在作用域中訪問(wèn)變量 111

5.1.5成員引用 114

5.2集合的函數(shù)式 API 116

5.2.1基礎(chǔ) :filter 和 map 116

5.2.2“all”“any”“count”和“find”: 對(duì)集合應(yīng)用判斷式 118

5.2.3groupBy :把列表轉(zhuǎn)換成分組的 map 119

5.2.4flatMap 和 flatten :處理嵌套集合中的元素120

5.3惰性集合操作 :序列121

5.3.1執(zhí)行序列操作 :中間和末端操作 123

5.3.2創(chuàng)建序列 125

5.4使用 Java 函數(shù)式接口 126

5.4.1把 lambda 當(dāng)作參數(shù)傳遞給 Java 方法127

5.4.2SAM 構(gòu)造方法 :顯式地把 lambda 轉(zhuǎn)換成函數(shù)式接口 129

5.5帶接收者的 lambda :“with”與“apply”131

5.5.1“with”函數(shù)131

5.5.2“apply”函數(shù) 133

5.6小結(jié) 135

6 Kotlin 的類(lèi)型系統(tǒng)137

6.1可空性137

6.1.1可空類(lèi)型 138

6.1.2類(lèi)型的含義 140

6.1.3安全調(diào)用運(yùn)算符 :“?:”141

6.1.4Elvis 運(yùn)算符 :“?:” 143

6.1.5安全轉(zhuǎn)換 :“as?” 145

6.1.6非空斷言 :“!!”146

6.1.7“let”函數(shù)148

6.1.8延遲初始化的屬性 149

6.1.9可空類(lèi)性的擴(kuò)展 151

6.1.10類(lèi)型參數(shù)的可空性 153

6.1.11可空性和 Java 153

6.2基本數(shù)據(jù)類(lèi)型和其他基本類(lèi)型 157

6.2.1基本數(shù)據(jù)類(lèi)型 :Int、Boolean 及其他158

6.2.2可空的基本數(shù)據(jù)類(lèi)型 :Int?、Boolean? 及其他159

6.2.3數(shù)字轉(zhuǎn)換 160

6.2.4“Any”和“Any?”:根類(lèi)型 162

6.2.5Unit 類(lèi)型 :Kotlin 的“void”163

6.2.6Nothing 類(lèi)型 :“這個(gè)函數(shù)永不返回” 164

6.3集合與數(shù)組 164

6.3.1可空性和集合165

6.3.2只讀集合與可變集合167

6.3.3Kotlin 集合和 Java 168

6.3.4作為平臺(tái)類(lèi)型的集合171

6.3.5對(duì)象和基本數(shù)據(jù)類(lèi)型的數(shù)組173

6.4小結(jié) 175

第 2 部分 擁抱 Kotlin 177

7 運(yùn)算符重載及其他約定179

7.1重載算術(shù)運(yùn)算符 180

7.1.1重載二元算術(shù)運(yùn)算 180

7.1.2重載復(fù)合賦值運(yùn)算符183

7.1.3重載一元運(yùn)算符 184

7.2重載比較運(yùn)算符 186

7.2.1等號(hào)運(yùn)算符 :“equals" 186

7.2.2排序運(yùn)算符 :compareTo187

7.3集合與區(qū)間的約定 188

7.3.1通過(guò)下標(biāo)來(lái)訪問(wèn)元素 :“get”和“set” 188

7.3.2“in”的約定190

7.3.3rangeTo 的約定 191

7.3.4在“for”循環(huán)中使用“iterator”的約定 192

7.4解構(gòu)聲明和組件函數(shù)193

7.4.1解構(gòu)聲明和循環(huán) 194

7.5重用屬性訪問(wèn)的邏輯 :委托屬性 195

7.5.1委托屬性的基本操作196

7.5.2使用委托屬性 :惰性初始化和“by lazy()”197

7.5.3實(shí)現(xiàn)委托屬性198

7.5.4委托屬性的變換規(guī)則202

7.5.5在 map 中保存屬性值 203

7.5.6框架中的委托屬性 204

7.6小結(jié) 205

8 高階函數(shù) :Lambda 作為形參和返回值 207

8.1聲明高階函數(shù)207

8.1.1函數(shù)類(lèi)型 208

8.1.2調(diào)用作為參數(shù)的函數(shù)209

8.1.3在 Java 中使用函數(shù)類(lèi) 211

8.1.4函數(shù)類(lèi)型的參數(shù)默認(rèn)值和 null 值 212

8.1.5返回函數(shù)的函數(shù) 214

8.1.6通過(guò) lambda 去除重復(fù)代碼 216

8.2內(nèi)聯(lián)函數(shù) :消除 lambda 帶來(lái)的運(yùn)行時(shí)開(kāi)銷(xiāo)218

8.2.1內(nèi)聯(lián)函數(shù)如何運(yùn)作 219

8.2.2內(nèi)聯(lián)函數(shù)的限制 221

8.2.3內(nèi)聯(lián)集合操作222

8.2.4決定何時(shí)將函數(shù)聲明成內(nèi)聯(lián)223

8.2.5使用內(nèi)聯(lián) lambda 管理資源 223

8.3高階函數(shù)中的控制流225

8.3.1lambda 中的返回語(yǔ)句 :從一個(gè)封閉的函數(shù)返回225

8.3.2從 lambda 返回 :使用標(biāo)簽返回226

8.3.3匿名函數(shù) :默認(rèn)使用局部返回 228

8.4小結(jié) 229

9 泛型 231

9.1泛型類(lèi)型參數(shù)232

9.1.1泛型函數(shù)和屬性 232

9.1.2聲明泛型類(lèi) 234

9.1.3類(lèi)型參數(shù)約束235

9.1.4讓類(lèi)型形參非空 237

9.2運(yùn)行時(shí)的泛型 :擦除和實(shí)化類(lèi)型參數(shù) 238

9.2.1運(yùn)行時(shí)的泛型 :類(lèi)型檢查和轉(zhuǎn)換 238

9.2.2聲明帶實(shí)化類(lèi)型參數(shù)的函數(shù)241

9.2.3使用實(shí)化類(lèi)型參數(shù)代替類(lèi)引用 243

9.2.4實(shí)化類(lèi)型參數(shù)的限制244

9.3變型 :泛型和子類(lèi)型化 245

9.3.1為什么存在變型 :給函數(shù)傳遞實(shí)參245

9.3.2類(lèi)、類(lèi)型和子類(lèi)型 246

9.3.3協(xié)變 :保留子類(lèi)型化關(guān)系 248

9.3.4逆變 :反轉(zhuǎn)子類(lèi)型化關(guān)系 252

9.3.5使用點(diǎn)變型 :在類(lèi)型出現(xiàn)的地方指定變型254

9.3.6星號(hào)投影 :使用 代替類(lèi)型參數(shù) 257

9.4小結(jié) 261

10 注解與反射 263

10.1聲明并應(yīng)用注解264

10.1.1應(yīng)用注解264

10.1.2注解目標(biāo)265

10.1.3使用注解定制 JSON 序列化 267

10.1.4聲明注解269

10.1.5元注解 :控制如何處理一個(gè)注解 270

10.1.6使用類(lèi)做注解參數(shù) 271

10.1.7使用泛型類(lèi)做注解參數(shù)272

10.2反射 :在運(yùn)行時(shí)對(duì) Kotlin 對(duì)象進(jìn)行自省 273

10.2.1Kotlin 反射 API :KClass、KCallable、KFunction 和KProperty 274

10.2.2用反射實(shí)現(xiàn)對(duì)象序列化278

10.2.3用注解定制序列化 279

10.2.4JSON 解析和對(duì)象反序列化283

10.2.5反序列化的一步 :callBy() 和使用反射創(chuàng)建對(duì)象 287

10.3小結(jié) 291

11 DSL 構(gòu)建 293

11.1從 API 到 DSL 293

11.1.1領(lǐng)域特定語(yǔ)言的概念 295

11.1.2內(nèi)部 DSL296

11.1.3DSL 的結(jié)構(gòu) 297

11.1.4使用內(nèi)部 DSL 構(gòu)建 HTML298

11.2構(gòu)建結(jié)構(gòu)化的 API:DSL 中帶接收者的 lambda 299

11.2.1帶接收者的 lambda 和擴(kuò)展函數(shù)類(lèi)型 299

11.2.2在 HTML 構(gòu)建器中使用帶接收者的 lambda 303

11.2.3Kotlin 構(gòu)建器 :促成抽象和重用307

11.3使用“invoke”約定構(gòu)建更靈活的代碼塊嵌套 310

11.3.1“invoke”約定 :像函數(shù)一樣可以調(diào)用的對(duì)象 310

11.3.2“invoke”約定和函數(shù)式類(lèi)型 311

11.3.3DSL 中的“invoke”約定 :在 Gradle 中聲明依賴 312

11.4實(shí)踐中的 Kotlin DSL 314

11.4.1把中綴調(diào)用鏈接起來(lái) :測(cè)試框架中的“should” 314

11.4.2在基本數(shù)據(jù)類(lèi)型上定義擴(kuò)展 :處理日期 316

11.4.3成員擴(kuò)展函數(shù) :為 SQL 設(shè)計(jì)的內(nèi)部 DSL317

11.4.4Anko :動(dòng)態(tài)創(chuàng)建 Android UI 320

11.5小結(jié) 322

A 構(gòu)建 Kotlin 項(xiàng)目 323

B Kotlin 代碼的文檔化 327

C Kotlin 生態(tài)系統(tǒng) 331

在線預(yù)覽

譯者序

當(dāng)收到這本書(shū)的翻譯邀請(qǐng)時(shí),我們的內(nèi)心是激動(dòng)的,終于有機(jī)會(huì)將自己喜愛(ài)的語(yǔ)言系統(tǒng)地介紹給中國(guó)的開(kāi)發(fā)者,而且是通過(guò)口碑頗佳的實(shí)戰(zhàn)系列。此時(shí),正值2017 年度的 Google I/O 召開(kāi)前夕,接下來(lái)重磅消息大家都知道了 :在 Google I/O 大會(huì)上,Kotlin 正式成為了官方的 Android 開(kāi)發(fā)語(yǔ)言,迅速占據(jù)了國(guó)內(nèi)各大技術(shù)媒體的頭條。一夜之間,所有的 Android 開(kāi)發(fā)者都迫切地想搞清楚它的來(lái)龍去脈。Kotlin究竟是何方神圣,為什么是它?

這一點(diǎn)兒也不奇怪。對(duì)于博學(xué) Android 開(kāi)發(fā)者來(lái)說(shuō),Kotlin 早已不是新鮮的概念了。早在 2015 年 1 月,Android 開(kāi)發(fā)者社區(qū)大神 Jake Wharton 就了一篇使用Kotlin 來(lái)進(jìn)行 Android 開(kāi)發(fā)的總結(jié)。那時(shí)開(kāi)始,不少頂尖的開(kāi)發(fā)者和公司就開(kāi)始嘗試在正式的 Android 項(xiàng)目中使用 Kotlin 語(yǔ)言 ;我們也從 2015 年開(kāi)始在多個(gè)項(xiàng)目上使用了 Kotlin 語(yǔ)言。它帶給我們的體驗(yàn),和帶給所有其他實(shí)踐過(guò) Kotlin 語(yǔ)言的開(kāi)發(fā)者的一樣 :它的發(fā)明者 JetBrains 所言非虛,這是一門(mén)簡(jiǎn)潔、安全、實(shí)用的語(yǔ)言,用了就停不下來(lái),就忍不住地想推薦給周?chē)娜恕N覀兝硭?dāng)然地把 Kotlin 放在了今年及時(shí)季度 ThoughtWorks 技術(shù)雷達(dá)的評(píng)估象限 :https://www.thoughtworks.com/radar/languages-and-frameworks/kotlin。

Kotlin 讓人愛(ài)不釋手的最重要原因就是來(lái)自 JetBrains 的基因。作為最負(fù)盛名的IDE 創(chuàng)造者,JetBrains 深諳開(kāi)發(fā)者的需求,孜孜不倦地追求給開(kāi)發(fā)者提供最實(shí)用、較高效的 IDE,包括 Android Studio、IntelliJ、RubyMine 等。由這樣想開(kāi)發(fā)者之所想的公司創(chuàng)造出來(lái)的語(yǔ)言,又怎么會(huì)不受開(kāi)發(fā)者熱捧呢?所以 Gradle、Spring,以及越來(lái)越多的庫(kù)、框架和工具也陸續(xù)加入到了支持 Kotlin 的陣營(yíng)。

本書(shū)深入淺出地介紹了 Kotlin 語(yǔ)言的方方面面,從最基礎(chǔ)的語(yǔ)言要素到如何定制自己的 DSL 都有涉及。相信讀者閱讀本書(shū)并嘗試之后一定會(huì)愛(ài)上這門(mén)語(yǔ)言,但把 Kotlin 應(yīng)用到自己的項(xiàng)目中會(huì)不會(huì)有什么風(fēng)險(xiǎn)呢?讀者們大可不必?fù)?dān)心,以往的經(jīng)驗(yàn)告訴我們,整個(gè)過(guò)程無(wú)縫無(wú)痛。首先,Kotlin 足夠簡(jiǎn)單,對(duì)于初學(xué)者來(lái)說(shuō)掌握也不算困難,兩三天就可以上手 ;其次,Kotlin 和 Java 可以無(wú)縫地銜接,可以在遺留項(xiàng)目上和 Java 混用 ;,編譯器的靜態(tài)檢查和 IDE(必須是 JetBrains 出品的 IntelliJ IDEA 或者 Android Studio)強(qiáng)大的輔助功能,可以幫你發(fā)現(xiàn)很多問(wèn)題(例如空指針異常)并將其自動(dòng)消除在搖籃之中。有的讀者會(huì)說(shuō),但我還沒(méi)有用過(guò)這些IDE 啊?那你還在猶豫什么,請(qǐng)立即使用它們來(lái)提高你的生產(chǎn)力吧!這也算是使用Kotlin 帶來(lái)的額外收獲。

從 Kotlin 成為 Android 開(kāi)發(fā)語(yǔ)言的那一刻開(kāi)始,我們熱情高漲地投入了幾乎全部業(yè)余時(shí)間到本書(shū)的翻譯工作,終于在最短的時(shí)間內(nèi)把它呈現(xiàn)在廣大讀者面前。這一切還要感謝本書(shū)的編輯和所有譯者家人在背后的默默付出。由于譯者水平所限,難免出現(xiàn)謬誤遺漏,還望讀者海涵斧正。

覃宇、羅麗、李思陽(yáng)、蔣揚(yáng)海

2017 年 6 月于 ThoughtWorks 成都

當(dāng)我在 2010 年春季及時(shí)次拜訪 JetBrains 的時(shí)候,我相當(dāng)確定世界上不需要另一種通用編程語(yǔ)言了。我認(rèn)為現(xiàn)有的 JVM 上的語(yǔ)言已經(jīng)足夠好了,誰(shuí)會(huì)有想法去創(chuàng)建一門(mén)新語(yǔ)言呢?在經(jīng)過(guò)大約一個(gè)小時(shí)的關(guān)于大規(guī)模代碼庫(kù)上產(chǎn)品問(wèn)題的討論后我被說(shuō)服了,并且后來(lái)成為 Kotlin 一部分的最初想法就已經(jīng)被描繪在白板上。很快我就加入了 JetBrains 來(lái)主導(dǎo)這門(mén)語(yǔ)言的設(shè)計(jì)與編譯器的開(kāi)發(fā)工作。

到今天,六年多的時(shí)光過(guò)去了,我們也快要第二個(gè)版本。我們已經(jīng)擁有超過(guò) 30 人的團(tuán)隊(duì)和數(shù)以千計(jì)的活躍用戶,還有很多讓我們難以輕易實(shí)現(xiàn)的精彩的設(shè)計(jì)理念。但是不要擔(dān)心,這些想法在進(jìn)入這門(mén)語(yǔ)言之前還必須經(jīng)過(guò)縝密的考察。我們希望這本書(shū)的篇幅依然能夠容得下 Kotlin 的未來(lái)。

學(xué)習(xí)一門(mén)編程語(yǔ)言是一個(gè)令人興奮而且常常是回報(bào)頗豐的嘗試。如果它是你的及時(shí)門(mén)語(yǔ)言,通過(guò)它你能學(xué)到整個(gè)編程的新世界。如果不是,它會(huì)使你以新的術(shù)語(yǔ)來(lái)思考熟悉的東西,從而以更高層次的抽象來(lái)更深入地了解它們。本書(shū)主要針對(duì)后者,即面向已經(jīng)熟悉 Java 的讀者。

從頭開(kāi)始設(shè)計(jì)一門(mén)語(yǔ)言可能是一項(xiàng)具有挑戰(zhàn)性的任務(wù),但是使其與另一門(mén)語(yǔ)言融洽的工作就是另一回事了——尤其是那門(mén)語(yǔ)言還包含了許多的憤怒的食人魔,以及一些陰暗的地牢(在這一點(diǎn)上你如果不相信可以去問(wèn) C 的創(chuàng)造者 Bjarne Stroustrup)。與 Java 的互操作性(這就是 Java 與 Kotlin 之間是如何互相混合調(diào)用的)是 Kotlin 的基石之一,本書(shū)也投入了很多的注意力在這一點(diǎn)上。互操作性對(duì)于在一個(gè)已有的 Java 代碼庫(kù)中逐步地引入 Kotlin 非常重要。即使從頭開(kāi)始開(kāi)發(fā)一個(gè)新項(xiàng)目時(shí),也必須考慮到能夠?qū)⑦@門(mén)語(yǔ)言融入一個(gè)擁有更大圖景的平臺(tái)中去,而以 Java 編寫(xiě)的所有函數(shù)庫(kù)就是這樣的一個(gè)平臺(tái)。

當(dāng)我在編寫(xiě)本書(shū)時(shí),兩個(gè)新的目標(biāo)平臺(tái)正在開(kāi)發(fā) :Kotlin 現(xiàn)在可以在 JavaScript虛擬機(jī)上運(yùn)行以支持全棧 web 開(kāi)發(fā),并且還將很快能夠直接編譯成原生代碼,從而在需要的時(shí)候能夠脫離任何的虛擬機(jī)來(lái)運(yùn)行。 1 所以,雖然本書(shū)是面向 JVM 的,但是你從中學(xué)到的很多東西也是可以應(yīng)用于其他運(yùn)行環(huán)境的。

本書(shū)作者從項(xiàng)目伊始就已經(jīng)是 Kotlin 團(tuán)隊(duì)的成員,所以他們對(duì)語(yǔ)言本身和內(nèi)部實(shí)現(xiàn)非常熟悉。他們?cè)跁?huì)議演講、研討會(huì)及 Kotlin 課程方面的經(jīng)驗(yàn)使他們能夠?qū)︻A(yù)期的常見(jiàn)問(wèn)題及可能的陷阱,提供良好的闡述。本書(shū)既闡釋了語(yǔ)言特征背后的高級(jí)概念,也提供了足夠深入的細(xì)節(jié)。

希望你能享受與我們的語(yǔ)言及本書(shū)相處的時(shí)光。正如我經(jīng)常在我們社區(qū)的帖子中說(shuō)的那樣 :使用 Kotlin 愉快!

ANDREY BRESLAV,JetBrains Kotlin 首席設(shè)計(jì)師

媒體評(píng)論

開(kāi)發(fā)者想完成他們的工作——同時(shí)越省事越好。使用 Kotlin 編碼就意味著省事。Kotlin 編程語(yǔ)言提供了賦有表現(xiàn)力的語(yǔ)法,強(qiáng)大直觀的類(lèi)型系統(tǒng)和美妙的工具支持,還有與現(xiàn)存 Java 代碼、庫(kù)及框架無(wú)縫的互操作性。Kotlin 可以被編譯成 Java 字節(jié)碼,所以你可以在所有使用 Java 的地方使用它,包括 Android 在內(nèi)。借助高效的編譯器和標(biāo)準(zhǔn)庫(kù),Kotlin 在運(yùn)行時(shí)幾乎不用承受任何額外開(kāi)銷(xiāo)。

——kotlin核心開(kāi)發(fā)者

“既闡釋了高級(jí)概念,也提供了足夠深入的細(xì)節(jié)。”

— 摘自 Kotlin 首席設(shè)計(jì)師 Andrey Breslav 作的序

“這本書(shū)保持了 Manning 實(shí)戰(zhàn)系列的水準(zhǔn),滿足了你快速提高生成力的所有需要。”

— Kevin Orr, Sumus Solutions

“有這本書(shū)指導(dǎo)你,Kotlin 學(xué)起來(lái)有趣又簡(jiǎn)單!”

— Filip Pravica, Info.nl

“寫(xiě)得非常,非常好,淺顯易懂。”

— Jason Lee, NetSuite

網(wǎng)友評(píng)論(不代表本站觀點(diǎn))

來(lái)自無(wú)昵稱**的評(píng)論:

這書(shū)可以,好好學(xué)習(xí)

2017-09-02 08:34:50
來(lái)自無(wú)昵稱**的評(píng)論:

我很喜歡新事物

2017-11-10 20:09:49
來(lái)自匿名用**的評(píng)論:

Kotlin實(shí)戰(zhàn) 好書(shū),印刷清晰內(nèi)容強(qiáng)!我喜歡

2017-11-15 15:41:09
來(lái)自上心113**的評(píng)論:

紙張還行 主要是送貨快

2017-11-16 21:46:49
來(lái)自cfair**的評(píng)論:

非常好,入門(mén)kotlin就靠它了,很棒

2017-08-12 14:00:09
來(lái)自來(lái)自北**的評(píng)論:

不錯(cuò)正品 值得買(mǎi),包裝也挺好的,這個(gè)價(jià)錢(qián)值了

2017-08-25 18:29:17
來(lái)自f***下(**的評(píng)論:

已經(jīng)開(kāi)始看了,加油。

2017-09-15 08:01:18
來(lái)自無(wú)昵稱**的評(píng)論:

很好,學(xué)習(xí)無(wú)止境,程序猿!

2017-09-28 00:14:00
來(lái)自w***t(**的評(píng)論:

書(shū)還不錯(cuò)。

2017-10-09 14:02:55
來(lái)自無(wú)昵稱**的評(píng)論:

很有幫助,學(xué)到了很多

2017-10-19 20:34:22
來(lái)自無(wú)昵稱**的評(píng)論:

書(shū)就不多說(shuō)了,當(dāng)當(dāng)也是專門(mén)賣(mài)書(shū)的電商,每次在當(dāng)當(dāng)賣(mài)書(shū)都是一個(gè)塑料袋套書(shū)。運(yùn)輸過(guò)程中各種暴力。主皮被不明尖物體扎了兩個(gè)眼,另一本書(shū)角明顯是被暴力仍后落地,書(shū)角都仍嘿了。包裝差評(píng)差評(píng)差評(píng)

2017-10-21 10:09:15
來(lái)自lwx4718**的評(píng)論:

新技術(shù),趕緊買(mǎi)一本看看

2017-10-25 22:06:27
來(lái)自無(wú)昵稱**的評(píng)論:

很好!快遞員也很好,速度很快

2017-10-28 19:50:59
來(lái)自夢(mèng)***似**的評(píng)論:

經(jīng)典之作,學(xué)習(xí)Kotlin的好書(shū)

2017-10-30 17:18:49
來(lái)自無(wú)昵稱**的評(píng)論:

不錯(cuò),沒(méi)破損

2017-10-30 20:30:54
來(lái)自y***9(**的評(píng)論:

幫朋友買(mǎi)的,用來(lái)自學(xué)。

2017-10-31 21:47:36
來(lái)自無(wú)昵稱**的評(píng)論:

這本書(shū)還不錯(cuò)

2017-11-01 22:17:40
來(lái)自q***1(**的評(píng)論:

常閱可修身養(yǎng)性可陶冶性情可勵(lì)志也是我們洞察世界的途徑現(xiàn)實(shí)一點(diǎn)說(shuō)就是古人說(shuō)的

2017-11-05 11:09:31
來(lái)自無(wú)昵稱**的評(píng)論:

111111

2017-11-05 12:25:22
來(lái)自琴瑟谷**的評(píng)論:

還沒(méi)看,中文版就這一本,先買(mǎi)著有時(shí)間學(xué)習(xí)一下

2017-09-13 20:44:23

免責(zé)聲明

更多出版社