资讯专栏INFORMATION COLUMN

AS负责人说不必用Kotlin重写,但OkHttp拿Kotlin重写了一遍,就发了OkHttp 4.

AlphaWallet / 3307人阅读

摘要:消息一出,不少开发就担心以后是不是只能用开发了。二版的是由公司开发,与互通,并且具备诸多尚不支持的新特性。此次升级主要是受到了的启发,而的功能和逻辑,与完全一致,等于只是用将之前的版本,复刻了一遍。

导读

虽然 Android Studio 的负责人 Jeffery 已经澄清,只是 Kotlin-First 而不是 Kotlin-Must,并不需要将 App 用 Kotlin 重写一遍。但是 OkHttp 已经开始用 Kotlin 重写的工作,我们来看看这次重写后带来的差异。

一. 序

在今年的 Google I/O 大会上,Google 宣布将以 Kotlin 作为 Android 开发的一级编程语言。而同天,Google 就开源了只支持 Kotlin 的 Jetpack Compose,以借此呼应这一战略。

消息一出,不少 Android 开发就担心以后是不是只能用 Kotlin 开发了。Android Studio 的负责人 Jeffery Van Gogh,立刻发文表示,"Kotlin-First" 只是表示 Kotlin 将比 Java 在 Android 中占据更重要的地位,但是并不需要将现有 Java 开发的 Android App 使用 Kotlin 重写一遍。

Jeffer 也表示,在 Android Studio 的十几万代码中,大约只有 10% 的 Kotlin 代码,也只会用 Kotlin 来编写新功能。

只是 Kotlin-First,而非 Kotlin-Must。

虽说 Google 也不建议我们将现有的 App 用 Kotlin 重写一遍,但是 OkHttp 这个 Android 下最火的网络框架开源库,已经开始着手用 Kotlin 将整个库重写一遍。

接下来我们看看这次升级的细节吧。

二. Kotlin 版的 OkHttp

Kotlin 是由 JetBrains 公司开发,与 Java 100% 互通,并且具备诸多 Java 尚不支持的新特性。就我个人的使用体验来说,Kotlin 还是非常不错的,唯一有问题的可能就是写 Kotlin 太爽了,导致在同项目中编写 Java 代码时,有那么零点几秒的恍惚。

近期 Jesse Wilson 表示,已经使用 Kotlin 语言,把 OkHttp 3.0 全部重写一遍,并将其命名为 OkHttp4。

此次升级主要是受到了 Okio 2 的启发,而 OkHttp 4 的功能和逻辑,与 OkHttp 3.0 完全一致,等于只是用 Kotlin 将之前的 Java 版本,复刻了一遍。

在仅用 Kotlin 将原项目重写一遍,带来了一些数据指标的变化,我们一起来看看。

2.1 代码量的比较

从代码行数,可以看到,Kotlin 的编写代码量在减少。

  • Java: 25,775 行

  • Kotlin:24,114 行

    代码行减少了 7%,但是如果严格利用 Kotlin 的特性,类似 ConnectionSpec 这个类,可以减少 40% 的代码。

    2.2 编译时间

    Kotlin 的编译时间是增加了。

    • Java :2.4 秒

    • Kotlin:10.2 秒

      可以看到,Kotlin 的编译速度,相较于 Java 是变慢了。这主要是因为 Kotlin 的编译器比通用 Java 编译器要慢的缘故。

      2.3 二进制大小

      因为编译器的差异,也将导致 Kotlin 编译后的文件,会比 Java 编译后的代码要大。

      • Java:415 KiB

      • Kotlin:670 KiB

        大约大了 60%,这还是挺令人惊讶的。通过反编译可以发现,这些额外的代码,主要来自 JVM 重载、Kotlin 元数据、空检查以及伴生对象的代码。

        三. 小结时刻

        作为 Android 开发,现在是时候使用 Kotlin 了。在 Android 开发中,Kotlin 将比 Java 获得更重要的地位,更多的在线培训中以及官方 Demo 都会优先使用 Kotlin 做支持,而对 Java 只是 “尽量满足”,并且有一些功能,可能只提供 Kotlin 的支持,例如本次开源的 Jetpack Compose。

        从 OkHttp 的重写这个事情上来看,Kotlin 编写的代码,虽然编译速度更慢、编译的二进制文件更大,但是我们开发人员编写的代码将更少。

        这些也符合趋势,程序员做的更少,机器做的更多,不过我相信 Google 在后期应该也会针对这些情况做一些优化,以达到满足生产的需求。

        reference:

        • okhttp-issues

        • metrics-for-okhttps-kotlin-upgrade

          本文对你有帮助吗?留言、转发、点好看是最大的支持,谢谢!


          公众号后台回复成长『成长』,将会得到我准备的学习资料,也能回复『加群』,一起学习进步;你还能回复『提问』,向我发起提问。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/6781.html

相关文章

  • Android开发 -- Retrofit + Rxjava + Kotlin => Requ

    摘要:前言使用和以及基于配置网络请求端口,并使用百科的搜索接口获得搜索词条相关数目步骤引用库创建服务接口由于需要的变量有些多,所以使用来统一管理变量,在中定义。总结在分线程中无法改变,也就是说必须在线程中才能改变布局。前言 使用Retrofit 和 Rxjava以及基于kotlin配置网络请求端口,并使用Wiki百科的搜索接口获得搜索词条相关数目:https://en.wikipedia.org/...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<