Kotlin入門、實戰絕佳上手指南
◆ 全面介紹Kotlin開發知識。
◆ 全面涵蓋Kotlin開發的各種核心技術。
◆ 透過案例更能快速進入程編實務及應用。
在2017年5月的I/O大會上,Google宣佈Kotlin成為開發Android的一級程式語言,從這一刻開始,開發Android App可以使用兩種語言:Java和Kotlin。
Kotlin作為第二種開發Android App的核心程式語言,一定是要彌補Java的不足或增強Java的功能。kotlin不僅可以在JVM上執行,還可以直接將Kotlin原始程式碼轉為JavaScript,更可產生JavaScript程式,並直接編譯成本地程式,例如Windows的exe檔案、iOS App等,Kotlin幾乎可以開發所有類型的應用。
從理論上講,Kotlin才是真正的跨平台語言,可以直接或間接地開發各種類型的應用。選擇Kotlin的理由非常多,如開發效率高、語法優美、能跨平台開發、獲得Google強力支援等等。
還等什麼呢!
趕快透過本書將Kotlin的知識裝進我們的大腦才是正確的作法!
適用:對Kotlin有興趣者、程式設計師閱讀,也可以作為大專院校和教育訓練機構的教材。
作者簡介:
李寧
‧歐瑞科技創始人。
‧極客起源IT問答社區創始人(https://geekori.com)。
‧歐瑞學院金牌講師。
‧電腦碩士。
‧從事JavaScript、Node.js、Java、Kotlin、Python、Android、iOS、C、Hadoop、Spark、深度學習的開發和技術指導工作。
‧對相關領域的技術、理論和實踐有很深的理解和研究,出版過多本IT暢銷書。
作者序
Android到現在已經發展了10年,從最初不怎麼厲害發展到現在,形成一個由成千上萬的App支撐,可以執行在包含手機、平板電腦、電視、汽車、手錶、無人機在內的幾乎所有智慧裝置中的完整生態系統,這一切足以讓Android的擁有者Google感到無比自豪。
不過有一件事一直讓Google「很不爽」,那就是開發Android App的核心語言Java並不屬於Google,而屬於Oracle。而且Oracle一直在和Google打關於Java的「官司」,儘管Google贏得了「官司」,但也讓Google清楚地看到,如果程式語言不掌握在自己的手裡,那麼總會受制於人,所以Google在數年時間裡進行多次嘗試,如推出Go語言。不過Go語言和C++類似,並不適合開發Android App。所以2017年5月之前,開發Android App的主要程式語言仍然是Java。
然而在2017年5月的I/O 大會上,Google突然宣佈,Kotlin成為開發Android的一級程式語言,這就表示,從這一刻開始,開發Android App可以使用兩種語言:Java和Kotlin。
那麼Kotlin是什麼呢?就在2017年5月的I/O大會之前,我也不太清楚這個世界上還有一種叫Kotlin的程式語言,相信大多數讀者和我一樣。其實與Kotlin類似的語言有很多,如Scala,它們都是以JVM為基礎的語言,也就是說,Kotlin和Scala一樣,都只提供了編譯器,沒有提供執行環境。執行Kotlin和Scala程式,需要將原始程式碼編譯成Byte Code,然後在JVM 上執行。
在剛開始接觸Kotlin時,我感到很奇怪,現在以JVM為基礎的語言非常多,舉例來說,撰寫了Spark的Scala語言,還有Groovy、JRuby、Clojure等,那麼Google為什麼獨偏愛Kotlin呢?隨著我對Kotlin的深入接觸,逐漸對Google選擇Kotlin的決定表示認可!
Kotlin作為第二種開發Android App的核心程式語言,一定是與Java有很大差異的,而且這種差異是要彌補Java的不足或增強Java的功能。所以要求都是正向的差異。
Java儘管歷史悠久,應用許多,但也有很多不足的地方,舉例來說,我們經常會遇到NullPointerException例外,這是個很討厭的例外,產生例外是因為存取了空白物件的成員。Kotlin巧妙地解決這個問題,讓存取空白物件的成員不再拋出例外,而是直接傳回NULL。Kotlin除了解決Java的遺留問題外,還加了很多
「語法糖」,舉例來說,Kotlin支援擴充和運算符號多載,這是兩個非常大的「語法糖」。透過擴充,可以在沒有原始程式碼的情況下,為類別增加方法和屬性,透過運算符號多載,可以讓特定的類型支援原來沒有的操作,如為字串類型增加乘法和除法。總之,Kotlin單憑語言本身就比Java酷了不少。不過這些理由並不足以讓Google對Kotlin如此偏愛,因為其他同類語言,如Scala,也同樣增加了很多「語法糖」。
Kotlin還有什麼其他特性呢?其實Kotlin不僅可以在JVM上執行,還可以直接將Kotlin原始程式碼轉為JavaScript。這樣一來,從理論上講,Kotlin可以在任何支援JavaScript的環境中執行,如Web應用、React Native(Android和iOS)、微信公眾號、微信小程式、Node.js、Chrome外掛程式等。另外,還有一些地方是JavaScript做不到的,如開發本機應用。但Kotlin可以做到,Kotlin不僅可以產生JavaScript程式,還可以直接編譯成本地程式,如Windows的exe檔案、iOS App等,這樣一來,Kotlin幾乎可以開發所有類型的應用了。所以從理論上來講,Kotlin才是真正的跨平台語言,Kotlin可以直接或間接地開發各種類型的應用。
說了這麼多,相信大家一定已經清楚Kotlin的強大,以及Google為什麼選擇Kotlin的原因,當然,除了技術原因外,選擇Kotlin還有一個原因,就是Google的Android Studio是以IntelliJ IDEA為基礎的社區版本開發的,而JetBrains公司開發了IntelliJ IDEA和Kotlin。可以說Android Studio和Kotlin是師出同門,這樣它們之間更容易相容。
既然Kotlin這麼強大,而且選擇Kotlin的理由非常多,如開發效率高、語法優美、能跨平台開發、獲得Google的強力支援。我們還等什麼呢!趕緊透過本書將Kotlin的知識裝進我們的大腦才是正確的做法!
本書適合Kotlin同好學習、程式設計師閱讀,也可以作為大專院校和教育訓練學校的教材。
作者
Android到現在已經發展了10年,從最初不怎麼厲害發展到現在,形成一個由成千上萬的App支撐,可以執行在包含手機、平板電腦、電視、汽車、手錶、無人機在內的幾乎所有智慧裝置中的完整生態系統,這一切足以讓Android的擁有者Google感到無比自豪。
不過有一件事一直讓Google「很不爽」,那就是開發Android App的核心語言Java並不屬於Google,而屬於Oracle。而且Oracle一直在和Google打關於Java的「官司」,儘管Google贏得了「官司」,但也讓Google清楚地看到,如果程式語言不掌握在自己的手裡,那麼總會受制於人,所以Google在數年時間裡進行...
目錄
前言
Chapter 01 Kotlin開發環境架設
1.1 Kotlin概述
1.2 線上執行Kotlin程式
1.3 安裝和設定Kotlin
1.4 測試Kotlin編譯和執行環境
1.5 Kotlin中的語法糖
1.6 Kotlin的整合式開發環境(IDE)
1.7 小結
Chapter 02 Kotlin基礎知識
2.1 Kotlin的基本語法
2.2 基礎資料類型
2.3 套件(Package)
2.4 流程控制
2.5 小結
Chapter 03 類別和介面
3.1 類別的宣告
3.2 建構元
3.3 類別成員
3.4 修飾符號(Modifiers)
3.5 類別的繼承
3.6 介面
3.7 抽象類別
3.8 小結
Chapter 04 列舉類別和擴充
4.1 列舉類別
4.2 擴充
4.3 小結
Chapter 05 資料類別和封閉類別
5.1 資料類別(Data Class)
5.2 封閉類別(Sealed Classes)
5.3 小結
Chapter 06 泛型
6.1 泛型基礎
6.2 類型變異
6.3 類型投射
6.4 星號投射
6.5 泛型函數
6.6 泛型約束
6.7 小結
Chapter 07 物件和委派
7.1 物件
7.2 委派
7.3 標準委派
7.4 小結
Chapter 08 高階函數與Lambda運算式
8.1 高階函數
8.2 Lambda運算式與匿名函數
8.3 小結
Chapter 09 函數
9.1 函數基本用法
9.2 使用中綴標記法呼叫函數
9.3 單運算式函數
9.4 函數參數和傳回值
9.5 函數的範圍
9.6 泛型函數
9.7 內聯函數
9.8 小結
Chapter 10 其他Kotlin技術(1)
10.1 資料解構
10.2 集合
10.3 值範圍
10.4 類型檢查與類型轉換
10.5 this運算式
10.6 相等判斷
10.7 運算符號多載
10.8 小結
Chapter 11 其他Kotlin技術(2)
11.1 null值安全性
11.2 例外類別
11.3 註釋(Annotations)
11.4 反射(Reflection)
11.5 小結
Chapter 12 Android的視窗:Activity
12.1 什麼是Activity
12.2 Activity的基本用法
12.3 使用Intent連接多個Activity
12.4 向Activity中傳遞資料
12.5 從Activity傳回資料
12.6 Activity的生命週期
12.7 記錄目前活動的Activity
12.8 小結
Chapter 13 Android App的裝飾工具:UI元件與版面配置
13.1 如何撰寫程式介面
13.2 常用的UI元件
13.3 版面配置詳解
13.4 小結
Chapter 14 永久儲存資料的方式:持久化技術
14.1 SharedPreferences儲存
14.2 檔案流操作
14.3 App許可權的授予和拒絕
14.4 讀寫JSON 格式的資料
14.5 SQLite資料庫
14.6 小結
Chapter 15 連接外部世界:網路技術
15.1 WebView元件
15.2 使用HTTP與服務端進行互動
15.3 小結
Chapter 16 專案實戰:歐瑞天氣App
16.1 專案概述
16.2 增加依賴
16.3 實現主視窗
16.4 顯示地區清單
16.5 顯示天氣資訊
16.6 小結
前言
Chapter 01 Kotlin開發環境架設
1.1 Kotlin概述
1.2 線上執行Kotlin程式
1.3 安裝和設定Kotlin
1.4 測試Kotlin編譯和執行環境
1.5 Kotlin中的語法糖
1.6 Kotlin的整合式開發環境(IDE)
1.7 小結
Chapter 02 Kotlin基礎知識
2.1 Kotlin的基本語法
2.2 基礎資料類型
2.3 套件(Package)
2.4 流程控制
2.5 小結
Chapter 03 類別和介面
3.1 類別的宣告
3.2 建構元
3.3 類別成員
3.4 修飾符號(Modifiers)
3.5 類別的繼承
3.6 介面
3.7 抽象類別
3.8 小結
Chapter 04 列舉類別和擴充
4.1 列舉類別
4.2 擴充
4.3 小結
Chapter 05 資料類別和封閉類別...