精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

大規模采用 Kotlin 替代 Java?我們應該知道這些利弊

開發 后端
最近,我們經歷了評估 Android 開發語言的過程。從移動基礎設施團隊的角度來看,我想與你分享一下,我們在評估語言時所采取的步驟,以及為什么我們最終選擇了 Kotlin 語言。

當大規模采用一門新語言時,有許多不同的因素需要考慮,因為事情可能會發生巨大的變化。對于許多人來說,選擇一門語言可以說是取決于個人偏好,但在 LinkedIn,我們有一個基礎團隊,負責評估這些基本技術決策的影響。最近,我們經歷了評估 Android 開發語言的過程。從移動基礎設施團隊的角度來看,我想與你分享一下,我們在評估語言時所采取的步驟,以及為什么我們最終選擇了 Kotlin 語言。

[[275193]]

方法

大規模采用移動語言有許多不同的因素需要考慮。這樣一個決定會對開發人員的生產力、招聘、培訓成本以及最終產品產生巨大的影響。例如,你可能會提高開發人員的生產力,并能夠交付更多的功能,但是必須付出應用程序大小增加的代價,這最終會影響用戶的下載。為了更好地理解采用特定語言的投資和回報,我們認為,公正的技術分析是我們做出決定的基礎。一旦做出了客觀的評估,我們就可以制定一個最適合整個公司移動開發的路線圖。

技術分析

在 Linkedin,Android 開發跨越了不同形式和規模的團隊——從開發大型應用程序的大型團隊,到開發多個中小型應用程序的小型團隊,再到只專注于構建工具和基礎設施的團隊。為了盡可能全面地執行評估,我們成立了一個委員會,由每個應用程序團隊的高級開發人員、基礎設施團隊和構建工具團隊的代表組成。在 LinkedIn 的 Android 開發背景下,這些是我們研究的領域。

語言特性

當谷歌宣布將 Kotlin 作為 Android 開發的官方支持編程語言時,我們都非常激動。Kotlin 作為一門語言,具有許多 Java 世界中沒有的新特性,比如空值安全(null-safety)、擴展、數據類、協程等等。雖然我們享受了這些新特性帶來的所有好處,但是 Kotlin 還在設計時刪除了某些 Java 特性,比如直接原始類型、靜態成員、檢查異常等等。在我們的分析中,我們深入了解了語言設計決策背后的想法,并研究了反編譯代碼來理解每個特性。這有助于我們將來制定指導方針,并對我們發布的代碼充滿信心。

兼容性

在 LinkedIn 的規模下,如果我們決定遷移到一種新的語言,遷移將是一個很長的過程,尤其是對于包含數百萬行代碼的代碼庫。正如理解每種語言的特性很重要一樣,考慮互操作性也同樣重要。幸運的是,Kotlin 和 Android Studio 之間的集成經常提供建議并幫助你重構代碼。然而,歸根結底,它們是兩種不同的語言,讓它正常工作只是一個開始。在此過程中,你肯定希望構建一些增強功能。例如,我們遇到的一些問題是為靜態成員添加 JVM 注解,并確保 Java API 把單一抽象方法(SAM)轉換 參數放在最后,這樣 Kotlin 編譯器就可以使用拖尾 lambda 語法 。

擴展性

構建時間是移動工程師最優先考慮的問題之一。使用 Kotlin,我們預計構建時間會增加。LinkedIn 的移動開發從數千行代碼到數百萬行代碼不等;因此,構建時間的增加可能有很大差異。這可能不會立即引起注意,但隨著時間的推移,我們會密切關注轉向 Kotlin 所導致的時間增加,尤其是 LinkedIn 的規模下。為了測試構建時間的長短,我們使用Android Studio Poet 創建了包含不同模塊數量、不同 Kotlin 和 Java 代碼行的 Android 項目作為模擬,同時保持類似的項目大小和依賴關系圖。我們使用Gradle Profiler 測量了清除構建和增量構建,以了解構建時間花在哪里。

