- Kotlin進階實戰
- 沈哲 易龐宙編著
- 1295字
- 2022-07-27 18:27:59
前言
Kotlin是一門務實的語言。Kotlin從發展之初就受到各種語言(例如Java、C#、JavaScript、Scala、Groovy、Python等)的影響,或者說Kotlin集各家語言之長,吸收了各種語言比較好的特性。在JVM環境下,Kotlin被設計成可以和Java代碼相互操作,并可以重復使用Java現有函數庫和框架的語言。
在2016年年底,筆者工作之余,開始研究Kotlin這門語言。順便嘗試使用Kotlin編寫一些Android上的組件。
隨后,在2017-2018年,筆者負責的移動端團隊開始嘗試使用Kotlin編寫全新的App。此時恰逢谷歌宣布使用Kotlin作為Android的官方語言,這更加堅定了我們使用Kotlin的決心。個人也在此期間嘗試使用Kotlin來編寫服務端的程序。到了2019年年初,筆者跳槽到了萬物新生(當時還是愛回收)的創新中心。在這里,我們服務端的主力語言就是Kotlin。使用Kotlin編寫后端服務在當時甚至到現在都是一件比較酷的事情。
這些年來,筆者在兩家公司使用Kotlin做了很多項目,從App到桌面程序再到服務端程序,積累了很多相關的編程經驗。因此編寫了本書,希望通過本書能讓讀者了解這門務實的語言,以及嘗試使用這門語言。Kotlin也是基于JVM的語言,上手不難,但是其思想跟Java大相徑庭。
每隔幾年,我們都會聽到一種聲音“xxx語言將會取代Java”,取代Java的語言也從之前的C#、PHP、Python變成了Go、Kotlin。其實,只要從TIOBE的榜單就可以看到,這些年來Java一直占據著這份榜單前三的位置,甚至很多年來都是第一。Java龐大的生態系統、海量的項目決定了其在未來很多年內不可能被取代。
題外話,在下一代的Java虛擬機Graal VM中,除了支持基于JVM的語言Java、Scala、Groovy、Kotlin等外,還支持JavaScript、Python、Ruby、R,以及基于LLVM的C、C++、Rust。Graal VM會讓Java變得更加強大。
Kotlin的出現是為了編寫更好的Java,Kotlin可以與Java進行互操作,并且Kotlin有自己獨特的優勢:
· 豐富的語法糖
· 強類型
· 函數式編程
· 協程
……
因此,Kotlin也被戲稱為Java最好的第三方庫。
本書詳細介紹了Kotlin語言的各種特性,例如花了大量篇幅介紹各種類型的函數,貫徹本書始終的Lambda表達式,有別于Java的委托、泛型,靈活、簡潔的DSL,常用的語法糖,相比線程更加輕量級的協程,參考RxJava實現的Flow,等等。
本書不僅介紹Kotlin的功能,還會對部分Kotlin特性進行源碼解析,也會對各個特性進行深入的總結。
另外,本書帶來了豐富的案例,涉及移動端、服務端甚至桌面端。它們都是筆者在大量使用Kotlin之后的實踐和心得,同時包含很多筆者封裝的library,供讀者參考、借鑒和使用。因此,本書主要面向移動端、服務端的讀者。
本書編寫的時間跨度有一點長,歷經了Kotlin 1.3到當前的Kotlin 1.5。現在Kotlin已經變成筆者的主力編程語言。當然,Kotlin的研發團隊也在不斷更新,據說每隔6個月會發布一個新版本,有點類似Java發布新版本的節奏。筆者也會不斷跟進Kotlin新版本的特性。
總之,本書盡量多地介紹Kotlin方方面面的特性,用豐富的例子來增強說服力。本書共18章,其中第10、13、14、15(部分內容)、17(部分內容)章是由易龐宙編寫的,其余是由沈哲編寫的。本書的資源在GitHub中,地址為https://github.com/fengzhizi715/Advance-Kotlin-Tutorials。
當然,在編寫本書的過程中,Kotlin也在不斷地更新、完善。另外,筆者才疏學淺,書中難免會有不當之處,歡迎讀者批評指正,一起討論Kotlin的方方面面。
最后,寫書是一個枯燥、漫長且耗費大量時間、精力的事情,感謝清華大學出版社的編輯、我的同事、家人對我的幫助,特別是我的太太一直在我身后默默地為家庭付出。
沈 哲
2021年6月
- 新編Visual Basic程序設計上機實驗教程
- 計算思維與算法入門
- Getting Started with Gulp(Second Edition)
- Mastering OpenCV 4
- MATLAB定量決策五大類問題
- INSTANT OpenNMS Starter
- 大學計算機基礎實驗指導
- Visual Foxpro 9.0數據庫程序設計教程
- MongoDB Cookbook
- Python高性能編程(第2版)
- HTML5/CSS3/JavaScript技術大全
- C#多線程編程實戰
- Mastering Java EE Development with WildFly
- QlikView for Finance
- Data Analysis with R