Kotlin 新版來了,支援跨平臺!

Tamic發表於2019-05-13

點選上方“開發者技術前線”,選擇“星標” 來源:開發者技術前線 作者:Tamic | 編輯: 可可

谷歌在今年的 I/O 大會上宣佈,Kotlin 程式語言現在是 Android 應用程式開發人員的首選語言(谷歌宣佈 Kotlin 成為安卓開發首選)。 還有一個好訊息, Kotlin 1.3.30 正式釋出,做了對apple的支援。離上次釋出1.3 時間過去半年。本次的該版本主要覆蓋 1.3 版本的問題修復和工具完善。版本更新的主要範圍為 Kotlin/Native、KAPT 的效能優化以及對 IntelliJ IDEA 的支援優化。 我們來回顧下 1.3的 新特性 穩定的協程 Kotlin/Native Beta 多平臺專案和工具 用於 Kotlin/Native 和多平臺的工具 Ktor 1.0 Beta

本次版本帶來的牛逼特性主要對1.3完善,並且做了工具上的支援。

KAPT 支援註解處理器增量編譯

KAPT 已經支援註解處理器增量編譯,該特性仍處灰度實驗階段,你可以通過在gradle.properties中新增以下配置來啟用它: kapt.incremental.apt=true 需要指出的是,在現有版本中引入任何非增量編譯的註解處理器或者依賴的變化(截止目前,包括內部宣告的修改)都會導致該模組的註解處理過程退化為非增量模式。 KAPT: 其他提升

引入了兩個配置來提升編譯效能。其一是使用 Gradle workers:

這個版本也對它做了優化。另一個是 1.3.20 引入的,開啟 Compile Avoidance,就是說依賴如果只有方法體發生變化,那麼就跳過註解處理。只有在所有的註解處理器都顯式的在註解處理的 classpath 宣告的情況下,Compile Avoidance 才會生效。

無符號陣列的擴充套件方法

從 1.3 開始我們可以在開發模式下使用無符號數值型別。這個版本我們對無符號型別以及其陣列做了更多的支援:

需要注意的是,我們之前就可以在無符號陣列上使用函式式操作例如 filter 和 map ,這是因為無符號型別的陣列實際上是實現了 Collection 介面的,例如 UIntArray 實現了 Collection 介面。 不過這樣就涉及到了效能問題,因為在 UIntArray 被當作 Collection的例項使用時會額外 建立 一個物件出來。現在好了,所有新增的擴充套件函式都使用無符號陣列型別作為 receiver 以消除額外的物件建立開銷。因此不用擔心,現在無符號陣列和常規數值型別的陣列從使用的角度來講沒有什麼兩樣,不會有任何額外的開銷了。

Kotlin/Native

Kotlin/Native 支援的目標平臺有: Windows 32 位(mingw_x86)。除此之外,Windows 和 macOS 使用者也可以混合編譯 Kotlin/Native 程式到 Linux x86-64、arm32 以及 Android 和 Raspberry PI 環境上。 Kotlin/Native 對 Apple 平臺的支援

對 Apple 平臺的支援也有提升。iOS 上未處理的異常資訊會被輸出到 iOS 崩潰日誌當中,iOS 和 macOS 上的異常堆疊(除錯模式)也會包含符號資訊。 現在也可以使用命令列引數 -Xstatic-framework 或者以下 Gradle 指令碼來構建靜態庫: 需要注意的一點,現階段官方表示拉取和編譯這些依賴仍然需要一個 Xcode 工程。

Kotlin/Native IDE 支援

接下來我們同步下我們的 IDE 對 Kotlin/Native 的支援工作的進展。 除 IntelliJ IDEA 之外,我們也將釋出 Kotlin/Native 外掛支援 CLion 2019.1、AppCode 2019.1。C interop 描述檔案 (.def) 後續也會得到所有 IDE 的支援,儘管目前程式碼補全功能還沒有上線。 對於 CLion and AppCode, 我們也支援了異常堆疊跳轉原始碼的支援。 IntelliJ IDEA 支援

除錯功能的提升

當你在除錯協程程式碼時,你可以看到有一個單獨的非同步堆疊 “Async stack trace” 顯示掛起時的變數。 當程式在 suspend 函式或者 Lambda(例子的第 13行)中的斷點停止時, “Async stack trace” 顯示了變數在上一次掛起時的狀態(12行)。你可以瀏覽 suspend 函式在當前協程中從上一個掛起點的全部的堆疊 (第12、4行)並確認變數的值: 這會幫助你更方便的理解當前協程的執行狀態。 在除錯 Kotlin 程式碼時,可以選擇 “Kotlin” 模式來檢視變數。 Eclipse IDE 外掛更新

Eclipse 外掛 0.8.14 主要包含以下更新:Kotlin 1.3.30 編譯器支援, 大量的問題修復和整體穩定性的提升。該版本也增加了對 Gradle 工程的實驗性質的支援。你可以用 Eclipse Buildship 匯入工程,你會發現 Kotlin 會被正常配置。

指定 JVM 版本

如果你的程式執行在 JVM 9, 10, 11, 或者 12 等版本下,你可以設定 jvmTarget到對應的版本了。這個設定會影響編譯的 class 檔案的位元組碼版本,但它們不是後向相容的。相比之下,新目標版本不會有任何位元組碼優化也不會有任何新特性,期待後續Kotlin繼續更新。 寫在最後 無論 Google 對Kotlin 賦予什麼期望,總而言之,Google提出新的系統和跨平臺方案,意味著Andorid 生態已經向不同領域發力,最近微軟的反擊也預示者,google的跨端計劃已經對微軟形成了火力壓制,坐等大安卓起飛,移動開發下一春不遠了。 於此同時微軟也在大力發展自己的.net語言的跨平臺,並且也在支援 Pyhon開發語言的各種工具,其實是在對 Flutter和Kotlin 提出了挑戰。 大家如何看待 Kotlin 的未來? 歡迎交流

更多原創: Flutter 1.5 來襲,支援Web , 桌面,嵌入式開發 juejin.im/post/5cd3ab…

相關文章