考慮到該項目的規模,它有可能影響從開發到生產的許多不同方面。運行時性能是該分析的另一個關鍵領域。我們在 Kotlin 和 Java 中實現了幾種算法作為測試工具,并在物理設備上運行它們。為了使實驗更加真實,我們還在這些測試中啟用了ProGuard 。研究結果與“Kotlin 和 Java 在 Android 運行時上的性能評估 ”結果一致。有趣的是,Kotlin 中的大部分開銷來自空安值全特性,該特性使方法的每個調用都具有非可選參數,都不能被編譯器映射到基本類型。這就導致了對 Intrinsics.checkParameterIsNotNull 的調用,它要為我們實驗中的大部分開銷負責。

應用程序的大小是由許多因素造成的。按照谷歌的說法 ,初始的 Kotlin 標準庫導入將使應用程序的大小增加大約 1MB,隨著時間的推移,更多的 Java 代碼被轉換成 Kotlin,由于 Kotlin 字節碼方法的增加,應用程序將變得更大。幸運的是,ProGuard 能夠從 Kotlin 生成的代碼中去除并大大減少未使用的方法。我們創建了示例應用程序,并將它們從 Java 轉換為純 Kotlin,以了解方法數量和應用程序大小的開銷。

語言升級

移動開發的前景在不斷變化,了解升級過程非常重要。在過去,我們看到語言升級伴隨著不兼容的更改、構建失敗和許多意外錯誤,這些錯誤最終迫使我們鎖定主干,甚至執行語言升級。JetBrains 承諾為 Kotlin 提供兩種形式的向后兼容性:

新編譯器仍將可以使用舊二進制文件(但是舊編譯器可能無法識別新二進制文件,比如 javac 1.6,它無法讀取由 javac 1.8 編譯的類)。

舊二進制文件將可以在運行時繼續和新二進制文件一起工作,而新代碼可能需要新依賴項。

在源代碼兼容性方面,Kotlin 遵循 API 棄用警告的模式,一旦升級到新的編譯器版本,該警告就會逐漸變為錯誤。在過去,我們看到升級通常會給社區足夠的時間來適應這些更改。例如,KT-21515 中的語言行為變化被標記為警告,并在接下來的 1.2.x 補丁版本中得以保留,直到 Kotlin 1.3。然而,值得注意的是,JetBrains 并沒有聲明將在主要版本更改中提供哪種類型的兼容性。

開發者生態系統

Kotlin 能夠輕而易舉地與 Android Studio 搭配使用并不奇怪,因為 JetBrains 是這兩款產品背后的主要貢獻者。大多數(如果不是全部的話)Android Studio 工具都可以無縫地與 Kotlin 一起工作,包括調試器、內存分析器、Android 分析器等等。值得一提的 Kotlin 特性包括 Kotlin 自動轉換和 Kotlin 反編譯器。后者讓你深入了解 Kotlin 代碼的底層工作機制。

LinkedIn 使用 Gradle 作為 Android 和 Java 產品的實際構建系統。借助 Kotlin- Android Gradle 插件,Kotlin 在 Gradle 中可以順暢地工作。Gradle 企業版提供遠程緩存解決方案。Kotlin 1.2.21 允許 Kotlin 項目使用構建緩存。具體來說,對于 Gradle 構建緩存,它還需要使用 Kotlin Gradle Plugin 1.2.20 和 Gradle 4.3 或更高版本。總的來說,由于采用 Kotlin 而引起的構建工具的變化很少。然而,我們的分析主要集中在 Gradle 上,可能不適用于其他構建系統,比如 Buck。

正如我們關注開發人員的生產力一樣,質量也是我們要考慮的另一個重要因素。編寫測試對于確保代碼質量至關重要。我們花了一些時間來理解測試生態系統的局限性及其與其他語言的兼容性。這不僅包括測試框架,還包括代碼覆蓋率分析、CI 管道,最重要的是,在開始編寫 Kotlin 測試之前,在不違背測試標準的情況下所要采取的步驟。該分析還包括 Android 中的主要靜態分析工具Android Lint ,它現在使用UAST 支持 Java 和 Kotlin 分析及樣式檢查工具。

行業分析

