點擊上方「開發者技術前線」,選擇「星標」 來源:開發者技術前線 做者: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 已經支持註解處理器增量編譯,該特性仍處灰度實驗階段,你能夠經過在gradle.properties中添加如下配置來啓用它: kapt.incremental.apt=true 須要指出的是,在現有版本中引入任何非增量編譯的註解處理器或者依賴的變化(截止目前,包括內部聲明的修改)都會致使該模塊的註解處理過程退化爲非增量模式。 KAPT: 其餘提高app
引入了兩個配置來提高編譯性能。其一是使用 Gradle workers:異步
這個版本也對它作了優化。另外一個是 1.3.20 引入的,開啓 Compile Avoidance,就是說依賴若是隻有方法體發生變化,那麼就跳過註解處理。只有在全部的註解處理器都顯式的在註解處理的 classpath 聲明的狀況下,Compile Avoidance 纔會生效。jvm
從 1.3 開始咱們能夠在開發模式下使用無符號數值類型。這個版本咱們對無符號類型以及其數組作了更多的支持:編程語言
須要注意的是,咱們以前就能夠在無符號數組上使用函數式操做例如 filter 和 map ,這是由於無符號類型的數組其實是實現了 Collection 接口的,例如 UIntArray 實現了 Collection 接口。 不過這樣就涉及到了性能問題,由於在 UIntArray 被看成 Collection的實例使用時會額外 建立 一個對象出來。如今好了,全部新增的擴展函數都使用無符號數組類型做爲 receiver 以消除額外的對象建立開銷。所以不用擔憂,如今無符號數組和常規數值類型的數組從使用的角度來說沒有什麼兩樣,不會有任何額外的開銷了。函數
Kotlin/Native 支持的目標平臺有: Windows 32 位(mingw_x86)。除此以外,Windows 和 macOS 用戶也能夠混合編譯 Kotlin/Native 程序到 Linux x86-6四、arm32 以及 Android 和 Raspberry PI 環境上。 Kotlin/Native 對 Apple 平臺的支持工具
對 Apple 平臺的支持也有提高。iOS 上未處理的異常信息會被輸出到 iOS 崩潰日誌當中,iOS 和 macOS 上的異常堆棧(調試模式)也會包含符號信息。 如今也可使用命令行參數 -Xstatic-framework 或者如下 Gradle 腳原本構建靜態庫: 須要注意的一點,現階段官方表示拉取和編譯這些依賴仍然須要一個 Xcode 工程。post
接下來咱們同步下咱們的 IDE 對 Kotlin/Native 的支持工做的進展。 除 IntelliJ IDEA 以外,咱們也將發佈 Kotlin/Native 插件支持 CLion 2019.一、AppCode 2019.1。C interop 描述文件 (.def) 後續也會獲得全部 IDE 的支持,儘管目前代碼補全功能尚未上線。 對於 CLion and AppCode, 咱們也支持了異常堆棧跳轉源碼的支持。 IntelliJ IDEA 支持
調試功能的提高
當你在調試協程代碼時,你能夠看到有一個單獨的異步堆棧 「Async stack trace」 顯示掛起時的變量。 當程序在 suspend 函數或者 Lambda(例子的第 13行)中的斷點中止時, 「Async stack trace」 顯示了變量在上一次掛起時的狀態(12行)。你能夠瀏覽 suspend 函數在當前協程中從上一個掛起點的所有的堆棧 (第十二、4行)並確認變量的值: 這會幫助你更方便的理解當前協程的運行狀態。 在調試 Kotlin 代碼時,能夠選擇 「Kotlin」 模式來查看變量。 Eclipse IDE 插件更新
Eclipse 插件 0.8.14 主要包含如下更新:Kotlin 1.3.30 編譯器支持, 大量的問題修復和總體穩定性的提高。該版本也增長了對 Gradle 工程的實驗性質的支持。你能夠用 Eclipse Buildship 導入工程,你會發現 Kotlin 會被正常配置。
若是你的程序運行在 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…