官术网_书友最值得收藏!

  • 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月

主站蜘蛛池模板: 濉溪县| 高平市| 中方县| 望城县| 正镶白旗| 洛南县| 安乡县| 双辽市| 宾阳县| 沙田区| 治县。| 邯郸市| 高密市| 北辰区| 新安县| 荔波县| 义乌市| 蓬莱市| 五莲县| 丰顺县| 紫云| 荆门市| 台湾省| 兴国县| 永川市| 永宁县| 徐闻县| 太仓市| 林州市| 峨眉山市| 汾阳市| 渭源县| 元阳县| 淮阳县| 合川市| 漳州市| 紫阳县| 乐陵市| 旌德县| 云林县| 松江区|