自從 Kotlin 于 2017 年在谷歌 I/O 大會上宣布成為 Android 開發的一等語言以來,越來越多的工程師開始接受 Kotlin。Stack Overflow 2018 調查顯示,Kotlin 是第二受歡迎的編程語言。Kotlin 還被認為是未來語言中增長最快的語言,與 Swift、Go、Haskell 和 Rust 并列第一。據谷歌報道,2017 年,當 Kotlin 被宣布為 Android 開發的第一語言時,Google Play 中 9% 的應用程序已經在使用 Kotlin。一年后,即 2018 年 5 月,谷歌宣布這一數字已增至 35%,同比增長近 6 倍。

我們分析了Google Play 商店中的前 300 個免費應用程序 ,并根據它們的 DEX 文件大小進行了篩選,以了解有多少應用程序在大規模使用 Kotlin。雖然這個數字包含了所有第三方庫的代碼,但它能很好地反映應用程序代碼的大小。作為一個初步步驟,我們排除了 APK 中沒有專門 Kotlin 文件夾的應用程序,該文件夾將包含 Kotlin 運行時使用的一些 Kotlin 內置文件。由于代碼的混淆,計算 Kotlin 在代碼中的百分比非常棘手。但是,我們使用apktool 將所有 DEX 文件轉換為 SMALI 代碼,并發現了兩個不同的線索,它們標識了用 Kotlin 編寫的類。對于沒有從.source 屬性中刪除原始文件名的應用程序,我們可以提取擴展名 *.kt。對于其他應用程序,我們尋找 kotlin.Metadata 類。總的來說,我們能夠建立一個圖表來顯示應用程序及其類的數量、代碼大小和 Kotlin 百分比。這讓我們了解到社區有多成熟,以及我們可以從合作伙伴那里得到多少支持。

起初,大多數庫所有者認為,在自己的代碼中使用 Kotlin 實現細節是不成熟的,不應該強加給用戶。隨著 Kotlin 社區變得越來越活躍,這種觀點已經開始轉變。Square 是許多最受歡迎的 Android 開源庫的所有者,它宣布他們的核心Okio 庫已經用Kotlin 重寫 ,并且他們將在未來的所有版本中使用Kotlin。其他一些庫項目已經選擇遵循谷歌針對Android KTX 提供的示例,并發布了一個用 Java 編寫的基本庫,在其中單獨的構件中添加了特定于 Kotlin 的擴展點。例如,FasterXML 的 Jackson 項目添加了一個用于序列化和反序列化 Kotlin 類的Kotlin 模塊 ,以及 Mockito,該項目正在研究添加一個針對 Kotlin 優化過的 mock 語法 。

全方位考察

除了上面列出的要點,我們還花時間研究了與 LinkedIn 內部工具系統的集成,包括崩潰報告、審查流程和 CI 管道。我們不斷與社區和其他公司的開發人員進行溝通,包括谷歌和 JetBrains,不僅要了解他們的方向,還要確保我們的決定與未來的 Android 開發保持一致。人才始終是我們首先要考慮的因素之一;因此,與招聘和培訓有關的成本也是我們分析的重要部分。

總的來說,我們從社區聽到了各種好處和證詞。綜合分析,我們能夠建立一個路線圖,使 LinkedIn 進入下一個使用 Kotlin 的 Android 開發時代,并且相信,我們可以最小化技術風險,已經了解了對招聘和培訓的影響,能夠保持技術標準,并不斷為我們的會員提供價值。

責任編輯:未麗燕 來源: 安卓巴士
相關推薦

2018-01-03 12:48:03

云計算云遷移網絡

2015-07-09 16:35:02

2021-04-13 10:06:42

物聯網互聯網IoT

2021-10-25 14:55:38

Linux技巧命令

2019-03-10 21:32:18

區塊鏈區塊鏈技術比特幣

2017-11-03 13:43:24

云計算Saas信息化

2015-10-26 09:19:28

PHP經驗

2019-09-05 08:09:58

區塊鏈分布式賬本技術DLT

2023-02-27 16:14:46

物聯網IOT

2014-07-31 09:43:28

虛擬化虛擬技術

2012-03-14 15:34:14

PaaS

2020-02-17 13:33:43

區塊鏈預測加密化幣

2021-12-07 13:45:38

WOT技術峰會技術

2024-10-08 15:06:28

數字化轉型大數據數據資產化

2022-05-26 09:43:05

橫向擴展NAS管理成本

2020-04-02 10:07:49

SD-WAN多云安全集成

2023-07-10 14:54:15

