Google 再见 Java_欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记-程序员信息网

技术标签: java  编程语言  google  移动开发  微软  

点击上方“码农突围”,马上关注

这里是码农充电第一站,回复“666”,获取一份专属大礼包

真爱,请设置“星标”或点个“在看”

去年 5 月份的 Google I/O 上,谷歌宣布 Kotlin-first,Kotlin 开始成为 Android 开发者的首选语言,接着谷歌针对 Kotlin 的相关建设不断。

本文简介 Java 迁移到 Kotlin 指南相关

就在今年,上周,谷歌刚刚推出免费的 Kotlin 和 Android 在线课程,教开发者使用 Kotlin 构建 Android 应用。很快,Google Home 团队也现身说法,通过自身经历,展示了 Kotlin 开发的好处。

开始从 Java 迁移到 Kotlin

谷歌建议“由点及面”进行迁移,包括人与代码两个层面:

人的层面,团队内部推举出一位 Kotlin “推广大使”,他需要做到:

  • 了解 Kotlin 并成为专家

  • 制定 Kotlin 开发流程

  • 参与代码审核,确保 Kotlin 开发流程得到顺利贯彻

  • 组建公司/团队内部的学习小组

  • 主动收集内部的问题并与开发者社区反馈探讨

而代码层面,需要做到:

  • 先使用 Kotlin 编写测试(此时项目依然在使用 Java)

  • 使用 Kotlin 编写新代码

  • 将现有代码更新为 Kotlin 代码

在将现有代码更新为 Kotlin 代码时,可以直接使用 Android Studio 提供的 Java 转 Kotlin 工具,只需要在菜单中选择 “Code → Convert Java File to Kotlin File” 即可:

Java 转 Kotlin 工具

另外,Kotlin 的迁移工作没必要一蹴而就,开发者可以按照自己的进度来逐步进行迁移。一个项目中可以同时包含 .java 和 .kt 文件,但同一个文件中不可以既有 Java 也有 Kotlin,开发者也可以在 Kotlin 代码中使用任何 Java 库。

△ Android Studio 的 Lint 检查中也可以打开 Kotlin 互操作检查

在 Kotlin 中调用 Java 时,有几点需要注意

1、将代码标记为 @Nullable 和 @NotNull

2、使用属性前缀(getName(), setName(), isActive())

3、避免使用 Kotlin 中的保留关键字(when、is 等)

最后,谷歌工程师怎么看

作为一门 JVM 语言,一门兼容甚至被认为要取代 Java 的语言,Kotlin 的出场也往往伴随着与 Java 的比较。谷歌甚至推出了从 Java 迁移到 Kotlin 的官方指南。部分 Android 开发者仍在犹豫是否要转到 Kotlin,有一些人已经从 Java 迁移到 Kotlin 又迁回了 Java。在一年前 Dice 网站发布的调查中,85% 的受访者几乎一边倒地选择仍旧使用 Java 来构建 Android 应用程序。

但其实在谷歌工程师看来,并没有必要将二者完全划清界限。Android Studio 技术负责人 Jeffrey van Gogh 就曾讲过,Java 与 Kotlin 具有极高的互操作性,所以两者完全可以共存于同一个项目中。目前如 Google Home 这样的谷歌自家应用,不少都采用这种融合式做法,Kotlin 更多地被用来编写新功能。

那么,再回到 “Kotlin 还是 Java” 这个也许已经令 Android 开发者感到厌烦的问题上,定论显然并不存在,关键是选择最适合的方式。

内容取材整编转自:OSCHINA 社区

oschina.net/news/111189/migrating-from-java-to-kotlin

oschina.net/news/117389/google-home-benefits-from-using-kotlin

---END---
重磅!码农突围-技术交流群已成立
扫码可添加码农突围助手,可申请加入码农突围大群和细分方向群,细分方向已涵盖:Java、Python、机器学习、大数据、人工智能等群。一定要备注:开发方向+地点+学校/公司+昵称(如Java开发+上海+拼夕夕+猴子),根据格式备注,可更快被通过且邀请进群
▲长按加群
推荐阅读•  华为阿里下班时间曝光:所有的光鲜,都有加班的味道•  永远不要在代码中使用「User」这个单词!•  微软苏州集体抵制来自阿里、华为的跳槽者:请停止你的“奋斗逼”行为!网友:看到 955 不加班的公司名单,我酸了•  面试:如何决定使用 HashMap 还是 TreeMap?•  华为天才计划开出201万年薪招应届生,我却在小公司拿20w年薪,差距太TM大了!•  那些还在外包公司干的程序员们,快醒醒吧!最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 BAT 领取,更多内容陆续奉上。如有收获,点个在看,诚挚感谢明天见(。・ω・。)ノ♡
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Ch97CKd/article/details/107872802

智能推荐

重庆交通大学c语言上机试题,重庆交通大学2021硕士招生考试《C语言程序设计》复试大纲..._手抖毛大夫的博客-程序员信息网

