1. 首页 > 快讯

为什么梅塔把安卓应用程序重新挤进科特林

Meta 正在将 Android 应用程序中的代码(如 Facebook、Instagram、信使、门户和任务 VR)从 Java 转换为科特林。关于科特林过渡项目,我们投入了数千名开发人员,在脸谱中,开发人员直接分享了他们的经验。
最近,美国吉迪网介绍了Facebook软件工程师奥梅尔·斯特鲁洛维奇的博客文章。[博客快捷方式]

奥马尔·斯特鲁洛维奇工程师说:“将目前用于Android开发的贾巴转变为科特林,这已经不是小事了。

他说:“如今,Facebook、信使、Instagram等安卓应用各有100万行以上的科特林代码,转化率也在上升”,“整体Android代码库中拥有1000多万行科特林代码”。



安卓操作系统应用程序一直以贾巴为主要语言开发。当甲骨文对Android操作系统提起了有关贾巴API版权的诉讼时,谷歌物色了许多取代贾巴的主要语言。科特林是从众多候选人中选出的官方第一开发语言。他以科特林的优点闻名于四。科特林内置了“Null”是否允许,可以在不降低执行速度的情况下使用函数式编程,可以编写较短的代码,可以定义域专用语言 (SDL) 等。

然而,科特林,一种新兴语言,仍然比世界上排名第三的开发语言贾巴更受欢迎。发展语言的流行性比简单的流行性更能影响获得好利用的辅助工具的容易程度。鉴于代码的规模,Meta 将 Android 应用程序转换为科特林是一个相当大的挑战。斯特鲁洛维奇描述了在大型应用的科特林过渡中出现的两个缺点。

首先,科特林比贾巴更不受欢迎,因此存在更少的工具。此外,考虑科特林和贾巴互操作性的工具很复杂。Meta 发现,即使语言的 100% 互用性,也无法删除所有 200。

斯特鲁洛维奇解释说:“科特林是一种流行语言,但与贾巴相比,流行语的差距是显而易见的,”贾巴是世界上第二和第三大流行语言,这意味着科特林只能使用更少的工具。

他指出,“更糟糕的是,所有科特林工具都必须计算与 20.
比缺少工具更令人担心的是科特林的缓慢构建速度。

斯特鲁洛维奇写道:“从一开始,我们就知道科特林的构建时间比贾巴长,语言和生态系统更加复杂,贾巴早在20年前就开始了编译器优化。

他补充说:“由于 Meta 拥有多个大型应用程序,因此构建时间可能会对开发人员的体验产生负面影响。

他举例说明了 HTTP 客户端项目“OkHttp”在 2019 年从贾巴切换到科特林后的编译时间。OkHttp 是一个相对较小的项目,由 24,000 行科特林组成。对于贾巴来说,编译时间为2.4秒,而科特林编译时间为10.2秒。
斯特鲁洛维奇说:“迁移到科特林是惊人的简单和非常复杂的。他写道,“科特林设计很容易从Jaba转换,通过细致的互操作性,”他写道,“通过这种设计,捷特布林可以与Android工作室一起为社区提供'J2K',一个'贾巴图科特林'转换器。

他补充说,J2K并不总是准确的,而贾巴和科特林的互通性暴露了一些极端情况。

Meta 没有选择只用科特林编写 Java 代码和新编写的代码。梅塔决定将几乎所有的代码转换为科特林。相比之下,Linux 和 Android 开源项目 (ASOP) 决定将鲁斯引入代码库。斯特鲁洛维奇强调,将新代码编写为科特林并留下现有 Java 代码减少了需要完成的任务,但增加了复杂性。他解释说,“启用科特林和 Java 代码之间的互用性将允许科特林使用平台类型,”他解释说,“平台类型会导致运行时空指针反向引用,而不是科特林代码提供的静态稳定性,从而导致冲突。他补充说,“在某些复杂情况下,科特林的空检查省略允许空,并且以后可能会生成空指针异常,如果科特林代码调用作为 Java 接口实现的科特林接口,则会出现这种情况。

他被告知,如果把贾巴留给另一个问题,开发人员将无法完全享受科特林的优势。
梅塔在科特林生态系统中的决定是一个相当大的帮助。Meta 在吉赫布推出了许多由内部开发的科特林转换工具。其他使用 Cor特林的开发人员可以直接使用 Meta 中发布的工具,或鼓励他们找到自动转换的好方法。
科特林的采用增加了工作难度,与规模成正比。Facebook使用自己的“Buck”构建系统,而不是智能J的Android工作室IDE使用格雷德尔。

斯特鲁洛维奇描述了梅塔贡献的几种开源科特林工具。例如,它使用“Pygments”库来提供与 2018 年 2 月 1 日同等的体验。Meta还创建了基于谷歌-贾巴-格式代码和哲学的决定性科特林格式化程序“Kfmt”。此工具是智能J安卓工作室的插件。
在一些缺点中,梅塔在科特林过渡中取得的成绩是代码库规模的减少。

斯特鲁洛维奇说:“到目前为止,梅塔的代码库大小平均下降了11%。过去,谷歌Home团队也表示,在将新功能转移到科特林时,应用程序的代码库大小将减少33%。
他写道,“我在网上看到更多的数字,但这个数字似乎来自某些示例,”他写道,“我对当前数字感到满意,因为删除的行通常是非隐式样板代码,而不是较短的 Coth林代码。

此外,他确认 Cotm林的执行速度可以与 2000 年 2 月 1 日相同,他解释说,他找到了解决增加生成大小问题的方法,并创建了一个构建系统来改进较长的构建时间问题。科特林最初是在制造智能J的捷特布雷恩公司开发的。自 2017 年以来,Google 一直将科特林用作 Android 应用程序的语言,而 Google 和捷特林自 2018 年以来一直支持科特林基金会的科特林语言开发。
自2019年以来,谷歌的Android团队一直采用“科特林第一”方法。谷歌地图、主页、游戏、驱动器、消息等由科特林构建的谷歌安卓应用程序超过70个。谷歌解释说,科特林比贾巴更有效、更安全,可以与贾巴100%互操作,同时生成更小的代码库。据说,通过使贾巴代码库和科特林代码库共存,从贾巴到科特林的转换变得更加容易。

谷歌科特林产品主管詹姆斯·沃德(JamesWard)表示,他欢迎梅塔的工作。

詹姆斯·沃德说:“我很高兴梅塔转向科特林并取得了成功,许多谷歌团队也踏上了类似的旅程,从Jaba到科特林,为Android和服务器,科特林代码达到超过1100万行的顶峰。
他补充说:“其他大型项目也走过了类似的旅程,这再次确认了谷歌的选择。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.5gdog.cn/news/884.html