Google 对于从 Java 切换到 Kotlin 时的注意事项提供了第一手的经验,本文对此作了详细阐述。

来源:medium.com

作者 | Nick Heath

译者 | 苏本如,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

Google 一直在权衡是否让它的 Android 开发者从使用 Java 语言来构建应用程序切换到使用 Kotlin 语言。

Google Android Studio 的技术负责人 Jeffrey van Gogh 表示,这个问题在 Google 发出的“Android 应用程序开发应该优先使用 Kotlin”的这份声明中被提出来了。

但是 Android 开发“Kotlin-first”意味着什么?在今年的 Google I/O 大会上,van Gogh 对使用 Java 和 Kotlin 开发的后果作了详细地说明。

“当然,我们在很多方面将继续支持 Java 编程语言,”他在出示下面这张表时说道。

图片来源:谷歌

“但是,如果你看看其他的地方,比如我们的在线培训示例,我们将首先使用 Kotlin 编程语言,然后我们将"尽力而为(best effort)"地使用 Java。当然,还有一些功能,比如多平台项目和 Jetpack Compose UI 工具包,这些功能只会用 Kotlin 语言提供。”

Google 已经在一系列自己的产品中开始使用 Kotlin 语言的这一现实,很好地回答 Android 开发者是否应该从 Java 切换到 Kotlin 这个问题。对于 Google 而言,已经开始使用 Kotlin 的产品包括 Google Drive、Google Home、Nest 和 Android SystemUI。

“请不要把“Kotlin-first”理解成你需要用 Kotlin 来重新改写你所有的 Java 代码。这不是我们希望你做的,”他说道,此外,他还补充道,Google 本身也没有打算用 Kotlin 重写现有的所有软件。

“看看 Android Studio,这是成千上万行的代码。现在只有 10% 的 Android Studio 的特定代码是用 Kotlin 写的。”

“我们采取的做法是,我们只用 Kotlin 来编写新的功能。这是可行的,因为 Kotlin 与 Java 具有很强的互操作性。你可以用 Kotlin 编写单个类,并将其它所有的类交给 Java;或者用 Kotlin 编写 99% 的代码,而将剩余的部分交给 Java。”

他补充说,还需要考虑一些复杂因素,比如说 App 开发所处的阶段,他说显然在项目开始的时候就使用 Kotlin 来实现新功能更加有意义。

他还说,另一个问题是开发团队内部对 Kotlin 到底有多大的热情。

“这取决于你的团队。他们对 Kotlin 语言感兴趣吗?他们对采用它有安全感吗?”他说。

van Gogh 同时指出,采用 Kotlin 也有一些不利因素需要权衡。比如开发人员需要一段时间才能熟悉 Kotlin 的惯用方法,来编写出符合规范的代码。

他说:“Kotlin 语言有很好的特性,更高的生产率和满意度,但你必须考虑学习曲线,人们需要时间来学习 Kotlin 的惯用方法,来编写出符合规范的代码。”

“我们看到大多数人在第一周开始写 Kotin 时,他们实际上是在用 Kotlin 写 Java 代码,他们花了三到六个月的时间才真正开始写符合 Kotlin 习惯的代码。”

他说,由于 Kotlin 编译器通常比使用 Java 的速度慢,软件构建过程也需要更长的时间,不过 Google 正在“努力”提升编译器的速度。

他补充说,当使用 Kotlin 时,生成的 APK(用于在安卓设备上安装应用程序的软件包)也相对较大。

他说,Google 在 Android 系统上有“一大堆正在进行的 Kotlin 工作”,包括 Jetpack Compose 的开发工作、用于 Jetpack 的新 Kotlin 扩展(KTX)API 的开发工作,正在努力提升最新的 1.3.30 版 Kotlin 中的编译器速度的构建工作,以及改进工具、文档和示例代码的开发工作。

原文:https://www.techrepublic.com/article/should-android-devs-switch-from-java-to-kotlin-heres-googles-advice-on-swapping-programming/

本文为 CSDN 翻译,转载请注明来源出处。

【END】

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞ 英特尔将开源进行到底!

☞ 这家公司的 IoT ,你可千万别低估!

Windows 多个系统版本惊现大漏洞,攻击者可随意操作程序!

☞ 普通家庭走出信息学才子,抱病参赛夺世界信奥亚军 | 人物志

☞ 程序员专属小情话,哎呦,不错哦!| 程序员有话说

Rust今天4岁啦, 为什么越来越多的知名项目用Rust来开发?

腾讯面试:一条SQL语句执行得很慢的原因有哪些?

