大发3D-一定牛
大发3D 已超1000万行代码,Java再次输给了Kotlin...

欢迎访问

大发3D-一定牛
你的位置:大发3D-一定牛 > 大发3D > 大发3D 已超1000万行代码,Java再次输给了Kotlin...

大发3D 已超1000万行代码,Java再次输给了Kotlin...

时间:2022-11-18 17:21 点击:81 次

出品 | OSC开源社区(ID:oschina2013)大发3D

Meta 发布了一篇博客暗意,正在将其 Android 利用的 Java 代码挪动到 Kotlin,并共享了这一过程中的一些教授。

该公司以为,Kotlin 是一种流行的 Android 开垦说话,与 Java 比拟具有一些要害上风。“因此,在咱们勤勉使咱们的开垦使命经过愈加高效的过程中,将 Meta 的 Android 开垦转向 Kotlin 詈骂常合理的......Kotlin 时时被以为是一种比 Java 更好的说话,在年度 Stack Overflow 开垦者走访中,它的好感度要高于 Java。”

除了受宽宥进度外,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 年。由于咱们领有多个大型利用神态,较长的构建时刻可能会对咱们的开垦人员体验产生负面影响。”

若那儿理挪动

Meta 称,挪动到 Kotlin 既浅显又相当复杂。因为 Kotlin 的盘算允许从 Java 进行浅显的养息,并具有经过三思尔后行的互操作性。这种盘算使 JetBrains 大要为开垦人员社区提供 J2K,即 IntelliJ/Android Studio 中的 Java 到 Kotlin 养息器。但 J2K 不是全能的,挪动中的有些情况仍然很复杂。

挪动之前,该公司研究了两个采选:

一个是不错使用 Kotlin 在 Meta 上编写新代码,但将大部分现存代码保留在 Java 中。 还有一个是不错尝试将简直系数里面代码养息为 Kotlin。

第一个选项的上风很昭着,即少得多的使命量;然而这种要领也有两个昭着的缺欠。首先,在 Kotlin 和 Java 代码之间杀青互操作性引入了 Kotlin 中 platform types 的使用。platform types 会导致运行时空指针取消援用,大发3D从而导致崩溃,糟塌了纯 Kotlin 代码提供的静态安全上风。在一些复杂的情况下,Kotlin 的空查验不详还可能漏掉空值通过,进而激发空指针很是。举例,要是 Kotlin 代码调用由 Java 接口杀青的 Kotlin 接口,就会发生这种情况。其他问题包括 Java 无法将类型参数象征为可空性(直到最近才建筑),以及 Kotlin 的重载限定研究了可空性,而 Java 的重载限定却莫得。

第二个缺欠是研究到 Meta 的大多数软件开垦都需要修改现存代码。“要是咱们的大部分代码都是用 Java 编写的,咱们就无法让咱们的开垦人员充共享受 Kotlin 的乐趣。由于挪动是一个漫长的过程,期许每个工程师在生意文献之前将文献养息为 Kotlin 既劳作又低效。”

因此,Meta 方面最终采选了第二条选项,决定将简直系数代码养息为 Kotlin。而在尝试为现存利用神态引入 Kotlin 时,Meta 也际遇了好多发愤,举例需要更新 Redex 以复旧 Java 不生成的字节码款式。以及使用的某些里面库依赖于在编译时代进行字节码养息来取得更好的性能。而将其行动 Kotlin 编译的一部分运行时,这部分代码则无法收效。为此,Meta 挑升构建了措置用具。

此外,他们还发当今现存用具中存在的一些各异。举例代码审查或 wiki 中穷乏 Kotlin 语法高亮骄傲。“咱们更新了咱们正在使用的库 Pygments,以使体验与 Java 相忘形。咱们更新了一些里面代码修改用具,以便大要处理 Kotlin。咱们还构建了 Ktfmt,这是一个基于 google-java-format 的代码和理念确切定性 Kotlin 神态化神态。”

准备好所灵验具后,Meta 就不错安谧启动批量养息巨额代码。“跟着咱们用具的改换,咱们仍是大要将相当大的一部分代码养息成 Kotlin。咱们的代码库中仍是有越过 1000 万行 Kotlin 代码,而且 Meta 的大多数 Android 开垦人员当今都在编写 Kotlin 代码”。平均而言,这次挪动使代码行数减少了 11%。

Meta 方面暗意,其向 Kotlin 的挪动仍在进行中并在加快。“咱们仍是允许 Meta 的任何想要使用 Kotlin 的 Android 开垦人员这么做,并为他们提供了用具来松弛地将现存代码挪动到 Kotlin。Kotlin 仍然穷乏一些咱们在使用 Java 时仍是习尚的用具和优化。但咱们正在勤勉削弱这些差距。跟着咱们取得发达以及这些用具和库的锻练,咱们还将勤勉将它们响应给社区。”

更多确定可搜检官方博客:https://engineering.fb.com/2022/10/24/android/android-java-kotlin-migration/

Linus:这确切很烦人!

谷歌成多国“支款机” Webpack终结?其作家在Next.js 13中带来快700倍的替代品

一周热门 2022.10.18-2022.10.24

这里有最新开源资讯、软件更新、本领干货等履行

点这里 ↓↓↓ 谨记 柔柔✔ 标星⭐ 哦~大发3D

JavaMeta代码用具Kotlin发布于:广东省声明:该文视力仅代表作家自己,搜狐号系信息发布平台,搜狐仅提供信息存储空间处事。
服务热线
官方网站:https://www.danyadianqi.com/
工作时间:周一至周六(09:00-18:00)
联系我们
QQ:2852320325
邮箱:jbgg215@qq.com
地址:武汉东湖新技术开发区光谷大道国际企业中心
关注公众号

Powered by 大发3D-一定牛 RSS地图 HTML地图

备案号:苏ICP备17047472号
大发3D-一定牛-大发3D 已超1000万行代码,Java再次输给了Kotlin...

回到顶部