91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將其Android應用的Java代碼遷移到Kotlin

OSC開源社區 ? 來源:OSC開源社區 ? 作者:OSC開源社區 ? 2022-10-28 15:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Meta 發布了一篇博客表示,正在將其 Android 應用的 Java 代碼遷移到 Kotlin,并分享了這一過程中的一些經驗。

該公司認為,Kotlin 是一種流行的 Android 開發語言,與 Java 相比具有一些關鍵優勢?!耙虼?,在我們努力使我們的開發工作流程更加高效的過程中,將 Meta 的 Android 開發轉向 Kotlin 是非常合理的。..。..Kotlin 通常被認為是一種比 Java 更好的語言,在年度 Stack Overflow 開發者調查中,它的好感度要高于 Java?!?/p>

除了受歡迎程度外,Meta 還將最新的 Kotlin 版本與 Java 11(可用于 Android 開發的最新版本)進行了比較,并得出了 Kotlin 的一些主要優勢:可空性、函數式編程、更短的代碼、以及領域特定語言 (DSL) / 類型安全構建器等。

Facebook 軟件工程師 Omer Strulovich 指出,Meta 旗下幾個流行的 Android 應用 --Facebook、Instagram、Messenger、Portal 和 Quest 都已經開始從 Java 轉向 Kotlin。截至目前,Facebook、Messenger 和 Instagram 的 Android 應用程序都有超過 100 萬行 Kotlin 代碼,并且轉換率正在提高。Meta 的 Android 代碼庫總共已包含有超過 1000 萬行的 Kotlin 代碼。作為此次遷移的一部分,Meta 透露其也正在開源用于操作 Kotlin 代碼的各種示例和實用程序。

不過,采用 Kotlin 也有一些不能忽視的缺點。博客內容指出,比如:兩種語言的混合代碼庫需要長時間的處理維護;以及 Kotlin 與 Java 相比,流行度還是存在明顯的差距,這意味著 Kotlin 可用的工具也更少。更糟糕的是所有 Kotlin 工具還都需要考慮 Kotlin 和 Java 的互操作性,這使得它們的實現就變得復雜。

最大的問題還在于構建時間?!拔覀儚囊婚_始就知道 Kotlin 的構建時間會比 Java 的要長。該語言及其生態系統更加復雜,Java 在優化其編譯器方面領先了 20 年。由于我們擁有多個大型應用程序,較長的構建時間可能會對我們的開發人員體驗產生負面影響?!?/p>

如何處理遷移

Meta 稱,遷移到 Kotlin 既簡單又非常復雜。因為 Kotlin 的設計允許從 Java 進行簡單的轉換,并具有經過深思熟慮的互操作性。這種設計使 JetBrains 能夠為開發人員社區提供 J2K,即 IntelliJ/Android Studio 中的 Java 到 Kotlin 轉換器。但 J2K 不是萬能的,遷移中的有些情況仍然很復雜。

遷移之前,該公司考慮了兩個選擇:

一個是可以使用 Kotlin 在 Meta 上編寫新代碼,但將大部分現有代碼保留在 Java 中。

還有一個是可以嘗試將幾乎所有內部代碼轉換為 Kotlin。

第一個選項的優勢很明顯,即少得多的工作量;但是這種方法也有兩個明顯的缺點。首先,在 Kotlin 和 Java 代碼之間實現互操作性引入了 Kotlin 中 platform types 的使用。platform types 會導致運行時空指針取消引用,從而導致崩潰,破壞了純 Kotlin 代碼提供的靜態安全優勢。在一些復雜的情況下,Kotlin 的空檢查省略還可能漏掉空值通過,進而引發空指針異常。例如,如果 Kotlin 代碼調用由 Java 接口實現的 Kotlin 接口,就會發生這種情況。其他問題包括 Java 無法將類型參數標記為可空性(直到最近才修復),以及 Kotlin 的重載規則考慮了可空性,而 Java 的重載規則卻沒有。

第二個缺點是考慮到 Meta 的大多數軟件開發都需要修改現有代碼?!叭绻覀兊拇蟛糠执a都是用 Java 編寫的,我們就無法讓我們的開發人員充分享受 Kotlin 的樂趣。由于遷移是一個漫長的過程,期望每個工程師在接觸文件之前將文件轉換為 Kotlin 既費力又低效?!?/p>

