一颗花椰菜 2019-5-14 16:34
當您考慮Android時,Java可能是第一個讓您想到的編程語言,但您不必使用Java進行Android開發。 您可以使用多種不同的編程語言編寫Android應用程序,包括C#,Lua,C / C ++,Java,Scala和Clojure,但是有一種替代編程語言,特別是自今年的Google I /O以來一直受到大量關注。
[img]http://5b0988e595225.cdn.sohucs.com/images/20190514/e753bbd18032415e9385996b3e638065.jpeg[/img]Kotlin是一種在Java虛擬機上運行的靜態類型編程語言,它也可以被編譯成為Java源代碼。它主要是由俄羅斯聖彼得堡的JetBrains開發團隊所發展出來的編程語言,其名稱來自于聖彼得堡附近的科特林島。
從3.0預覽版開始,Android Studio內置了Kotlin支持,因此創建一個了解Kotlin代碼的Android項目就像在Android Studio的項目創建向導中選擇一個復選框一樣簡單。
這條消息引起了很多關注,並引發了一場Kotlin與Java的爭論。 你最近有機會讀到很多關于Kotlin的積極的事情,但是如果你確實從Java切換到Kotlin,那么你到底獲得了什么? Kotlin有什么功能,Java沒有,反之亦然?
[img]http://5b0988e595225.cdn.sohucs.com/images/20190514/983d2e018b9d4c71b33e1eb72a431d20.jpeg[/img]在本文中,我們將討論Kotlin與Java之間的所有主要差異,包括一些如果你轉移到Kotlin就會犧牲的功能。
Kotlin vs Java,後者提供了更簡潔的代碼 - 沒有findViewByIds
如果你比較一個Kotlin類和一個執行相同工作的Java類,那么Kotlin類通常會更加簡潔,但是特別是Kotlin可以嚴重減少你需要編寫的樣板代碼量的一個領域:findViewByIds。
Kotlin Android Extensions允許您將對View的引用導入Activity文件,此時您將能夠使用該View,就像它是Activity的一部分一樣。 結果? 您永遠不必再次編寫另一個findViewById方法!
在使用這些擴展之前,您需要在模塊級build.gradle文件中添加一個額外的插件(apply plugin:'kotlin-android-extensions'),但之后您就可以開始導入視圖。
默認情況下,Kotlin是null安全的
[img]http://5b0988e595225.cdn.sohucs.com/images/20190514/9d1ddf877cb04afd9617b823653fc69c.jpeg[/img]
NullPointerExceptions是Java開發人員沮喪的巨大根源。 Java允許您為任何變量賦值null,但是如果您嘗試使用具有空值的對象引用,那么請自行嘗試遇到NullPointerException!
在Kotlin中,默認情況下所有類型都是非可空的(無法保存空值)。 如果您嘗試在Kotlin代碼中分配或返回null,那么它將在編譯時失敗。這使得幾乎不可能在Kotlin中遇到NullPointerExceptions - 事實上,如果你遇到這個異常,那么很可能是因為你明確要求Kotlin拋出一個,或者NullPointerException來自外部Java代碼。
擴展功能
Kotlin為開發人員提供了擴展具有新功能的類的能力,如果有一個你總覺得缺少一個重要方法的課程,這是理想的!
這些“擴展函數”在Java中不可用,盡管它們可用于其他可用于Android開發的編程語言,例如C#。沒有經過檢查的例外情況
Kotlin沒有檢查異常,因此您不需要捕獲或聲明任何異常。
這是否會吸引您使用Kotlin,或者您希望堅持使用Java將取決于您對已檢查異常的看法,因為這是一個劃分開發人員社區的功能。 如果您厭倦了嘗試/捕獲塊使Java代碼混亂的問題,那么您會對這一遺漏感到滿意,但是如果您發現經過檢查的異常會鼓勵您考慮錯誤恢復並最終推動您創建更強大的功能 代碼,那么你更有可能將這看作是Java比Kotlin更具優勢的領域。
可與Java互換
在討論是否使用Kotlin或Java進行Android開發時,您應該意識到還有第三種選擇:同時使用兩者。盡管兩種語言之間存在差異,但Java和Kotlin是100%可互操作的。您可以從Java調用Kotlin代碼,並且可以從Kotlin調用Java代碼,因此可以在同一個項目中並行使用Kotlin和Java類,並且所有內容仍然可以編譯。
[img]http://5b0988e595225.cdn.sohucs.com/images/20190514/3c9488fb1488451a978b4f883a7c71a8.jpeg[/img]
當您開始使用Kotlin時,這種在兩種語言之間移動的靈活性非常有用,因為它允許您逐步將Kotlin引入現有項目,但您可能也希望永久使用這兩種語言。例如,您可能希望在Kotlin中編寫某些功能,並且您發現某些功能更容易用Java編寫。由于Kotlin和Java都編譯為字節碼,你的最終用戶將無法知道你的Java代碼在哪裡結束,並且Kotlin代碼開始了,所以沒有理由你不能發布一個由Java和Kotlin組成的應用程序碼。如果您想自己嘗試Kotlin,那么只要您安裝了Android Studio 3.0預覽版或更高版本,就可以通過以下幾種方式開始使用。正如你所看到的,有很多很好的理由喜歡Kotlin和Java,但是Java有幾個領域占優勢。 可能Kotlin與Java辯論不會很快解決,兩者都有其自身的優點。 那么,你是要轉向Kotlin,還是覺得Java仍然是Android開發的最佳選擇?[img]http://5b0988e595225.cdn.sohucs.com/images/20190514/26261bd90750431dafce8f8ffcb50183.jpeg[/img]Google Coral也頗受開發者關注。在今年的5月份Google I/O大會上,Google用了一個專門的session向所有的開發者再次詳細地介紹了Coral。除了介紹Coral的性能以及其硬件開發產品,Google還在大會上介紹了基于Coral硬件(Coral Dev Board),由國內團隊開發出的移動端App——Model Play。據悉,Model Play 是面向全球 AI 開發者的 AI 模型共享市場。Model Play 不僅為全球開發者提供了 AI 模型展示交流的平臺,更能搭配含 Edge TPU 的 Coral Dev Board 進行使用,加速 ML 推理,通過手機實時預覽模型運行效果,助力 AI 由原型向產品拓展。