專用網絡Wi-Fi

2023-03-19 23:31:32

OpenKruise項目自動化

2025-08-01 01:00:00

2020-10-19 08:32:04

AI機器人
點贊
收藏

51CTO技術棧公眾號

99re在线视频| 日本熟伦人妇xxxx| 亚洲欧美一级| 亚洲欧美日韩在线播放| 国产成人看片| 精品视频一二三区| 亚洲欧美在线专区| 日韩av中文字幕在线免费观看| 欧美色图色综合| 成人av电影观看| 国产精品99久久久久久似苏梦涵| 57pao国产成人免费| 91无套直看片红桃在线观看| 波多野结衣在线一区二区| 日韩欧美国产视频| 51xx午夜影福利| 麻豆导航在线观看| 国产福利一区在线观看| 青青a在线精品免费观看| 91香蕉视频在线播放| 欧美黑白配在线| 91麻豆精品久久久久蜜臀| 日韩精品xxxx| 菠萝蜜视频国产在线播放| www激情久久| 99精品99久久久久久宅男| www毛片com| 亚洲福利一区| xvideos亚洲人网站| 双性尿奴穿贞c带憋尿| 国产一区二区三区黄网站| 一本色道久久综合狠狠躁的推荐| 麻豆一区二区三区在线观看| 成人亚洲综合天堂| 95精品视频在线| 97神马电影| 亚洲自拍第二页| 性欧美videos另类喷潮| 欧美精品18videos性欧| 中文国语毛片高清视频| 深爱激情综合网| 精品国产不卡一区二区三区| 日韩一区二区三区不卡视频| aa视频在线观看| 夜夜亚洲天天久久| 日本三级福利片| av中文字幕在线| 91视频你懂的| 国内一区在线| 后进极品白嫩翘臀在线视频| 国产精品一二三区在线| 国产色婷婷国产综合在线理论片a| 国产精品一区无码| 亚洲一区中文| 欧洲成人性视频| 日韩女优在线观看| 99人久久精品视频最新地址| 欧美激情在线播放| 免费无遮挡无码永久在线观看视频| 99视频精品全部免费在线视频| 国产亚洲成精品久久| 蜜桃av免费看| 精品国产中文字幕第一页| 亚洲美女福利视频网站| 无码人妻精品一区二区三应用大全| 国产另类在线| 日韩电影中文 亚洲精品乱码| 日本55丰满熟妇厨房伦| 亚洲视频精选| 精品国产伦一区二区三区观看体验| 真实乱偷全部视频| av不卡一区| 亚洲国产欧美一区| 久久久国产精品无码| 亚洲国产合集| 亚洲香蕉成人av网站在线观看| 能免费看av的网站| 欧美成人自拍| 欧美黑人巨大xxx极品| 久久精品无码人妻| 欧美亚洲一区二区三区| 国产精品av在线播放| 怡红院男人天堂| 国产一区二区三区高清播放| yellow视频在线观看一区二区| 欧美一级免费片| 91免费国产在线| 小说区图片区图片区另类灬| 老司机精品视频在线观看6| 亚洲女同ⅹxx女同tv| 99在线观看视频免费| 日本午夜大片a在线观看| 在线精品观看国产| 久久久福利影院| 青青一区二区| 丝袜一区二区三区| 国产亚洲精久久久久久无码77777| 国产人成精品一区二区三| 人人做人人澡人人爽欧美| 免费日韩电影在线观看| 性生生活大片免费看视频| 看亚洲a级一级毛片| 亚洲国产精品va在线看黑人动漫| 精品成人av一区二区三区| 久久久久亚洲| 91av在线播放| 一级特黄aa大片| 国产成人精品亚洲日本在线桃色| 久久婷婷人人澡人人喊人人爽| 在线免费看黄| 午夜天堂影视香蕉久久| 最近中文字幕一区二区| 国产精品久久久久久久久久白浆 | 国产成人日日夜夜| 六月婷婷久久| 日韩激情av| 欧美日韩一区二区三区不卡| 欧美大喷水吹潮合集在线观看| 欧美亚洲高清| 91av在线不卡| www.激情五月| 国产精品乱子久久久久| 99视频在线免费播放| 韩国三级成人在线| 国产亚洲成精品久久| 91久久国产视频| 国产电影一区在线| 色婷婷久久久亚洲一区二区三区| 午夜老司机精品| 97超碰在线免费| 欧美一区二区三区免费视频| 久久久久亚洲av无码a片| 日韩午夜免费视频| 亚洲综合av影视| 日本激情在线观看| 在线免费观看视频一区| 黑丝av在线播放| 亚洲午夜黄色| 91丨九色丨国产在线| 日本最黄一级片免费在线| 91久久一区二区| 亚洲人人夜夜澡人人爽| 1024成人| 国产精品免费一区二区| 一色桃子av在线| 欧美一区二区三区精品| 久久国产高清视频| 久久国产三级精品| 亚洲在线欧美| 日韩美女在线| www.xxxx欧美| 国产精品自产拍| 成人免费在线播放视频| 黄色一级片免费的| 天天影视天天精品| 成人有码在线播放| 成人午夜在线影视| 国产精品成人一区二区不卡| 一本色道久久综合亚洲aⅴ蜜桃| 欧美xxxxx精品| 亚洲高清电影| 精品国产乱码久久久久久蜜柚| 成年人国产在线观看| 亚洲福利视频网| 中文字幕一区二区三区手机版| 成人涩涩免费视频| 水蜜桃色314在线观看| 久久精品色综合| 欧美一级在线播放| 国产在线观看黄| 欧美日韩国产不卡| 国精品无码一区二区三区| 国产老女人精品毛片久久| 欧美 亚洲 视频| 成人午夜大片| 欧美中文在线观看| 波多野结衣在线影院| 欧美人与z0zoxxxx视频| 欧美成欧美va| 99在线精品免费| 国内外成人激情视频| 国产中文精品久高清在线不| 国产人妖伪娘一区91| 超碰免费公开在线| 亚洲精品国产精品国产自| 国产视频1区2区| 中文字幕亚洲在| 国产艳妇疯狂做爰视频 | 国产高清视频一区| 成人一对一视频| 精品国产一区二区三区四区| 老司机精品视频在线| 久久国产精品免费一区| 国产亚洲精品精品国产亚洲综合| 久久久av亚洲男天堂| 高清国产mv在线观看| 色综合久久久久综合体| 国产午夜精品久久久久久久久| 国产米奇在线777精品观看| 国产女主播自拍| 欧美日韩性在线观看| 成人高清在线观看| 精品免费av在线 | 91久久久久久久久久久| yellow字幕网在线| 在线中文字幕日韩| 亚洲国产精品久久久久久久| 亚洲国产欧美另类丝袜| 欧美aaa级片| 99re8在线精品视频免费播放| 少妇一级淫免费播放| 国产精品大片| 亚洲精品一区二区三区蜜桃久| 国产精品三p一区二区| 国产精品久久久久91| 欧美黑人猛交的在线视频| 在线日韩欧美视频| 五月激情丁香婷婷| 欧美精品久久久久久久多人混战| 国产精品白浆一区二小说| 国产精品国产三级国产有无不卡 | 国产亚洲精品久| 国产吃瓜黑料一区二区| 麻豆免费精品视频| 超碰网在线观看| 亚洲视屏一区| 26uuu成人| 自拍视频一区| 国产精品有限公司| 91精品一区| 国产精品2018| 男女羞羞在线观看| 久久久久久国产三级电影| 免费在线观看黄色| 国产亚洲成精品久久| 男操女在线观看| 亚洲精美色品网站| 后入内射欧美99二区视频| 日韩一区二区在线观看视频播放| 亚洲视频一区在线播放| 欧洲人成人精品| 国产精品乱码一区二区视频| 欧美日韩亚洲91| 日韩乱码在线观看| 亚洲国产一区视频| 国产一级aa大片毛片| 伊人开心综合网| 69av.com| 亚洲精品免费视频| 午夜激情福利网| 中文字幕字幕中文在线中不卡视频| 国产成人免费观看网站| 久久精品网站免费观看| 精品国产91洋老外米糕| 国产又大又粗又爽| 欧美性xxxxx极品娇小| 黄色在线观看国产| 欧美日韩国产一区二区三区| 日韩毛片在线视频| 五月婷婷色综合| 五月婷婷中文字幕| 日韩欧美国产骚| 成人黄色免费网| 欧美巨大另类极品videosbest | 国产精品视频99| 日韩亚洲国产免费| 亚洲www在线观看| 亚洲日本va中文字幕| 国产欧美丝袜| 亚洲精品无吗| 日韩精品无码一区二区三区| 成人精品天堂一区二区三区| 手机福利在线视频| 欧美日韩亚洲一区三区 | 伊人手机在线| 国模极品一区二区三区| 亚洲一二三四| 国产精品三级在线| 深夜福利一区| 精品国产一区二区三| 成人情趣视频网站| 2021狠狠干| 136国产福利精品导航网址| 777久久久精品一区二区三区| 精品众筹模特私拍视频| 久久精品这里都是精品| 欧美做受高潮6| 国产精品亲子伦对白| 亚洲色图综合区| 天天免费综合色| 中文字幕码精品视频网站| 日韩一区二区精品在线观看| 手机在线精品视频| 中文字幕亚洲一区二区三区| 在线xxxx| 日本电影亚洲天堂| 精品国产伦一区二区三区观看说明 | 国产精品永久入口久久久| 精品成av人一区二区三区| 国产美女视频免费| 国产欧美日韩亚洲一区二区三区| 久久国产精品国产精品| 成人免费视频免费观看| 九九九视频在线观看| 亚洲国产精品久久一线不卡| 嫩草影院一区二区三区| 欧美大片顶级少妇| 国产鲁鲁视频在线观看免费| 欧美日韩成人在线播放| 姬川优奈av一区二区在线电影| 亚洲综合色av| 欧美三级美国一级| 国产 国语对白 露脸| 久久最新视频| 制服丝袜av在线| 中文字幕一区二区三区av | 欧美在线观看一二区| 亚洲国产成人一区二区| 日韩视频免费中文字幕| 亚洲综合电影| 国产精品自拍首页| 亚洲成人精品| 免费黄色一级网站| 成人国产免费视频| 亚洲综合久久av一区二区三区| 精品久久久久久久久中文字幕| 99久久精品国产一区色| 中文字幕欧美精品在线| 伊人久久大香线蕉午夜av| 91亚洲国产成人久久精品| 日本一极黄色片| www.成人在线| 免费无遮挡无码永久在线观看视频| 欧美日韩亚洲综合| 免费在线高清av| 91精品国产高清久久久久久久久 | 黄视频网站在线看| 国产精品久久久久不卡| 一本久久青青| 99热自拍偷拍| 成人黄色小视频在线观看| 亚洲欧美小视频| 欧美美女直播网站| 日韩成人影视| 国产免费成人av| 成人同人动漫免费观看 | 精品国产污污免费网站入口| 国产调教视频在线观看| 成人a免费视频| 99久久婷婷| 天堂中文av在线| 国产精品成人在线观看| 中文字幕+乱码+中文| 中文字幕欧美日韩在线| 成人午夜亚洲| 一区不卡字幕| 韩国成人在线视频| 欧产日产国产v| 日韩一本二本av| 青春草视频在线观看| 官网99热精品| 一本久道久久久| 人人妻人人藻人人爽欧美一区| 免费欧美日韩| 91免费综合在线| 99久久精品网| 日本中文字幕有码| 亚洲成人资源网| 亚洲欧美日本在线观看| 欧美亚洲激情在线| 欧美日韩国产在线观看网站 | 日韩一区二区免费电影| 欧美xxxx少妇| 久久久久久久久一区| 日本网站在线观看一区二区三区| 国产无遮挡在线观看| 91精品在线免费| 尤物视频在线看| 国产一区再线| 日本美女一区二区| 神马午夜精品91| 精品国产乱码久久久久久影片| 免费h在线看| 在线综合视频网站| 成人黄色在线视频| 久草视频在线免费| 欧美二区在线播放| 最新亚洲精品| 91高清国产视频| 亚洲成人av电影| 国产精品99999| 2020国产精品久久精品不卡| 一区二区日本视频| 特黄一区二区三区| 欧美精品一区二区精品网| 韩日一区二区| 18禁裸男晨勃露j毛免费观看| 久久久99久久精品欧美| 99热这里只有精品在线| 日韩免费观看av|