☞ 商汤“变法”:推中小学AI教材,mini自驾车,要打造AI时代的「清明上河图」

☞ 刺激!华为程序员年薪200万 ?真相让人心酸!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

Android 开发究竟是选择 Java 还是 Kotlin?Google 有话说相关推荐

  1. Java vs Kotlin,Android开发人员应该选择哪种语言?

    自 Google 于 2017 年宣布 Kotlin 成为 Google IO 的 Android 开发官方语言以来,想要成为Android开发人员的程序员正陷入两难境地. 在讨论这个问题前,我首先要 ...

  2. 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试

    1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1 ...

  3. 学android开发,入门语言JAVA知识点

    Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学java语言吧. Android开发入门教程  ...

  4. Android开发必须掌握的Java基础知识和常见面试题

    Java基础知识 面向对象特征 基本数据类型及装箱拆箱机制 String StringBuffer StringBuild final finally finalize 区别 static关键字 重写 ...

  5. android java kindle_Kindle和Android开发的比较:Java实现

    在<Kindle和Android开发的比较:硬件>中,我们已经为您介绍了Kindle硬件限制以及Android硬件潜力方面的内容.下面将继续为您介绍. Kindle java实现 为有限资 ...

  6. Android开发究竟该如何学习,跳槽薪资翻倍

    开篇 说一下我大概的情况.渣本毕业,工作已经有快3年了,从高中就开始玩小破站.无论是学习还是日常放松都是在b站.大学主学的软件技术专业,所以,入职bilibili是我大学时期给自己定的小目标. 在学校 ...

  7. Android开发究竟该如何学习,重难点整理

    背景 面是是上海的Android leader岗位,周日一轮面试,自我感觉答的都还不错. 结果收到邮件面试结束了,说什么"你优秀的学识和能力给我们留下了深刻的印象!经过对你综合情况的仔细评估 ...

  8. 近期有面试的必看!Android开发究竟该如何学习,成功入职字节跳动

    开头 眼看着金九银十就快来了,各大厂也开始了新一轮的招聘计划,尤其是腾讯前一段时间爆出了一个大消息: 将正式启动2021届秋季招聘,加大对数字经济和产业互联网人才的挖掘培养. 在本次招聘中,特别面向2 ...

  9. 我靠加班把老员工弄走了,昨天老板又给我画饼,一天天浑浑噩噩,Android开发究竟还有前途吗?

    我们首先来意淫一波 5G时代Android即将崛起,Android将与物联网强强联合,配合上5G信息高速传递的模式,再搭配物联网号召的"万物互通"的旗号,同时各位Android开发 ...

最新文章

  1. UI设计要做什么,UI设计培训都要学什么
  2. 初次使用Eclipse,坑一二
  3. 使用docker安装Mongodb
  4. 《JAVA核心技术》
  5. 简单的机器学习程序_人体动作识别小程序【机器学习 人工智能】
  6. PHP单例模式经典讲解
  7. python中定义一个类、实例化时传入的参数如何传递_用实例分析Python中method的参数传递过程...
  8. StringUtils工具类常用方法汇总1(判空、转换、移除、替换、反转)
  9. [root@py ~]# watch -n 1 ifconfig 求解释
  10. 计算机专业课代码怎么看,专业代码怎么看?
  11. 如何查看谷歌卫星地图每级分辨率的两种方法
  12. SpringMVC工作原理与工作流程
  13. Python指纹识别
  14. 用AI 来一键体验“返老还童”的快乐!马化腾、李彦宏、杨幂都能还原的那种 |儿童节福利...
  15. C语言刷题随记 —— 国际象棋棋盘
  16. GeographicLib安装
  17. 64位系统 system32 和 syswow64
  18. 阶跃信号的matlab,单位阶跃信号的表示-matlab
  19. 群创15.6寸工业屏G156HCE-E01-15.6寸EDP接口
  20. html5可视化编辑器教程,html5可视化编辑器sx html5 vip使用教程(附vip账号)

热门文章

  1. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·009【多表连接查询】
  2. [Ubuntu] 16.04 上使用 pip 安装 mysqlclient
  3. leetcode python3 简单题205. Isomorphic Strings
  4. CMake笔记1 构建基本的项目
  5. Dart入门—开发环境
  6. 中国摊铺机(车辆)市场趋势报告、技术动态创新及市场预测
  7. 海龟绘图两小时上手C语言 - 3 正方形螺旋线
  8. 简单内网映射到公网方法--免费
  9. 面试与工作差距大,程序员从准备到拿Offer全攻略
  10. 独家对话 HybridOS 操作系统掌门人魏永明:“我们的目标是取代物联网中的安卓” | 人物志