大规模采用 Kotlin 替代 Java?
|
多个中小型应用程序的小型团队,再到只专注于构建工具和基础设施的团队。为了尽可能全面地执行评估,我们成立了一个委员会,由每个应用程序团队的高级开发人员、基础设施团队和构建工具团队的代表组成。在 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 运行时上的性能评估 ”结果一致。有 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



