登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 122|回复: 6

Java 老啦?Kotlin要取代?

[复制链接]

485

主题

489

帖子

8290

安币

手工艺人

发表于 2019-5-9 10:31:36 | 显示全部楼层 |阅读模式
Java是历史。它不能在确保向后兼容性的同时演变成现代语言。但它给了我们最好的JVM生态系统,并导致了许多优秀语言的诞生,比如Groovy、Scala、Clojure、Kotlin等等。


欢迎年纪最小的Kotlin!
Kotlin出生于2011年,但在去年谷歌宣布Kotlin为android的官方开发语言后,它迅速走红。Kotlin从其他JVM语言中借鉴了很多强大的特性。让我们快速了解一下Kotlin可以给Java开发人员带来的好处。
无需再担心NPE
Java程序员在运行时讨厌空指针异常(NPE)。Kotlin提供了最好的支持,以避免在编译时出现空引用。默认情况下,所有对象都不能为空。如果要定义可空类型,必须使用?操作符。当访问可空对象时,编译器强制使用安全调用操作符?. .我可以用埃尔维斯操作员吗?:指定默认值。
无需提供显式类型声明
Kotlin可以自动推断类型,因此不需要显式声明。只需要使用val来定义最终变量,使用var来定义普通变量。注意,只有当声明和赋值出现在相同的语句中时,才能推断类型。
避免复杂的字符串格式化
Kotlin允许使用字符串模板来简化字符串格式。$可以用来引用变量,复杂表达式可以使用${}。
创建简单的POJO无需使用样板代码
Kotlin提供了一个数据类,它定义了只用于保存数据的对象。Kotlin自动为数据类生成equals、hashCode、toString、copy、getter和getter(用于使用var定义的属性)方法。您还可以在数据类上使用对象解构来将对象属性保存到变量中。
可以避免Builder类和冗余的方法重载
Kotlin支持方法的命名参数,因此在大多数情况下不需要创建Builder类。此外,Kotlin还支持默认方法参数,因此您不需要重载方法来传递默认值。
静态初始化集合无需再使用guava库
Kotlin提供了一个简单直接的方法,可以使用listOf、mapOf和setOf方法初始化一行中的集合。映射初始化还支持直观的值语法键。它还支持地图解构,以方便迭代。
创建Singleton不再复杂
Kotlin的对象声明只需要一行代码就可以创建单例对象。
无需使用不必要的局部变量
在Kotlin中,try、when和其他结构是具有返回值的表达式。例如,您可以将try的结果分配给一个变量,而不必创建一个局部变量。同样,when可以用作表达式。什么时候是Java开关,但更强大。
可以避免类强制转换的异常
Kotlin提供了is操作符(相当于Java的instanceOf)来检查对象是否为指定类型。类型转换是使用is运算符自动完成的。这避免了由于类型转换不正确而导致的异常。
同一个对象内的调用序列中,无需再重复类型名
Kotlin提供了这个结构,使反复调用同一个对象的方法变得很容易,因此不必每次都指定变量名。Java通常使用构建器模式和方法链来实现这一点。但是在Kotlin,即使对于非构建类,也更容易。
Kotlin还提供了扩展函数apply,它实现了相同的功能。
Delegation或decorator模式无须再使用样板代码
要使用委托或装饰器模式而不是继承,我们通常使用委托或装饰器模式,但是包装器类必须重复被代理的类的每个方法。Kotlin中的by操作符可以简化委托模式。它将自动实现调用代理类所需的方法。当然,您仍然可以在必要时重载特定的方法。
创建静态函数无需再使用类
Kotlin支持类之外的函数,因此创建静态实用程序函数不需要创建类。
在lambda中修改非final的变量无需再使用hack
Java支持lambda的方式是用匿名类自动替换它,但这样就无法更改lambda中的非最终变量。但是在Kotlin中,你可以直接修改lambda中的非最终变量。
延迟加载不再困难
Kotlin提供了一种非常简单的方法,通过指定lazy关键字来延迟属性的初始化。
不需要完全切换到新语言
Kotlin与Java无缝集成,使与旧Java代码的集成变得容易。您可以继续使用第三方Java库和框架。与Scala不同,Kotlin没有自己的集合库,它只是扩展了JDK的集合。因此,在Java和Kotlin集合类型之间进行转换不需要胶水代码。
代码更紧凑,更易读
Kotlin使用方法名称约定重载许多操作符,以提高代码的可读性。例如,方法plus用于重载+操作符,减去重载-操作符,乘以重载*操作符,div重载/操作符等等。它还支持更多的操作符重载,比如%、+=、+-、++、-等等。
Kotlin使用 .. 运算符定义范围,使代码更紧凑。它还提供了until关键字以去除边界,step操作符以跳过项目。in操作符用来检查范围。还可以通过实现rangeTo和contains方法来重载 .. 和 in 运算符。
扩展现有的JDK类很容易
Kotlin可以以非常简单的方式向现有类添加扩展函数。这是一个功能强大的特性,可以很容易地扩展语言的核心API。
为什么应该使用Kotlin?
可以将生产力提高许多倍:
  • -它是一种静态类型的语言,因此您可以在编译时捕获许多错误;
  • -工具支持是完美的,毕竟是公司编写IDE生成的语言;
  • -由IDE公司JetBrains创建,他们关注开发人员的生产力。
  • -避免Java开发人员的许多日常烦恼。
可以获得许多最佳实践:
  • -所有课程均为期末考试;
  • -不可变的;
  • -通过必需的关键字重载,而不是可选的注释;
  • -不存在必须处理的受控异常;
  • -没有原始类型;
  • -对泛型的支持更简洁。
非JVM的支持:
  • Kotlin也可以编译成JavaScript进行前端开发;
  • Kotlin也可以在其他本地运行时上执行,因此它在没有JVM的情况下运行。
开发者应该转换到Kotlin吗?
Kotlin很不错,但还不完美,距离完美的语言还需要一些实践。它背后是JetBrains和Google,因此可以相信它只会越来越好。
如果你是android开发者,你应该立即使用Kotlin。
如果您是Java开发人员,您还应该考虑其他因素,比如团队成员、公司接受度等等。但即使你不能马上使用它,你也应该看看Kotlin的美,现代语言。
此外,基于ThoughtWorks的技术报告,公司可以尝试在风险可控的项目中使用Kotlin。

317

主题

919

帖子

704

安币

手工艺人

发表于 2019-5-9 10:34:16 | 显示全部楼层
帮帮顶顶!!

9

主题

9548

帖子

1792

安币

Android大神

Rank: 6Rank: 6

发表于 2019-5-9 10:50:04 | 显示全部楼层
帮帮顶顶!!

9

主题

9396

帖子

1821

安币

Android大神

Rank: 6Rank: 6

QQ达人

发表于 2019-5-9 10:50:46 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~

446

主题

1061

帖子

1997

安币

手工艺人

发表于 2019-5-9 10:59:44 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!

2

主题

9404

帖子

2485

安币

Android大神

Rank: 6Rank: 6

发表于 2019-5-9 11:08:32 | 显示全部楼层
帮帮顶顶!!

0

主题

9199

帖子

2075

安币

Android大神

Rank: 6Rank: 6

发表于 2019-5-9 11:20:52 | 显示全部楼层
不错不错,楼主辛苦了。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表