學Java的顫抖吧!一文讓你全面深入了解Kotlin
寫在前面
Google I/O 2017 首日 Keynote 剛剛落幕,其中 Google 宣布 Android 系統開發全面支持Kotlin 算是一個非常重磅的新聞。昨天的文章,你可能對Kotlin有了一定的了解,今天我們再來深入了解下這門語言。
Kotlin的簡介
Kotlin 是一個基於 JVM靜態類型編程語言,由 JetBrains 開發。於2010年首次推出。
相信很多人都會問:為什麼Kotlin可以加入Android家族?它和java相比,在語法,可用性,UI性能和非同步性方面雙方孰好孰壞?接下來咱家就為您探討探討。
Kotlin VS Java
語法簡單不啰嗦
Kotlin的一個主要優點是它的簡潔。 你用更少的代碼獲得更多的功能。
Kotlin 支持類型推斷,沒有 Java 那樣的啰嗦。
用 var 表示變數,val 表示常量更加的簡潔
方法也很簡單,連 function 都縮寫成了 fun
類的繼承和實現很簡單,使用:即可
Kotlin 每個句子都不需要加分號 (;)
避免空指針異常
在許多編程語言中最大的痛苦 - 空指針異常。 但是使用Kotlin,這個問題得到了很好的解決
在類型上的處理,即在類型後面加上?,即表示這個變數或參數以及返回值可以為 null,否則不允許為變數參數賦值為 null 或者返回 null
對於一個可能是 null 的變數或者參數,在調用對象方法或者屬性之前,需要加上?,否則編譯無法通過。
支持方法拓展
Kotlin有一個聰明的解決方案 -擴展功能,幫助你擺脫所有的util類一勞永逸。擴展函數幾乎是一個通常的Kotlin函數。 但是當你聲明它,你需要指定的實例將具有擴展功能的類。
注意:Kotlin 的方法擴展並不是真正修改了對應的類文件,而是在編譯器和 IDE 方面做得處理。使我們看起來像是擴展了方法。
高階函數, 函數式編程支持
所謂的高階函數就是:可以接受函數作為參數,也可以返回函數作為結果。
Kotlin 支持了 Streams API 和方法引用,這樣函數式編程更加方便。比如下面的代碼就是我們結合 Jsoup,來抓取某個 proxy 網站的數據,代碼更加簡單,實現起來也快速。
關於性能
Kotlin 的執行效率和 Java 代碼的執行效率理論上一致的。有時候 Kotlin 可能會顯得高一些。比如 Kotlin 提供了方法的 inline 設置,可以設置某些高頻方法進行 inline 操作,減少了運行時的進棧出棧和保存狀態的開銷。
與Java互操作
Kotlin 在設計時就考慮了 Java 互操作性。可以從 Kotlin 中自然地調用現存的 Java 代碼,並且在 Java 代碼中也可以 很順利地調用 Kotlin 代碼。
來自Android Developers 的FAQ
1.如何在Android Studio中使用Kotlin?
Android Studio 3.0已經完全支持Kotlin了,所以現在你可以方便的新建一個基於Kotlin的Android項目或者在你現有項目的基礎上增加Kotlin的代碼,你還可以將你的Java代碼轉換為Kotlin。使用Kotlin開發,你可以完全的使用現在Android Studio附帶的所有工具,像autocomplete,lint,checker,refactoring,debugging等。
2.如何在Android Studio中調試Kotlin?
調試Kotlin就像調試Java代碼一樣,你不需要做任何額外的事情。
3.為Kotlin提供了什麼樣的其他IDE支持(如lint,autocomplete,refactorings等)?
Android Studio 3.0 對Kotlin有完整的工具支持。
4.如何在Java和Kotlin語言之間進行選擇?
不必選擇,如果你想要的話,你可以二者一起使用。
5.我可以在Kotlin中調用Android或其他Java語言庫API嗎?
可以。 Kotlin提供Java語言互操作性。這是一個允許Kotlin代碼透明地調用Java語言方法的設計,再加上注釋,這樣可以輕鬆地將Kotlin功能公開到Java代碼。不使用任何Kotlin特定語義的Kotlin文件可以直接從Java代碼引用,而沒有任何注釋。綜合起來,這樣可以將Java代碼與Kotlin代碼進行細微的混合。
6.我可以在同一個項目中同時使用Java文件和Kotlin文件嗎?
可以。您可以利用Kotlin和Java的互操作性混合使用兩種編程語言。
7.創建一個支持Kotlin的新項目
當您在Android Studio中創建新項目時,選擇「包含Kotlin支持」複選框。
8.在已有項目中添加kotlin支持
如果想在已有項目中添加Kotlin代碼,點擊FIle > New選擇一個AndroidStudio提供的模板
然後選擇kotlin作為source language
點擊finish就ok了。
9.Kotlin有並行的文檔,樣本,codelabs和模板嗎?
我們正在努力使我們的文檔適用於Java和Kotlin語言用戶。與此同時,開發人員可以依靠Kotlin與Java語言卓越的互操作性,自動將Java語言代碼轉換為Android Studio中的Kotlin。
10.Kotlin可以在Android上協同工作嗎?非同步/等待如何?
目前Kotlin的協同工作還在實驗階段,但不代表未來沒有這種可能性。
11.Kotlin支持哪些版本的Android?
全部!Kotlin與JDK 6兼容,所以Kotlin的應用程序可以安全地運行在較舊的Android版本上。
總結
Kotlin的特性有很多,總的來說, Kotlin這門語言簡化了Java , 完全是從一個是實用派的角度,而不是學院派的角度。
相比於JRuby , Jython這些一移植到JVM上的語言, Kotlin 和Java 和互操作感覺更加自然。
每個語言的流行都需要一個引爆點,就像Ruby on Rails 引爆了Ruby 一樣, Android 也許就是之前不那麼流行的Kotlin的引爆點。
最後附上Kotlin學習資源:
1.kotlin官方中文翻譯文檔網址:
https://www.kotlincn.net/docs/reference/
2.Kotlin官網
http://kotlinlang.org/
3.kotlin中文官網
https://www.kotlincn.net/
4.kotlin的gitbook網址
https://www.gitbook.com/book/hltj/kotlin-reference-chinese/details
參考文章:
http://droidyue.com/blog/2017/05/18/why-do-i-turn-to-kotlin/
https://www.w2bc.com/article/239949
https://developer.android.com/kotlin/faq.html
https://developer.android.com/kotlin/resources.html
本文編號2373,以後想閱讀這篇文章直接輸入2373即可。
輸入m獲取文章目錄
推薦
安卓開發
更多推薦《15個技術類公眾微信》
涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。


