用kotlin开发android(谷歌放弃java,使用kotlin作为安卓开发第一语言的影响有哪些)
本文目录
谷歌放弃java,使用kotlin作为安卓开发第一语言的影响有哪些
安卓开发程序猿不得不重新学习kotlin,虽然kotlin对java提供了100%的支持,但是毕竟还是有差异,还是要好好的进行一番学习的;这可能是跟我们程序猿来说,最息息相关的了。
kotlin和java开发android哪个好
初级工程师,2周Kotlin经验来分享我的视角:1.无缝的Java互调保证了不会出现什么绕不过的坑正式使用Kotlin之前尝试过Kotlin与DataBinding同用,但是在.kt文件中import DataBinding相关的类会编译报错,最后把所有与DataBinding相关的代码都放到.java中,在.kt中去调用。不了解Kotlin的反射与Java反射的差异,但是问题大概就是出在这里。2.Extension 带来的语法糖,甜过初恋举个栗子,各种system service再也不用强制类型转换了,只需写一个context的extension即可。事实上Anko库已经提供了大量的写好的extension。再也不用为了获取一个简单的service对象需要强制类型转换而换行了。。。我吧一些application wide的东西都存为application的property,让后给context一个extension,以后任何context来获取这些service就是一个简单的读property了。3.Lambda衍生出来的Builder,最碉堡的是Anko库可以用Kotlin像写xml一样写洁面了,还有DSL preview插件帮你。。。这样写出来的洁面不但加载速度快(少了xml解析时间),配置各种view也是很方便的。但是使用lambda也是有坑的,有些以回调为key的方法是不可以使用匿名对象的,否则没法取消。例如蓝牙低功耗扫描时startLeScan(callback: LeScanCallback)stopLeScan(callback: LeScanCallback) 这种,开始和结束是要同一个object的,所以不要使用lambda。其实这个很好理解,lambda很像匿名Runnable,只不过现在是一个获得了一等公民身份的方法。4.更多新一代语言的语法写起来很爽的,不多表5.工具链相对完整有个JetBrains的爹,插件更新紧跟语言版本。各路大神的加持,JakeWharton的好几个库都有Kotlin特别适配版,rx里面都有Kotlin版本了。。(事实上正在用RxKotlin,第一次使用rx)更多还在探索中。。。
Kotlin是否有可能成为Android系统的下一代开发语言
Kotlin Kotlin的「简历」
来自于著名的 IDE IntelliJ IDEA(Android Studio 基于此开发) 软件开发公司 JetBrains(位于东欧捷克)
起源来自 JetBrains 的圣彼得堡团队,名称取自圣彼得堡附近的一个小岛 (Kotlin Island)
一种基于 JVM 的静态类型编程语言
来自知名的工具开发商 JetBrains,也就决定了 Kotlin 的基因中必然包含实用与高效等特征。那我们接下来看一看 Kotlin 的特点,当然这也是我改用 Kotlin 的重要原因。
语法简单,不啰嗦
Kotlin 支持类型推断,没有 Java 那样的啰嗦。
另外用 var 表示变量,val 表示常量更加的简洁
方法也很简单,连 function 都缩写成了 fun,平添了几分双关之意。
类的继承和实现很简单,使用:即可
Kotlin 每个句子都不需要加分号 (;)
空指针安全
空指针(NullPointerException 或 NPE)是我们使用 Java 开发程序中最常见的崩溃了。因为在 Java 中我们不得不写很多防御性的代码,比如这样:
在 Kotlin 中空指针异常得到了很好的解决。
在类型上的处理,即在类型后面加上?,即表示这个变量或参数以及返回值可以为 null,否则不允许为变量参数赋值为 null 或者返回 null
对于一个可能是 null 的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。
如下面的代码就是 Kotlin 实现空指针安全的一个例子,而且相对 Java 实现而言,简直是一行代码搞定的。
支持方法扩展
很多时候,Framework 提供给我们的 API 往往都时比较原子的,调用时需要我们进行组合处理,因为就会产生了一些 Util 类,一个简单的例子,我们想要更快捷的展示 Toast 信息,在 Java 中我们可以这样做。
但是 Kotlin 的实现却让人惊奇,我们只需要重写扩展方法就可以了,比如这个 longToast 方法扩展到所有的 Context 对象中,如果不去追根注意:Kotlin 的方法扩展并不是真正修改了对应的类文件,而是在编译器和 IDE 方面做得处理。使我们看起来像是扩展了方法。
Lambda, 高阶函数,Streams API, 函数式编程支持
所谓的 Lambda 表达式是匿名函数,这使得我们的代码会更加的简单。比如下面的代码就是 lambda 的应用。
所谓的高阶函数就是:
可以接受函数作为参数
也可以返回函数作为结果
举一个接受函数作为参数的例子。在 Android 开发中,我们经常使用 SharedPreference 来存储数据,如果忘记调用 apply 或者 commit 则数据修改不能应用。利用 Kotlin 中的高阶函数的功能,我们能更好的解决这个问题:
当然这上面的例子中我们也同时使用了方法扩展这个特性。
Kotlin 支持了 Streams API 和方法引用,这样函数式编程更加方便。比如下面的代码就是我们结合 Jsoup,来抓取某个 proxy 网站的数据,代码更加简单,实现起来也快速。
字符串模板
无论是 Java 还是 Android 开发,我们都会用到字符串拼接,比如进行日志输出等等。在 Kotlin 中,字符串模板是支持的,我们可以很轻松的完成一个字符串数组的组成:
注意:关于字符串拼接可以参考这篇文章Java细节:字符串的拼接。
与 Java 交互性好
Kotlin 和 Java 都属于基于 JVM 的编程语言。Kotlin 和 Java 的交互性很好,可以说是无缝连接。这表现在:
Kotlin 可以自由的引用 Java 的代码,反之亦然。
Kotlin 可以现有的全部的 Java 框架和库
Java 文件可以很轻松的借助 IntelliJ 的插件转成 kotlin
Kotlin 应用广泛
Kotlin 对 Android 应用开发支持广泛,诸多工具,比如 kotterknife(ButterKnife Kotlin 版),RxKotlin,Anko 等等,当然还有已经存在的很多 Java 的库都是可以使用的。
除此之外,Kotlin 也可以编译成 Javascript。最近使用 Kotlin 写了一段抓取 proxy 的代码,实现起来非常快捷。甚至比纯 JavaScript 实现起来要快很多。
关于性能
Kotlin 的执行效率和 Java 代码的执行效率理论上一致的。有时候 Kotlin 可能会显得高一些,比如 Kotlin 提供了方法的 inline 设置,可以设置某些高频方法进行 inline 操作,减少了运行时的进栈出栈和保存状态的开销。
读到这里,是不是想要尝试一下 Kotlin 呢,它简洁的语法,汇集诸多特性,高效率实现等等,已经在国外风生水起,国外的 Pintereset, Square, Flipboard 等公司已经开始应用到生产中。
关于转向 Kotlin
其实,我在做决定之前(当时 Kotlin 还没有被钦定)也曾有过考虑,是不是选择了 Kotlin 就意味着放弃 Java 呢,冷静下来想一想,其实并不是那么回事,因为 Kotlin 与 Java 语法太相近,以及在 Kotlin 中无时无刻不在和 Java 相关的东西打交道,所以这点顾虑不是问题的。
对于个人的项目来转向 Kotlin,通常不是很难的选择,毕竟 Kotlin 是那么优秀的语言,相信很多人还是愿意尝试并使用这个事半功倍的语言的。
更多文章:
全5阶植物0阳光无冷却版(零阳光无冷却满级植物可叠种是什么)
2024年8月29日 12:15
免费下载腾讯视频最新版(腾讯视频怎么下载电影 腾讯视频下载电影)
2024年7月1日 01:00
瘦客户机是什么意思(电脑垃圾;一个世界性新难题 瘦客户机 是什么意思)
2024年5月2日 06:10
12306客服电话人工服务(铁路12306人工服务电话是多少)
2024年6月14日 10:15
在重庆,有什么治疗胃癌的地方嘛!急盼回答!?i重医怎么查成绩 i重医app查询成绩
2024年5月3日 09:28