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