※MySQL性能優化總結
※一生只為尋找歡笑——讀Linux之父林納斯自傳
※Kotlin 正式成為 Android 官方開發語言
※驚現黑吃黑!WannaCry勒索贖回之路難通
※程序猿都在哪裡寫博客?
TAG:程序猿 |
※深入 git rebase
※async/await使用深入詳解
※深入解讀Google Lens
※深入 Spring Boot :實現對 Fat Jar jsp 的支持
※深入談談String.intern在JVM的實現
※深入 JVM 分析 spring-boot 應用 hibernate-validatorNoClassDefFoundError
※深入 SpringBoot : 怎樣排查 expectedsinglematchingbeanbutfound 2 的異常
※深入淺析一致性模型之Linearizability
※深入骨髓的精緻,就是大家都在追的「effortless chic」!
※Greenlight深入分析Oculus Go的消費者認知
※protobuf深入講解
※深入近賞劃時代手機 Samsung Galaxy Fold
※深入解讀Service Mesh背後的技術細節
※MapReduce Shuffle深入理解
※convergencias展覽 深入探索古巴設計
※深入了解加州最有名的監獄紋身大師 Freddy Negrete 及黑灰素描紋身大師 Mark Mahoney
※Node.js進階:cluster模塊深入剖析
※Binance越南代表Hoang Viet:我們期待與aelf這樣優質的項目在越南地區展開深入合作
※Harden Vol.2高仿籃球鞋深入評測 了解一下?
※vivo與Qualcomm深入合作,AI觸手可及已不再是傳說