因此,Meta 方面最終選擇了第二條選項,決定將幾乎所有代碼轉換為 Kotlin。而在嘗試為現有應用程序引入 Kotlin 時,Meta 也遇到了很多麻煩,例如需要更新 Redex 以支持 Java 不生成的字節碼模式。以及使用的某些內部庫依賴于在編譯期間進行字節碼轉換來獲取更好的性能。而將其作為 Kotlin 編譯的一部分運行時,這部分代碼則無法生效。為此,Meta 專門構建了解決工具。

此外,他們還發現在現有工具中存在的一些差異。例如代碼審查或 wiki 中缺少 Kotlin 語法高亮顯示?!拔覀兏铝宋覀冋谑褂玫膸?Pygments,以使體驗與 Java 相媲美。我們更新了一些內部代碼修改工具,以便能夠處理 Kotlin。我們還構建了 Ktfmt,這是一個基于 google-java-format 的代碼和理念的確定性 Kotlin 格式化程序?!?/p>

準備好所有工具后,Meta 就可以正式開始批量轉換大量代碼?!半S著我們工具的改進,我們已經能夠將相當大的一部分代碼轉換成 Kotlin。我們的代碼庫中已經有超過 1000 萬行 Kotlin 代碼,而且 Meta 的大多數 Android 開發人員現在都在編寫 Kotlin 代碼”。平均而言,此次遷移使代碼行數減少了 11%。

Meta 方面表示,其向 Kotlin 的遷移仍在進行中并在加速?!拔覀円呀浽试S Meta 的任何想要使用 Kotlin 的 Android 開發人員這樣做,并為他們提供了工具來輕松地將現有代碼遷移到 Kotlin。Kotlin 仍然缺少一些我們在使用 Java 時已經習慣的工具和優化。但我們正在努力縮小這些差距。隨著我們取得進展以及這些工具和庫的成熟,我們還將努力將它們反饋給社區?!?/p>

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3974

    瀏覽量

    130485
  • JAVA
    +關注

    關注

    20

    文章

    2989

    瀏覽量

    110737
  • 代碼
    +關注

    關注

    30

    文章

    4905

    瀏覽量

    70954

