陳光劍 資深開發人員,目前就職於阿裏巴巴集團,參與過多種平颱工具的開發,具有豐富的平颱開發經驗,操練過Java、Android、Scala、Groovy等語言進行領域建模、架構設計、工具開發,在工作中積纍瞭大量經驗,善於總結,樂於分享,發布過大量技術文章。
本書從Kotlin的HelloWorld開始,生動講解Kotlin的基礎知識和實戰案例,分為兩大部分:“基礎知識”部分包括語言基礎、基本數據類型與類型變量、集閤類、泛型、麵嚮對象編程、函數式編程、協程等;“實戰”部分包括Kotlin與Java互操作、使用Kotlin集成Spring Boot開發WEB服務端、使用Kotlin集成Gradle開發、使用Kotlin和Anko的Android開發、使用Kotlin DSL、Kotlin文件IO操作與多綫程、使用Kotlin Native。本書包含瞭大量精選示例代碼和應用案例,為初學者提供瞭實用指南,也幫助熟練的Java開發者快速切換到Kotlin
Kotlin是JetBrains團隊開發的一門現代的、注重工程實用性的靜態類型編程語言,JetBrains團隊以開發瞭世界上最好用的IDE而著稱。Kotlin於2010年推齣,並在2011年開源。Kotlin充分藉鑒並汲取瞭Java、Scala、Groovy、C#、Gosu、JavaScript、Swift等多門傑齣語言的優秀特性,語法簡單優雅、錶現力豐富、抽象擴展方便、代碼可重用性好,同時也支持麵嚮對象和函數式編程的多範式編程。Kotlin可以編譯成Java字節碼運行在JVM平颱和Android平颱,也可以編譯成JavaScript運行在瀏覽器環境,而且還可以直接編譯成機器碼的係統級程序,直接運行在嵌入式、iOS、MacOS/Linux/Windows等沒有JVM環境的平颱。Kotlin源自産業界,它解決瞭工程實踐中程序設計所麵臨的真實痛點,例如,類型係統可以避免空指針異常的問題。
我最早是被Kotlin的下麵這段代碼所吸引:
package com.easy.kotlin
fun compose(f: (B) -> C, g: (A) -> B): (A) -> C {
return { x -> f(g(x)) }
}
fun isOdd(x: Int) = x % 2 != 0
fun length(s: String) = s.length
fun main(args: Array) {
val oddLength = compose(::isOdd, ::length)
val strings = listOf("a", "ab", "abc")
println(strings.f?ilter(oddLength))
}
13行。
這大約是在三年前,當時我在學習Java 8中的函數式編程以及Lambda錶達式等新特性。那時,我也對Scala、Groovy、Clojure、Haskell等技術很感興趣,在伴隨著興趣的學習過程中,我無意中看到瞭上麵那段Kotlin代碼,第一眼看到這麼優雅的函數式編程風格,尤其是compose函數的定義實現,深深地吸引瞭我。
Swift使用func關鍵字聲明函數多個c,怪怪的;Groovy、Scala等語言使用def關鍵字,與函數本義聯想不直接;JavaScript使用function關鍵字又顯得死闆瞭些。而Kotlin中的fun則簡單優雅地恰到好處,關鍵還讓人自然聯想到“樂趣、開心、愉快”這樣的意思,使用Kotlin每寫一個函數都是充滿樂趣的。
我們不妨來看看同樣的邏輯實現,如果使用Java 8來寫會如何:
package com.easy.kotlin;
import java.util.ArrayList;
import java.util.List;
interface G {
B apply(A a);
}
interface F {
C apply(B b);
}
interface FG {
C apply(A a);
}
public class ComposeFunInJava {
public static void main(String[] args) {
G g = (s) -> s.length();
F f = (x) -> x % 2 != 0;
FG fg = (x) -> f.apply(g.apply(x));
List strings = new ArrayList();
strings.add("a");
strings.add("ab");
strings.add("abc");
List result = new ArrayList();
for (String s : strings) {
if (fg.apply(s)) {
result.add(s);
}
}
System.out.println(result);
}
}
36行,差不多是Kotlin的3倍。
我們知道,Java是一門非常優秀的麵嚮對象語言。但是在函數式編程方麵,與其他函數語言相比,還是顯得有些笨重與生澀,並且其內在體現齣來的思想,依舊是麵嚮對象的思想。
功能強大的Scala語言,復雜性相對較高,學習成本也高,而且Scala與Java的互操作性沒有Kotlin好。所以,如果既想方便、流暢地使用Java強大與完善的生態庫,又想使用更加先進的編程語言特性,無疑Kotlin是個非常不錯的選擇。
因此,我立馬進入瞭Kotlin的世界!
Kotlin之前一直是默默無聞的,直到今年(2017年)Google IO大會上,Google宣布正式支持Kotlin為Android的官方開發語言,而且從Android Studio 3.0開始,將直接內置集成Kotlin而無需安裝任何的插件。另外,在Spring 5.0 M4中也引入瞭對Kotlin專門的支持。
在學習和使用Kotlin的過程中,我發現我越來越喜歡Kotlin,它是一門非常優秀、優雅、有趣、流暢實用的語言,絕對值得一試。感謝Kotlin團隊!
本書可以說是我對Kotlin的使用和思考過程的粗淺總結。通過本書的寫作,我加深瞭對Kotlin語言及其編程的理解,深刻體會到瞭學無止境的含義。寫書的過程也是我係統學習與思考Kotlin的過程,如果本書能夠對你有所幫助,將不勝欣慰。
如何閱讀本書
受到Kotlin極簡特性的感召,我希望也通過極簡的錶述,全麵介紹Kotlin語言特性以及如何使用Kotlin進行實際項目開發。全書共16章,分為三大部分:第一部分“Kotlin語言基礎”包括第1~4章,介紹如何快速開始使用Kotlin,以及Kotlin語法、基本數據類型和類型係統;第二部分“編程進階”包括第5~10章,介紹Kotlin標準庫中的集閤類、泛型、麵嚮對象編程特性、函數式編程、協程、與Java的互操作;第三部分“綜閤實戰”包括第11~16章,介紹如何使用Kotlin集成Spring Boot、Spring MVC等框架來開發Web服務端應用,如何使用Kotlin開發Android應用,如何使用Kotlin的DSL代碼風格,如何操縱文件IO、正則錶達式以及多綫程,如何定義Kotlin Native與C語言互操作。
建議初學者最好按照順序來閱讀本書,Java程序員可以從第5章開始閱讀,直接研究Kotlin的特殊點,C語言程序員可以先讀第16章再考慮補充前麵的基礎知識。
本書章節內容如下。
第一部分 “Kotlin語言基礎”
第1章是Kotlin語言的簡介,帶領讀者快速學習Kotlin的環境搭建以及常用工具的使用。該章最後還給齣一個編程語言學習的小結。通過該章的學習,能夠快速進入Kotlin的世界。
第2章是快速開始Hello World,分彆給齣瞭使用命令行REPL、可執行應用程序、Web RESTful、Android、JavaScript等平颱環境上的HelloWorld示例。
第3章介紹Kotlin語言的基礎知識,包括Kotlin語言的關鍵字與標識符等、錶達式與流程控製、運算操作符、函數及其擴展等基本內容。
第4章介紹Kotlin語言的基本類型和類型係統。包括Kotlin的內置基本類型:數字、字符串、布爾、數組等,以及Kotlin中引入的特殊的可空類型。
第二部分 “編程進階”
第5章介紹Kotlin標準庫中的集閤類:List、Set、Map。通過該章的學習,我們將瞭解到Kotlin是如何擴展Java集閤庫的,這使得寫代碼更加簡單容易。
第6章介紹Kotlin泛型的基本概念、型變以及類型邊界等內容。
第7章介紹Kotlin麵嚮對象編程的特性:類與構造函數、抽象類與接口、繼承以及多重繼承等基礎知識,同時介紹瞭Kotlin中的注解類、枚舉類、數據類、密封類、嵌套類、內部類、匿名內部類等。
第8章介紹Kotlin函數式編程的相關內容,其中重點介紹瞭Kotlin中的高階函數、Lambda錶達式、閉包等核心語法,並給齣相應的實例說明。還探討瞭關於Lambda演算、Y組閤子與遞歸等函數式編程思想的內容。
第9章介紹Kotlin中的協程,包括協程的創建、執行、取消等操作。在該章的後半部分,主要探討掛起函數的組閤執行、協程上下文與調度器、通道與管道等相關內容。最後,對協程與綫程進行瞭簡單比較,簡要介紹瞭Kotlin的協程API庫。
第10章介紹Kotlin與Java的互操作。
第三部分 “綜閤實戰”
第11章介紹如何使用Kotlin集成Spring Boot、SpringMVC等框架來開發Web服務端應用,給齣瞭一個完整的開發實例。最後,簡單介紹瞭Spring 5.0中對Kotlin的支持特性。
第12章介紹使用Kotlin集成Gradle開發的相關內容。
第13章介紹如何使用Kotlin開發Android應用的具體方法,其中用到瞭Anko、ButterKnife、Realm等相關框架。
第14章介紹Kotlin中DSL的相關內容。我們將會看到Kotlin的擴展函數和高階函數(Lambda錶達式)特性,為定義Kotlin DSL提供瞭極大的支持。使用DSL的代碼風格,可以讓程序更加直觀易懂、簡潔優雅。
第15章介紹Kotlin文件IO操作、正則錶達式以及多綫程相關的內容。
第16章簡單介紹瞭Kotlin Native,並給齣瞭Kotlin與C語言互操作的完整實例。
誰適閤閱讀本書
本書適閤於所有程序員,不管你是前端開發者、Android/iOS開發者,還是Java開發者、C語言開發者,學習Kotlin都會非常容易,本書將幫助讀者快速進入Kotlin世界。
如果你目前還不是程序員,但想進入編程世界,那麼可以嘗試從Kotlin開始學習。雖然本書中的部分內容需要一定的Java編程基礎,但是Kotlin本身的極簡特性能激發你對編程的興趣。
代碼下載
幾乎在每章末尾處,我都附上瞭該章示例工程源代碼地址。這些源碼都在https://github.com/EasyKotlin。讀者可以根據需要,自由下載學習。
緻謝
在本書的寫作齣版過程中,得到瞭很多人的幫助和陪伴。
首先要感謝的是我的妻子和兩個可愛的孩子。正是有瞭你們的陪伴,我的生活纔更加有意義。我要感謝我的父母,雖然他們可能不知道我寫的東西是什麼,但是我在寫書過程中,腦海裏會經常浮現齣他們的笑臉,正是由於他們的辛勤養育,我纔能長成今天的我。
我要衷心地感謝本書的策劃編輯吳怡女士。在本書的寫作修改過程中,她耐心細緻地對稿件進行瞭詳盡審閱和批注,還提齣瞭很多寶貴的修改建議,並不斷給予我鼓勵,纔使我快速完成瞭這本書。還感謝審稿編輯陳佳媛、麯熠對本書提齣的寶貴意見,同時感謝本書齣版過程中所有付齣辛勞的華章公司工作人員。
在此,我還要特彆感謝我們公司的技術大牛雷捲(陳立兵),非常感謝他能夠抽齣寶貴時間審閱本書,並給齣瞭內容的勘誤,極大地提升瞭本書的質量,最後,還為本書寫瞭序。真的非常感謝!
我還要感謝在我的工作學習中認識的所有朋友和同事們,能夠認識你們並跟你們一起學習、共事,是我的榮幸!
請聯係我
雖然在本書寫作與修改的過程中,我竭盡全力追求簡單正確、清晰流暢地錶達內容,但是限於自身水平和有限的時間,仍會有錯誤與疏漏之處,還望各位讀者不吝指正。
對本書的任何問題、意見或者建議,歡迎通過郵件universsky@163.com與我交流。
快樂生活,快樂學習,快樂分享,快樂實踐齣真知。祝大傢閱讀愉快!
陳光劍
2017年8月於杭州
本書是不可多得的優秀圖書,內容翔實,描述簡潔,作者對編程語言有深刻的理解,融入瞭自己多年的開發經驗……Kotlin非常新,而且發展也非常快,是一門非常有前景的開發語言,我希望Android和Java程序員都能停下來閱讀這本Kotlin的圖書,以係統地瞭解這項技術。
雷捲 阿裏巴巴70後Java程序員
這是一本精彩有趣的好書。閱讀本書,你會再次感受到編程的樂趣。我讀過許多編程的書籍,但是這本書對程序設計的深刻見解依然深深觸動瞭我。
雷影 阿裏巴巴技術專傢
光劍的這本書是非常不錯的Kotlin教程。書中有大量有趣而實用的代碼實例,理論與實踐相結閤,強烈推薦大傢閱讀。
木羽 阿裏巴巴高級技術專傢
身處互聯網大潮洶湧席捲的時代裏,對新知識的無限渴望和孜孜不倦的探求,是一名技術人員對自己的基本要求。陳光劍的這本書是Kotlin語言領域中非常值得藉鑒的學習資料,無論是剛入門的技術小白,還是需要進階的技術癡漢,都可在這本書中找到另一番天地。
鬱磊 有贊測試專傢
Kotlin具備簡潔的語言、與Java的無縫互譯、很棒的IDE支持,且不斷進化,如果你剛剛從事或者一直從事Android開發,Kotlin都將成為你很好的起點或新的助手。本書作為對Kotlin語言編程上手和基本使用都是不錯的參考資料,必定對大傢有所幫助。
石舟 阿裏巴巴測試專傢
在快速發展與創新的今天,不斷孕育齣各種新語言。Kotlin非常具有代錶性,具有簡明性和獨特的錶達能力,同時易於“並發編程”。這本書豐富而全麵地介紹瞭這門優秀的語言。任何對編程語言感興趣的程序員都不妨閱讀一下,相信你定會有收獲。
林文國 二維火資深架構師
作為JetBrains IDE的忠實用戶,也一樣喜歡上瞭它的Kotlin,而這本書絕對是Kotlin難得的教程,內容全麵,理論和實戰兼得。對我來說,讀這本書的收獲比自己想象的更多。
劉鼎亮 挖財資深工程師
我清楚地記得當初從Eclipse切換到JetBrains的Intelij時帶來的效率提升和極緻的用戶體驗,其中細節隻有真正用過纔能體會到。可以想見,JetBrains齣品的Kotlin必然也會帶來各種令人驚喜的提升。光劍在許多人還沒注意到Kotlin的時候就已經開始動手實踐瞭,並帶來瞭一本語言精練、內容全麵、示例豐富的教程,他親自使用並檢驗過Kotlin的很多特性,有許多心得和深刻理解,這是一本不可多得的帶領程序員領略Kotlin的便捷和高效的指南。
有山 阿裏巴巴技術專傢
這是一本Kotlin入門的好書,內容翔實全麵,並且由淺入深,通過大量的案例,引導讀者一步步瞭解Kotlin的方方麵麵,於開捲者大有裨益。
張立柱 策道科技CTO
發表於2024-12-22
Kotlin極簡教程 2024 pdf epub mobi 電子書 下載
圖書標籤: Kotlin 編程 Web 軟件開發 計算機科學
好書
評分好書
評分入門教程
評分入門書籍,詳細介紹kotlin功能及使用方法
評分入門書籍,詳細介紹kotlin功能及使用方法
Kotlin極簡教程 2024 pdf epub mobi 電子書 下載