摘要:消息一出,不少開發(fā)就擔(dān)心以后是不是只能用開發(fā)了。二版的是由公司開發(fā),與互通,并且具備諸多尚不支持的新特性。此次升級主要是受到了的啟發(fā),而的功能和邏輯,與完全一致,等于只是用將之前的版本,復(fù)刻了一遍。
雖然 Android Studio 的負(fù)責(zé)人 Jeffery 已經(jīng)澄清,只是 Kotlin-First 而不是 Kotlin-Must,并不需要將 App 用 Kotlin 重寫一遍。但是 OkHttp 已經(jīng)開始用 Kotlin 重寫的工作,我們來看看這次重寫后帶來的差異。
一. 序在今年的 Google I/O 大會(huì)上,Google 宣布將以 Kotlin 作為 Android 開發(fā)的一級編程語言。而同天,Google 就開源了只支持 Kotlin 的 Jetpack Compose,以借此呼應(yīng)這一戰(zhàn)略。
消息一出,不少 Android 開發(fā)就擔(dān)心以后是不是只能用 Kotlin 開發(fā)了。Android Studio 的負(fù)責(zé)人 Jeffery Van Gogh,立刻發(fā)文表示,"Kotlin-First" 只是表示 Kotlin 將比 Java 在 Android 中占據(jù)更重要的地位,但是并不需要將現(xiàn)有 Java 開發(fā)的 Android App 使用 Kotlin 重寫一遍。
Jeffer 也表示,在 Android Studio 的十幾萬代碼中,大約只有 10% 的 Kotlin 代碼,也只會(huì)用 Kotlin 來編寫新功能。
只是 Kotlin-First,而非 Kotlin-Must。
雖說 Google 也不建議我們將現(xiàn)有的 App 用 Kotlin 重寫一遍,但是 OkHttp 這個(gè) Android 下最火的網(wǎng)絡(luò)框架開源庫,已經(jīng)開始著手用 Kotlin 將整個(gè)庫重寫一遍。
接下來我們看看這次升級的細(xì)節(jié)吧。
二. Kotlin 版的 OkHttpKotlin 是由 JetBrains 公司開發(fā),與 Java 100% 互通,并且具備諸多 Java 尚不支持的新特性。就我個(gè)人的使用體驗(yàn)來說,Kotlin 還是非常不錯(cuò)的,唯一有問題的可能就是寫 Kotlin 太爽了,導(dǎo)致在同項(xiàng)目中編寫 Java 代碼時(shí),有那么零點(diǎn)幾秒的恍惚。
近期 Jesse Wilson 表示,已經(jīng)使用 Kotlin 語言,把 OkHttp 3.0 全部重寫一遍,并將其命名為 OkHttp4。
此次升級主要是受到了 Okio 2 的啟發(fā),而 OkHttp 4 的功能和邏輯,與 OkHttp 3.0 完全一致,等于只是用 Kotlin 將之前的 Java 版本,復(fù)刻了一遍。
在僅用 Kotlin 將原項(xiàng)目重寫一遍,帶來了一些數(shù)據(jù)指標(biāo)的變化,我們一起來看看。
2.1 代碼量的比較從代碼行數(shù),可以看到,Kotlin 的編寫代碼量在減少。
代碼行減少了 7%,但是如果嚴(yán)格利用 Kotlin 的特性,類似 ConnectionSpec 這個(gè)類,可以減少 40% 的代碼。
2.2 編譯時(shí)間Kotlin 的編譯時(shí)間是增加了。
可以看到,Kotlin 的編譯速度,相較于 Java 是變慢了。這主要是因?yàn)?Kotlin 的編譯器比通用 Java 編譯器要慢的緣故。
2.3 二進(jìn)制大小因?yàn)榫幾g器的差異,也將導(dǎo)致 Kotlin 編譯后的文件,會(huì)比 Java 編譯后的代碼要大。
大約大了 60%,這還是挺令人驚訝的。通過反編譯可以發(fā)現(xiàn),這些額外的代碼,主要來自 JVM 重載、Kotlin 元數(shù)據(jù)、空檢查以及伴生對象的代碼。
三. 小結(jié)時(shí)刻作為 Android 開發(fā),現(xiàn)在是時(shí)候使用 Kotlin 了。在 Android 開發(fā)中,Kotlin 將比 Java 獲得更重要的地位,更多的在線培訓(xùn)中以及官方 Demo 都會(huì)優(yōu)先使用 Kotlin 做支持,而對 Java 只是 “盡量滿足”,并且有一些功能,可能只提供 Kotlin 的支持,例如本次開源的 Jetpack Compose。
從 OkHttp 的重寫這個(gè)事情上來看,Kotlin 編寫的代碼,雖然編譯速度更慢、編譯的二進(jìn)制文件更大,但是我們開發(fā)人員編寫的代碼將更少。
這些也符合趨勢,程序員做的更少,機(jī)器做的更多,不過我相信 Google 在后期應(yīng)該也會(huì)針對這些情況做一些優(yōu)化,以達(dá)到滿足生產(chǎn)的需求。
reference:
本文對你有幫助嗎?留言、轉(zhuǎn)發(fā)、點(diǎn)好看是最大的支持,謝謝!
公眾號后臺回復(fù)成長『成長』,將會(huì)得到我準(zhǔn)備的學(xué)習(xí)資料,也能回復(fù)『加群』,一起學(xué)習(xí)進(jìn)步;你還能回復(fù)『提問』,向我發(fā)起提問。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/6781.html
摘要:前言使用和以及基于配置網(wǎng)絡(luò)請求端口,并使用百科的搜索接口獲得搜索詞條相關(guān)數(shù)目步驟引用庫創(chuàng)建服務(wù)接口由于需要的變量有些多,所以使用來統(tǒng)一管理變量,在中定義??偨Y(jié)在分線程中無法改變,也就是說必須在線程中才能改變布局。前言 使用Retrofit 和 Rxjava以及基于kotlin配置網(wǎng)絡(luò)請求端口,并使用Wiki百科的搜索接口獲得搜索詞條相關(guān)數(shù)目:https://en.wikipedia.org/...
閱讀 1709·2021-10-25 09:46
閱讀 3334·2021-10-08 10:04
閱讀 2449·2021-09-06 15:00
閱讀 2887·2021-08-19 10:57
閱讀 2147·2019-08-30 11:03
閱讀 1054·2019-08-30 11:00
閱讀 2498·2019-08-26 17:10
閱讀 3633·2019-08-26 13:36