Android 开发者应该从 Java 转到 Kotlin 吗?谷歌告诉你

h4cd
 h4cd
发布于 2019年05月13日
收藏 30

今年 I/O 大会上,谷歌宣布正在采取的下一个重大步骤是 Kotlin-first,Android 开发将越来越多地以 Kotlin 为主,许多新的 Jetpack API 和功能将首先在 Kotlin 中提供。并且当天谷歌就开源了 Jetpack Compose 呼应这一战略。

消息一出来,“Android 开发以后是不是只能用 Kotlin 了”、“Android 开发者应该从 Java 转到 Kotlin 吗”等问题困扰了开发者。对此,谷歌 Android Studio 技术负责人 Jeffrey van Gogh 进行了回应

“我们将在很多方面继续支持 Java 编程语言”,Jeffrey 首先回答了 Android 关于 Java 支持的问题,同时给出了一张 Java 与 Kotlin 支持对照表。

表中可以看到,Kotlin 相比 Java,在 Android 开发中确实获得了更加重要的地位,“比如在线培训、样本,我们首先会在 Kotlin 中支持,Java 中将是‘尽力而为’。同时,有一些功能,如多平台项目和 Jetpack Compose,只会在 Kotlin 中提供。”

Jetpack Compose 是一个非捆绑 UI 工具包,结合了反应式编程模型和 Kotlin 编程语言的简洁性和易用性,旨在简化 UI 开发。

这样来看,很显然在今后一段时间内 Android 开发者并不是只有 Kotlin 一种选择,Java 同样可用。而至于这是否只是一个过渡,则要听听 Jeffrey 是如何回答“是否应该从 Java 迁移到 Kotlin?”这一问题的。

不要把‘Kotlin-first’误解成必须将现有 Java 开发的 Android 使用 Kotlin 重写”,Jeffrey 说到,并补充说明谷歌自家的应用也没有这样做。 

Jeffrey 的意思是 Java 与 Kotlin 具有极高的互操作性,所以两者完全可以共存于同一个项目中。“看看 Android Studio,它有几十万行代码,其中大约有 10% 的 Kotlin 代码。我们所做的只是使用 Kotlin 编写新功能。Kotlin 与 Java 具有很好的互操作性,可以在 Kotlin 中编写单个类,其余部分使用 Java 编写,或者使用 Kotlin 编写 99% 的代码,而剩下的一点点用 Java 来写。”

而具体应该继续使用 Java 还是转到 Kotlin,Jeffrey 表示这需要考虑一些因素,比如团队对于 Kotlin 的兴趣、Kotlin 的学习曲线之陡峭,还有能不能接受 Kotlin 本身相比 Java 在开发 Android 上的弱点,比如软件构建过程需要更长的时间,因为 Kotlin 编译器比通用 Java 编译器要慢,以及 Kotlin 生成的 APK 相对较大。

此外应用开发所处的阶段也需要考虑,Jeffrey 表示新项目使用 Kotlin 编写是更好的选择。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Android 开发者应该从 Java 转到 Kotlin 吗?谷歌告诉你
加载中

精彩评论

简单代码
简单代码
并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。
姓肖名平
姓肖名平

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。
兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。
xiaokek
xiaokek

引用来自“xiaokek”的评论

声明变量把类型放后面 这种反C语言习惯的做法我不喜欢

引用来自“xshrim”的评论

习惯问题, 当初学go的时候还不是很难接受, 现在真香.
go让名称放在第一位,但是我感觉在开发的时候类型才是最重要的1. 当需要定义一个整形变量a。 心里是这样想的:我现在需要一个整形的变量,我要定义它,于是我先写一个int,再思考它的名字 a ,于是就这么写出来了int a 。而不是我写了个变量a,我得给它区分个类型int。2. 在调用一个方法的时候,func(abdfsasdffdg int, bagressdgf string, csdgesredg bool) 那个go函数看的很乱,程序员其实根本就不怎么看参数名字是什么,而只是看需要传入什么类型,注意力只在于int,string,bool这三个,如果如上那么写,反而影响了视线,乱系八糟的。func(int adsfasdfsdaf, string asdfasfasf, bool gwegasgs),这么写我只注意类型,就不受名称影响了。3. IDE自动提示 go本身就是为快而生,定义一个结构变量Rectangle rectangle,当键盘敲下r时候,IDE会自动给出rectangle,直接回车就出来了,反过来就的自己一个字母一个字母敲上去,蛋疼啊4. 至于go给出的解释,当遇到复杂函数时…… 一个项目中能写几个复杂函数,为了去解决这么一点小问题就把优势给牺牲了 Go 语法设计从头到尾透漏着故意的与众不同
大公司的翔都是香的,真是悲哀
阿信sxq
阿信sxq

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。
编写一时爽,维护火葬场
这波天秀
这波天秀

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“阿信sxq”的评论