考研初试已经结束,如果想要顺利成为一名研究生,那么对于考研复试的重视必不可少。考研复试是考生在通过初试的基础上,对考生业务水平和实际能力的进一步考察。如何了解报考院校的考研复试要求呢?本文中公考研小编整理分享“重庆交通大学2021硕士招生考试《C语言程序设计》复试大纲”,帮助大家及时了解复试新消息、新要求,一起来看~《C语言程序设计》大纲(研究生复试用)一.考核说明1.考试用参考书:《C语言程序设...

python零基础入门教程学习要多久-廖雪峰python教程要学多久-零基础学Python需要多久..._weixin_37988176的博客-程序员信息网

零基础学python大约需要多久看不同的人,不同的学习能和基础。像我通java,vc ,javascript,groovy,vb,c接触过c#,delphi,asp,E语言,用过dreamwaver,fireworks,....等等编辑软因此对老外的软件思想与语言,算是有些领悟,入门python花了一秒钟,那么一秒钟怎么入门,pycharm 动态语言,哦我懂了学python哪个网校教得好?我是0...

SpringCloud学习之运行第一个Eureka程序_霸道流氓气质的博客-程序员信息网

场景关于Eureka1.提供了Eureka服务端与客户端。2.主要用于服务管理。Eureka架构构建第一个应用1.建立服务器端。2.建立服务提供者。3.建立服务调用者。实现建立服务器端打开eclipse,新建Maven Project--create a simple project打开pom.xml,添加依赖<project x...

java中static作用详解_llerer的博客-程序员信息网

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,

数据蒋堂 | Hadoop - 一把杀鸡用的牛刀_数据派THU的博客-程序员信息网

作者:蒋步星来源:数据蒋堂本文共1800字,建议阅读6分钟。通过本文为大家解读为什么Hadoop不适合小集群实现。                     Hadoop是个庞大的重型解决方案,它的设计目标本来就是大规模甚至超大规模的集群,面对的是上百甚至上千个节点,这样就会带来两个问题:自动化管理管任务分配机制:这样规模的集群,显然不大可能针对每个节点提供个性化的管理控制,否则工作量会大到累死人

vsftpd限制用户只能上传不能下载_weixin_30551947的博客-程序员信息网

有时候,项目中有这样的需求;vsftpd只能上传文件不能下载。下面我们就来分享一下个人的经验:例子1:vsftpd本地用户实现可以上传不能下载(即不能读)1、创建用于登陆vsftpd的用户、并赋予其密码:useradd test2、创建vsftpd的共享目录,将其的属主和属组都修改为szl;权限为777 (这里是测试环境):mkdir /mnt/test...

随便推点

2017.06.08_林尧彬的博客-程序员信息网

能够做一些小的应用,挺有意思...下步计划:学习Qt、程序员面试宝典转载于:https://www.cnblogs.com/liuyangofficial/p/6965175.html

使用linux系统下的GBK.gz和UTF-8.gz文件,实现gbk到utf8之间的相互转换_a907482655的博客-程序员信息网

GBK 转 UTF-8 (trans.php) :#!/usr/bin/php<?phpdefine('GBK', '/usr/share/i18n/charmaps/GBK.gz');define('UTF8', '/usr/share/i18n/charmaps/UTF-8.gz');define('INPUT_FILE', 't.txt');de...

pyx文件 生成pyd 文件用于 cython调用_furuit的博客-程序员信息网

faster-rcnn 需要2k个候选框,这很费时间的,所以可以把这部分代码优化,改写为pyx文件,然后就可以快一些了。1安装cython官网上下载的Cython-0.20.1,从控制台上切到cython的路径,运行setup.py就一路编译安装下去了,没遇到其他问题。在网上看到,很多人在安装的时候遇到很多问题,基本上都是找不到c++编译器,具体表现是提示找不到一个叫“vs....ba...

蚂蚁上市后,马云不是最大赢家,竟是她!_CSDN 程序人生的博客-程序员信息网

作者:电商君来源:电商报(ID:kandianshang)中国电商影响力媒体!马云造就人类历史上最大的造富运动!蚂蚁集团要上市了,人类历史上最大的造富运动,就要来了!作为中国互联网独角兽...

2440超详细uboot移植笔记(四)------剪裁uboot_风筝丶的博客-程序员信息网

你好!这里是风筝的博客,欢迎和我一起交流。在make编译之后,我们可以发现生成的.bin二进制文件很大,有五百多k,不利于我们烧写,所以我们可以先对uboot剪裁一下,把不需要的功能去除掉:  a. 在smdk2440.h(路径:include\configs\smdk2440.h)文件上把不需要的uboot功能的宏开关注释掉:#define CONFIG_USB_OHCI...

C/C++笔试题(9)_hanlin1985的博客-程序员信息网

 Intel笔试面试题目  智力题1.每天中午从法国塞纳河畔的勒阿佛有一艘轮船驶往美国纽约,在同一时刻纽约也有一艘轮船驶往勒阿佛。已知横渡一次的时间是7天7夜,轮船匀速航行,在同一航线,轮船近距离可见。  请问今天中午从勒阿佛开出的船会遇到几艘从纽约来的船?  2.巴拿赫病故于1945年8月31日。他的出生年份恰好是他在世时某年年龄的平方,问:他是哪年出生的?  答案:   设他在

推荐文章

热门文章

相关标签