原文標題:已超1000萬行代碼,Java再次輸給了Kotlin...

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何將項目從IAR遷移到Embedded Studio

    本文描述如何將IAR EWARM項目遷移到SEGGER Embedded Studio(簡稱SES)中。
    的頭像 發表于 02-25 17:11 ?650次閱讀
    如何將項目從IAR<b class='flag-5'>遷移到</b>Embedded Studio

    Spire.XLS for Android via Java組件說明

    Spire.XLS for Android via Java 是一款專業的 Android Excel 組件,用于在 Android 手機應用程序中創建、操作和轉換 Excel 工作表
    的頭像 發表于 01-24 12:16 ?570次閱讀
    Spire.XLS for <b class='flag-5'>Android</b> via <b class='flag-5'>Java</b>組件說明

    從INA219遷移到INA232

    電子發燒友網站提供《從INA219遷移到INA232.pdf》資料免費下載
    發表于 11-14 14:17 ?1次下載
    從INA219<b class='flag-5'>遷移到</b>INA232

    從USCI模塊遷移到eUSCI模塊

    電子發燒友網站提供《從USCI模塊遷移到eUSCI模塊.pdf》資料免費下載
    發表于 10-18 10:39 ?0次下載
    從USCI模塊<b class='flag-5'>遷移到</b>eUSCI模塊

    從TMS320VC5509遷移到TMS320VC5509A

    電子發燒友網站提供《從TMS320VC5509遷移到TMS320VC5509A.pdf》資料免費下載
    發表于 10-17 10:38 ?0次下載
    從TMS320VC5509<b class='flag-5'>遷移到</b>TMS320VC5509A

    從TMS320C64x遷移到TMS320C64x+

    電子發燒友網站提供《從TMS320C64x遷移到TMS320C64x+.pdf》資料免費下載
    發表于 10-16 10:26 ?0次下載
    從TMS320C64x<b class='flag-5'>遷移到</b>TMS320C64x+

    從OMAP3530遷移到AM37x

    電子發燒友網站提供《從OMAP3530遷移到AM37x.pdf》資料免費下載
    發表于 10-14 11:39 ?0次下載
    從OMAP3530<b class='flag-5'>遷移到</b>AM37x

    從TMS320DM6467遷移到TMS320DM6467T

    電子發燒友網站提供《從TMS320DM6467遷移到TMS320DM6467T.pdf》資料免費下載
    發表于 10-14 11:30 ?0次下載
    從TMS320DM6467<b class='flag-5'>遷移到</b>TMS320DM6467T

    從TMS320DM6446 594MHz遷移到810MHz

    電子發燒友網站提供《從TMS320DM6446 594MHz遷移到810MHz.pdf》資料免費下載
    發表于 10-14 11:18 ?0次下載
    從TMS320DM6446 594MHz<b class='flag-5'>遷移到</b>810MHz

    從TMS320C6455遷移到TMS320C6474

    電子發燒友網站提供《從TMS320C6455遷移到TMS320C6474.pdf》資料免費下載
    發表于 10-14 09:20 ?0次下載
    從TMS320C6455<b class='flag-5'>遷移到</b>TMS320C6474

    從TMS320C5515/05遷移到TMS320C5535/34/33/32

    電子發燒友網站提供《從TMS320C5515/05遷移到TMS320C5535/34/33/32.pdf》資料免費下載
    發表于 10-12 10:53 ?0次下載
    從TMS320C5515/05<b class='flag-5'>遷移到</b>TMS320C5535/34/33/32

    從TMS320C5515遷移到TMS320C5517

    電子發燒友網站提供《從TMS320C5515遷移到TMS320C5517.pdf》資料免費下載
    發表于 10-12 10:40 ?0次下載
    從TMS320C5515<b class='flag-5'>遷移到</b>TMS320C5517

    從OMAP3530遷移到AM35x

    電子發燒友網站提供《從OMAP3530遷移到AM35x.pdf》資料免費下載
    發表于 10-12 09:26 ?0次下載
    從OMAP3530<b class='flag-5'>遷移到</b>AM35x

    IT資源遷移到云服務器的關鍵因素

    隨著云計算技術的不斷成熟和普及,越來越多的企業選擇將他們的IT資源遷移到云服務器上。這種轉變不僅可以降低成本、提高靈活性,還可以提升安全性和效率。本文將深入探討將IT資源遷移到云服務器的重要性、優勢
    的頭像 發表于 09-18 11:21 ?617次閱讀

    遷移到基于Arm STM32的MSPMO指南

    電子發燒友網站提供《從遷移到基于Arm STM32的MSPMO指南.pdf》資料免費下載
    發表于 09-07 11:17 ?0次下載
    從<b class='flag-5'>遷移到</b>基于Arm STM32的MSPMO指南
    主站蜘蛛池模板: 欧美精品一二区 | videosex久久麻豆 | 色人阁婷婷 | jlzzjlzz欧美大全 | 涩涩高清无乱码在线观看 | 亚洲精品香蕉婷婷在线观看 | 亚洲乱码尤物193yw在线播放 | 女人张开腿让男人桶视频免费大全 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | 他也色在线视频 | www.四虎影院在线观看 | 一区二区三区高清 | 黄色理伦 | 女人本色高清在线观看wwwwww国产 | 亚洲男人天堂手机版 | 亚洲国产精品第一页 | 99久久99久久久精品齐齐鬼色 | 国产精品免费观看网站 | 天天色天天干天天射 | 欧美另类69xxxxxhd | 国产精品美女一区二区三区 | 国产香蕉一区二区精品视频 | 操女人免费视频 | 麦克斯奥特曼免费观看 | 狠色网| 久久久久久久国产 | 成人黄色免费看 | 亚洲九九香蕉 | 免费一看一级毛片全播放 | 日本69xxxx| 五月天婷婷色图 | 在线免费黄 | 欧美福利二区 | 免费福利片2022潦草影视午夜 | 亚洲午夜精品久久久久 | 成人网中文字幕色 | 中文在线天堂网 | 一女被多男玩很肉很黄文 | 天堂新版www中文 | 韩国理论三级在线观看视频 | 亚洲日本精品 |