前言
新技術的發展日新月異,程式語言也不例外,從早期的機器語言到組合語言, 再到以C語言為代表的高階語言,一路衍生了C++、Java、Objective-C 等龐大的程式語言家族。其中,Java 經過多年的發展已經是一枝獨秀,不但在服務端的開發中佔據優勢,在用戶端的Android 開發上也形成壟斷之勢。不過,由於Java誕生較早(20世紀90年代中期),不可避免地存在一些先天不足,例如程式過於冗長、處理邏輯不夠靈活、安全隱憂層出不窮等。鑑於此,一方面Java 語言不斷改朝換代,到2017 年已經反覆運算到Java 9 版本;另一方面,人們也試圖設計新的語言,於是湧現了Scala、Groovy、Clojure 等新興語言,而Kotlin 就是這些新興語言中的佼佼者。
Kotlin 問世於2011年,作為後起之秀的它雖然擁有程式簡潔、函數式程式設計、更安全穩固、百分百相容Java 等諸多特性,但是前有C++、Java 等語言根深葉茂,後有Python、Go 等新語言緊追不捨,Kotlin頭幾年的發展一直不溫不火。直到這兩年,在JetBrains、Google 等公司的大力扶持下,Kotlin 的發展才駛上快車道,先是在2016年2月推出Kotlin 1.0發佈版,再是Google公司在2017年5月宣佈將Kotlin作為Android的官方開發語言,2017年10月推出的Android Studio 3.0正式整合Kotlin開發環境,緊接著更完整的Kotlin 1.2正式版在2017年11月發佈。正如初Android Studio取代Eclipse成為Android開發的主流開發工具一樣,在可預見的未來,Kotlin必將逐步取代Java成為主流的App開發語言。
被寄予厚望的Kotlin在程式設計中為開發者帶來的極大便利毋庸置疑,大量的開發實作表明,實現同樣功能的Kotlin程式常常只有對應Java程式的三分之一。並且Kotlin的語法相容並蓄、簡單易學,只要開發者擁有任何一種高階語言的程式設計基礎,再配合一本合適的Kotlin入門教材,短時間內即可成為Kotlin熟練開發者。正因為Kotlin如此的簡單好用,它的程式也是簡潔明了,所以倘若介紹Kotlin語法的教學還在長篇大論,那它一定是在誇誇其談地「耍流氓」。Kotlin 的設計理念是盡可能的簡易,而非拋出一堆令人生畏的煩瑣概念,因此本書在介紹Kotlin用法的時候,也秉承與之相符的一貫理念,即凡是能夠簡單處理的事情,決不拐彎抹角、拖泥帶水。
本書既是一本Kotlin語法的入門教學,也是說明Kotlin開發App的教學,一方面介紹Kotlin語言的基本語法,另一方面介紹Kotlin在Android開發中的實際應用,結合理論與實戰,方便讀者迅速將Kotlin運用於日常的App 開發工作之中,更好、更快地將學習成果展現出來,造成立竿見影的工作成效。當然,本書的重點在於教會讀者利用Kotlin進行Android開發工作,故而在有限的內容篇幅上有所取捨,例如服務端的Kotlin開發著墨不多,另外說明如何使用Kotlin實現常見的幾種App開發技術,其餘的App開發有關的Kotlin技術即可觸類旁通。如果讀者想要了解更詳細、更實際的App 開發技能,可參見筆者的另一部App開發專著《Android Studio 開發實戰:從零基礎到App上線》。
本書共有10章內容,循序漸進,可分為三大部分:第一部分即第1章,主要介紹Kotlin語言的開發環境架設;第二部分包含第2~5章,主要介紹Kotlin 的基本語法知識,包含Kotlin的變數宣告、控制敘述、函數定義、類別與物件等;第三部分包含第6~10章,主要介紹如何使用Kotlin進行實際的App開發工作,包含如何透過Kotlin使用簡單控制項、操縱複雜控制項、進行資料儲存、自訂控制項、實現網路通訊等。透過本書這10章的學習,讀者應該能夠掌握Kotlin的大部分常用語法,並將其得心應手地運用於App開發工作中,你會發現多了一種可供選擇的App開發語言是多麼奇妙的事情。
在學習本書之前,讀者應當掌握至少一種進階開發語言。如果沒有任何程式設計基礎就來學習Kotlin,這是不現實也是不可取的,因為短期之內各公司不會應徵只會Kotlin的程式設計師,而且Kotlin在Android開發中取代Java也必然是個緩慢的過程。所以學習Kotlin不建議急於求成,但並不表示App開發者可以對Kotlin視若無睹,任何一個新事物都有其發展壯大的過程,同時機會都是留給有準備的人。與其等Kotlin形成燎原之勢才後知後覺地學習它,不如現在就未雨綢繆地掌握它,技術投資得越早,未來的開發收益就越大。
本書的所有程式實例都基於Android Studio 3.0 和Kotlin 1.2 開發,並使用API 27 的SDK(Android 8.1)編譯與偵錯通過。所有的附錄原始程式碼均可在網路上下載,實際下載方式可存取筆者的部落格http://blog.csdn.net/aqi00。或至佳魁官網http://www.topteam.cc 下載。
繁體中文版說明:本書原作者為中國大陸人士,為維持本書程式碼之正確性,本書內容之附圖,均保持簡體中文介面,建議讀者在執行程式時,也保持簡體中文介面,以確定程式能順利執行,本書書附之程式碼也維持和原作簡體中文一致。
最後感謝王金柱編輯以及出版社同仁的熱情指點和密切配合,感謝我的家人一直以來的支援,如果沒有大家的鼎力協助,就沒有本書的順利完成。