编写一时爽,维护火葬场
不想学习你就直说,想要啰嗦复杂还不容易,直接写汇编不就完了

最新评论(57

咕咚萌西
咕咚萌西

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“nevercat_oo”的评论

没看人家重点是在说可阅读性吗?怎么开始说起简不简洁了.....

引用来自“姓肖名平”的评论

他开头就说了极简,,,,我眼睛没瞎吧

引用来自“咕咚萌西”的评论

文言文极简可读性高么,这只是在可读性和效率中寻找一个平衡而已,而且@简单代码 只是发表了自己的观点而已,你自己有兴趣看汇编你自己看去别人看懂看不懂你怕什么.

引用来自“姓肖名平”的评论

时代在进步。。。。跟不上步伐迟早被抛弃。。。既然不喜欢。说明没用。没用那你凭什么来可阅读性能差?凭什么?你没资格。。。。看着费劲说明基础不行。不行就好好读书。别到处bb。

引用来自“咕咚萌西”的评论

我以为是在跟人说话,原来我再跟狗说话,对不起我我们不在一个频道.

引用来自“姓肖名平”的评论

哟。。。你这条谁家主人没牵好到处咬人。。。劳资打了疫苗。。谁便咬。。。。不学无术。。。自己垃圾还怪别人的东西不好。。。
抱歉本人把狗语翻译机关了听不懂你在说什么.
姓肖名平
姓肖名平

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“nevercat_oo”的评论

没看人家重点是在说可阅读性吗?怎么开始说起简不简洁了.....

引用来自“姓肖名平”的评论

他开头就说了极简,,,,我眼睛没瞎吧

引用来自“咕咚萌西”的评论

文言文极简可读性高么,这只是在可读性和效率中寻找一个平衡而已,而且@简单代码 只是发表了自己的观点而已,你自己有兴趣看汇编你自己看去别人看懂看不懂你怕什么.

引用来自“姓肖名平”的评论

时代在进步。。。。跟不上步伐迟早被抛弃。。。既然不喜欢。说明没用。没用那你凭什么来可阅读性能差?凭什么?你没资格。。。。看着费劲说明基础不行。不行就好好读书。别到处bb。

引用来自“咕咚萌西”的评论

我以为是在跟人说话,原来我再跟狗说话,对不起我我们不在一个频道.
哟。。。你这条谁家主人没牵好到处咬人。。。劳资打了疫苗。。谁便咬。。。。不学无术。。。自己垃圾还怪别人的东西不好。。。
咕咚萌西
咕咚萌西

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“nevercat_oo”的评论

没看人家重点是在说可阅读性吗?怎么开始说起简不简洁了.....

引用来自“姓肖名平”的评论

他开头就说了极简,,,,我眼睛没瞎吧

引用来自“咕咚萌西”的评论

文言文极简可读性高么,这只是在可读性和效率中寻找一个平衡而已,而且@简单代码 只是发表了自己的观点而已,你自己有兴趣看汇编你自己看去别人看懂看不懂你怕什么.

引用来自“姓肖名平”的评论

时代在进步。。。。跟不上步伐迟早被抛弃。。。既然不喜欢。说明没用。没用那你凭什么来可阅读性能差?凭什么?你没资格。。。。看着费劲说明基础不行。不行就好好读书。别到处bb。
我以为是在跟人说话,原来我再跟狗说话,对不起我我们不在一个频道.
姓肖名平
姓肖名平

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“nevercat_oo”的评论

没看人家重点是在说可阅读性吗?怎么开始说起简不简洁了.....

引用来自“姓肖名平”的评论

他开头就说了极简,,,,我眼睛没瞎吧

引用来自“咕咚萌西”的评论

文言文极简可读性高么,这只是在可读性和效率中寻找一个平衡而已,而且@简单代码 只是发表了自己的观点而已,你自己有兴趣看汇编你自己看去别人看懂看不懂你怕什么.
时代在进步。。。。跟不上步伐迟早被抛弃。。。既然不喜欢。说明没用。没用那你凭什么来可阅读性能差?凭什么?你没资格。。。。看着费劲说明基础不行。不行就好好读书。别到处bb。
咕咚萌西
咕咚萌西

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“nevercat_oo”的评论

没看人家重点是在说可阅读性吗?怎么开始说起简不简洁了.....

引用来自“姓肖名平”的评论

他开头就说了极简,,,,我眼睛没瞎吧
文言文极简可读性高么,这只是在可读性和效率中寻找一个平衡而已,而且@简单代码 只是发表了自己的观点而已,你自己有兴趣看汇编你自己看去别人看懂看不懂你怕什么.
姓肖名平
姓肖名平

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“咕咚萌西”的评论

兄弟我们厂要一个抬杠的,我看你挺合适的要不考虑下.
,,,,,,,,,,良心不痛?
姓肖名平
姓肖名平

引用来自“简单代码”的评论

并不喜欢那种极简表达式,虽然敲代码时间少了,可阅读更费时间了。

引用来自“姓肖名平”的评论

兄弟。要不看二进制或者汇编吧。这就不是极简。就怕你看不懂。。

引用来自“nevercat_oo”的评论

没看人家重点是在说可阅读性吗?怎么开始说起简不简洁了.....
他开头就说了极简,,,,我眼睛没瞎吧
x
xshrim

引用来自“xiaokek”的评论

声明变量把类型放后面 这种反C语言习惯的做法我不喜欢

引用来自“xshrim”的评论

习惯问题, 当初学go的时候还不是很难接受, 现在真香.

引用来自“xiaokek”的评论

go让名称放在第一位,但是我感觉在开发的时候类型才是最重要的1. 当需要定义一个整形变量a。 心里是这样想的:我现在需要一个整形的变量,我要定义它,于是我先写一个int,再思考它的名字 a ,于是就这么写出来了int a 。而不是我写了个变量a,我得给它区分个类型int。2. 在调用一个方法的时候,func(abdfsasdffdg int, bagressdgf string, csdgesredg bool) 那个go函数看的很乱,程序员其实根本就不怎么看参数名字是什么,而只是看需要传入什么类型,注意力只在于int,string,bool这三个,如果如上那么写,反而影响了视线,乱系八糟的。func(int adsfasdfsdaf, string asdfasfasf, bool gwegasgs),这么写我只注意类型,就不受名称影响了。3. IDE自动提示 go本身就是为快而生,定义一个结构变量Rectangle rectangle,当键盘敲下r时候,IDE会自动给出rectangle,直接回车就出来了,反过来就的自己一个字母一个字母敲上去,蛋疼啊4. 至于go给出的解释,当遇到复杂函数时…… 一个项目中能写几个复杂函数,为了去解决这么一点小问题就把优势给牺牲了 Go 语法设计从头到尾透漏着故意的与众不同
大公司的翔都是香的,真是悲哀
别跟我扯这些. 现在一堆语言都是类型后置. 还有一堆语言语法各种跟C不同套路, 各有各的道理, 我都能接受, 没必要在一个极其简单的语法规范上较劲. 大多数语法仅仅是多写几行就能习惯的事, 与其较劲, 不如动动手.
douk
douk
#🌅此处输入软件################💛###############
贾一饼

引用来自“xiaokek”的评论

声明变量把类型放后面 这种反C语言习惯的做法我不喜欢

引用来自“xshrim”的评论

习惯问题, 当初学go的时候还不是很难接受, 现在真香.

引用来自“xiaokek”的评论

go让名称放在第一位,但是我感觉在开发的时候类型才是最重要的1. 当需要定义一个整形变量a。 心里是这样想的:我现在需要一个整形的变量,我要定义它,于是我先写一个int,再思考它的名字 a ,于是就这么写出来了int a 。而不是我写了个变量a,我得给它区分个类型int。2. 在调用一个方法的时候,func(abdfsasdffdg int, bagressdgf string, csdgesredg bool) 那个go函数看的很乱,程序员其实根本就不怎么看参数名字是什么,而只是看需要传入什么类型,注意力只在于int,string,bool这三个,如果如上那么写,反而影响了视线,乱系八糟的。func(int adsfasdfsdaf, string asdfasfasf, bool gwegasgs),这么写我只注意类型,就不受名称影响了。3. IDE自动提示 go本身就是为快而生,定义一个结构变量Rectangle rectangle,当键盘敲下r时候,IDE会自动给出rectangle,直接回车就出来了,反过来就的自己一个字母一个字母敲上去,蛋疼啊4. 至于go给出的解释,当遇到复杂函数时…… 一个项目中能写几个复杂函数,为了去解决这么一点小问题就把优势给牺牲了 Go 语法设计从头到尾透漏着故意的与众不同
大公司的翔都是香的,真是悲哀
@xiaokek go还与众不同,逗我吧,09年的语言一骨子上世纪风格,可能因为是受c影响太大,现代语言都是类型后置的,你倒是可以吐槽下语言集大成者rust语法,毕竟rust的特性都有paper为其背书
返回顶部
顶部