【转】Kotlin 新版来了,支持跨平台!
作者:Tamic
原文鏈接:juejin.im/post/5cd8f9…
谷歌在今年的 I/O 大會(huì)上宣布,Kotlin 編程語(yǔ)言現(xiàn)在是 Android 應(yīng)用程序開發(fā)人員的首選語(yǔ)言(谷歌宣布 Kotlin 成為安卓開發(fā)首選)。 還有一個(gè)好消息, Kotlin 1.3.30 正式發(fā)布,做了對(duì)apple的支持。離上次發(fā)布1.3 時(shí)間過去半年。本次的該版本主要覆蓋 1.3 版本的問題修復(fù)和工具完善。版本更新的主要范圍為 Kotlin/Native、KAPT 的性能優(yōu)化以及對(duì) IntelliJ IDEA 的支持優(yōu)化。 我們來(lái)回顧下 1.3的 新特性 穩(wěn)定的協(xié)程 Kotlin/Native Beta 多平臺(tái)項(xiàng)目和工具 用于 Kotlin/Native 和多平臺(tái)的工具Ktor 1.0 Beta
本次版本帶來(lái)的牛逼特性主要對(duì)1.3完善,并且做了工具上的支持。
KAPT 支持注解處理器增量編譯
KAPT 已經(jīng)支持注解處理器增量編譯,該特性仍處灰度實(shí)驗(yàn)階段,你可以通過在gradle.properties中添加以下配置來(lái)啟用它: kapt.incremental.apt=true 需要指出的是,在現(xiàn)有版本中引入任何非增量編譯的注解處理器或者依賴的變化(截止目前,包括內(nèi)部聲明的修改)都會(huì)導(dǎo)致該模塊的注解處理過程退化為非增量模式。 KAPT: 其他提升 引入了兩個(gè)配置來(lái)提升編譯性能。其一是使用 Gradle workers: 這個(gè)版本也對(duì)它做了優(yōu)化。另一個(gè)是 1.3.20 引入的,開啟 Compile Avoidance,就是說(shuō)依賴如果只有方法體發(fā)生變化,那么就跳過注解處理。只有在所有的注解處理器都顯式的在注解處理的 classpath 聲明的情況下,Compile Avoidance 才會(huì)生效。
無(wú)符號(hào)數(shù)組的擴(kuò)展方法
從 1.3 開始我們可以在開發(fā)模式下使用無(wú)符號(hào)數(shù)值類型。這個(gè)版本我們對(duì)無(wú)符號(hào)類型以及其數(shù)組做了更多的支持: 需要注意的是,我們之前就可以在無(wú)符號(hào)數(shù)組上使用函數(shù)式操作例如 filter 和 map ,這是因?yàn)闊o(wú)符號(hào)類型的數(shù)組實(shí)際上是實(shí)現(xiàn)了 Collection 接口的,例如 UIntArray 實(shí)現(xiàn)了 Collection 接口。 不過這樣就涉及到了性能問題,因?yàn)樵?UIntArray 被當(dāng)作 Collection的實(shí)例使用時(shí)會(huì)額外 創(chuàng)建 一個(gè)對(duì)象出來(lái)。現(xiàn)在好了,所有新增的擴(kuò)展函數(shù)都使用無(wú)符號(hào)數(shù)組類型作為 receiver 以消除額外的對(duì)象創(chuàng)建開銷。因此不用擔(dān)心,現(xiàn)在無(wú)符號(hào)數(shù)組和常規(guī)數(shù)值類型的數(shù)組從使用的角度來(lái)講沒有什么兩樣,不會(huì)有任何額外的開銷了。
Kotlin/Native
Kotlin/Native 支持的目標(biāo)平臺(tái)有: Windows 32 位(mingw_x86)。除此之外,Windows 和 macOS 用戶也可以混合編譯 Kotlin/Native 程序到 Linux x86-64、arm32 以及 Android 和 Raspberry PI 環(huán)境上。
Kotlin/Native 對(duì) Apple 平臺(tái)的支持
對(duì) Apple 平臺(tái)的支持也有提升。iOS 上未處理的異常信息會(huì)被輸出到 iOS 崩潰日志當(dāng)中,iOS 和 macOS 上的異常堆棧(調(diào)試模式)也會(huì)包含符號(hào)信息。 現(xiàn)在也可以使用命令行參數(shù) -Xstatic-framework 或者以下 Gradle 腳本來(lái)構(gòu)建靜態(tài)庫(kù): 需要注意的一點(diǎn),現(xiàn)階段官方表示拉取和編譯這些依賴仍然需要一個(gè) Xcode 工程。
Kotlin/Native IDE 支持
接下來(lái)我們同步下我們的 IDE 對(duì) Kotlin/Native 的支持工作的進(jìn)展。 除 IntelliJ IDEA 之外,我們也將發(fā)布 Kotlin/Native 插件支持 CLion 2019.1、AppCode 2019.1。C interop 描述文件 (.def) 后續(xù)也會(huì)得到所有 IDE 的支持,盡管目前代碼補(bǔ)全功能還沒有上線。 對(duì)于 CLion and AppCode, 我們也支持了異常堆棧跳轉(zhuǎn)源碼的支持。
IntelliJ IDEA 支持
調(diào)試功能的提升
當(dāng)你在調(diào)試協(xié)程代碼時(shí),你可以看到有一個(gè)單獨(dú)的異步堆棧 “Async stack trace” 顯示掛起時(shí)的變量。 當(dāng)程序在 suspend 函數(shù)或者 Lambda(例子的第 13行)中的斷點(diǎn)停止時(shí), “Async stack trace” 顯示了變量在上一次掛起時(shí)的狀態(tài)(12行)。你可以瀏覽 suspend 函數(shù)在當(dāng)前協(xié)程中從上一個(gè)掛起點(diǎn)的全部的堆棧 (第12、4行)并確認(rèn)變量的值: 這會(huì)幫助你更方便的理解當(dāng)前協(xié)程的運(yùn)行狀態(tài)。 在調(diào)試 Kotlin 代碼時(shí),可以選擇 “Kotlin” 模式來(lái)查看變量。
Eclipse IDE 插件更新
Eclipse 插件 0.8.14 主要包含以下更新:Kotlin 1.3.30 編譯器支持, 大量的問題修復(fù)和整體穩(wěn)定性的提升。該版本也增加了對(duì) Gradle 工程的實(shí)驗(yàn)性質(zhì)的支持。你可以用 Eclipse Buildship 導(dǎo)入工程,你會(huì)發(fā)現(xiàn) Kotlin 會(huì)被正常配置。
指定 JVM 版本
如果你的程序運(yùn)行在 JVM 9, 10, 11, 或者 12 等版本下,你可以設(shè)置 jvmTarget到對(duì)應(yīng)的版本了。這個(gè)設(shè)置會(huì)影響編譯的 class 文件的字節(jié)碼版本,但它們不是后向兼容的。相比之下,新目標(biāo)版本不會(huì)有任何字節(jié)碼優(yōu)化也不會(huì)有任何新特性,期待后續(xù)Kotlin繼續(xù)更新。 寫在最后 無(wú)論 Google 對(duì)Kotlin 賦予什么期望,總而言之,Google提出新的系統(tǒng)和跨平臺(tái)方案,意味著Andorid 生態(tài)已經(jīng)向不同領(lǐng)域發(fā)力,最近微軟的反擊也預(yù)示者,google的跨端計(jì)劃已經(jīng)對(duì)微軟形成了火力壓制,坐等大安卓起飛,移動(dòng)開發(fā)下一春不遠(yuǎn)了。 于此同時(shí)微軟也在大力發(fā)展自己的.net語(yǔ)言的跨平臺(tái),并且也在支持 Pyhon開發(fā)語(yǔ)言的各種工具,其實(shí)是在對(duì) Flutter和Kotlin 提出了挑戰(zhàn)。 大家如何看待 Kotlin 的未來(lái)? 歡迎交流
掃一掃 關(guān)注我的公眾號(hào)【輝輝代碼路】總結(jié)
以上是生活随笔為你收集整理的【转】Kotlin 新版来了,支持跨平台!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack4打包工具
- 下一篇: 币氪研报|BNB(Binance Coi