使用Kotlin和Java在Spring Boot中有哪些不同?

9

使用Kotlin和Java开发spring boot有哪些不同?

Kotlin是三种可选语言之一,你可以选择在https://start.spring.io上开始你的应用程序。所以它受到了Spring Boot团队的支持。我用它来开发一些微服务,据我所知最后一切都很顺利,但我想听听其他开发人员的反馈,因为我试图说服我的新团队使用Kotlin开始我们的新微服务。

优点:

  • 空指针安全
  • 更清晰的代码
  • 使用val替代var

缺点:

  • Mockito对Kotlin不友好(我转换为Mockk)
  • 代码覆盖率不是开箱即用的(我们不得不开发自己的插件)
  • Java的速度可能会比Kotlin快

我想在这里提供一些旁观者的角度。我的一个好朋友是Scala的狂热爱好者,我们不能再谈论语言了,至少不是JVM语言,因为他对Scala非常执着。正如我下面所说,我和我的公司选择了Kotlin。我之所以这样说,只是因为我的朋友也是Spring的忠实粉丝。我不知道细节,但他用Spring和Scala构建了很棒的项目。因此,仅仅因为Spring Initializr不支持某种替代JVM语言,并不意味着它不是一个有效的选择。 - CryptoFool
1
需要注意的一件事是 Kotlin 编译器不强制你捕获/声明已检查异常,因此您需要特别注意 @Transactional 方法,因为针对已检查异常 不会 执行回滚。在 Java 中更容易 "记住" 这一点,因为您必须在方法签名中处理它们或声明它们。 - user2340612
2个回答

11
自从Kotlin成为Maven的依赖和插件之后,它变成了一个非常好的、简洁易懂的语言,去除了Java提供的所有语法冗余(相对于语法糖)。
从5.0.0开始,Kotlin在Spring中得到了一流的支持,这意味着它与Java具有相同的代码正确性保障。
Kotlin本身具有大量的互操作功能,可以平滑地集成任何已有的Java库,这意味着你拥有同样的选择自由。
Kotlin的Java互操作性很棒,并不是Jet Brains想到才加入的。因此,Kotlin与Spring很好地配合,特别是Spring Boot,提供了很多网络应用程序的样板功能。
这些是您已经提到的一些要点,但我仍然想说一句。Kotlin有更紧凑的语法,其类型系统通过空安全、密封类和不可变/可变集合区分实现了更强健的代码,这些显著缩短了任何项目的开发时间。

我对你在这里说的任何事情都没有异议。Kotlin非常棒! - CryptoFool
2
我会把这个评论放在这里,因为你提到了JetBrains。Kotlin非常重要的一点是它来自JetBrains。JetBrains的IntelliJ是JVM的开发环境中最好的。Eclipse也不错,甚至有些功能IntelliJ没有,但它只是“另一个人”。像Kotlin一样,IntelliJ也很棒!如果你的主要目标是提高生产力,那么选择任何来自JetBrains的东西都不会错!(PyCharm也是一个很棒的工具)。IntelliJ和Kotlin的组合是一个令人惊叹的1 2打击,如果你的主要目标是提高生产力,那么这个组合是不能被忽视的。 - CryptoFool
谢谢你们两个。我很满意 Kotlin,但我有困难说服我的新团队尝试它。 - Xavier Bouclet

9
主要区别在于:使用Kotlin编程时,你是在Kotlin中编程...而使用Java编程时,你是在Java中编程。Spring利用了一些Kotlin独有的语言特性来简化某些操作,但我认为你不应该仅因为这些额外的好处而选择一种语言。大部分情况下,它们没有区别。Spring很好地支持两种语言。
更新:我想我应该补充一下,Kotlin确实会在整个Spring中引入一些小问题,因为Spring实际上是用Java编写的,并且最初设计是通过Java来使用的。但就像你从Spring和Kotlin中获得的优点一样,这些小的负面影响也不应该决定你选择使用哪种语言。
我认为你应该问的是“我应该使用哪种语言?”而不是考虑Spring。我的公司正在使用Kotlin编写新模块,因为我们认为它比Java更好。但我们有很多遗留的Java代码,我们选择在单个模块中大部分时间不混合使用两种语言,所以我们仍然使用Java进行编码。你必须自己做出决定。根据语言本身和现有的代码库来决定你想要使用哪种语言进行编程,而不是考虑Spring如何与其配合使用。Spring可以很好地与任何一种语言配合使用。

有很多文章和博客在比较这两种语言,列出它们的优缺点。我建议你尽可能多地阅读一切。这里没有“正确”的答案(这也是为什么我知道这个问题会被关闭,因为它是基于观点的)。试试Kotlin吧。嘿,也可以试试Groovy和Scala。亲自体验一下它们的优缺点,然后决定哪种最适合你。

顺便说一句,你将“Java比Kotlin发展更快”列为Kotlin的缺点。我认为风险在另一个方向上。与Kotlin和其他替代语言相比,Java发展速度非常缓慢。这就是为什么你看到它在追赶...最终引入了曾经在替代语言中存在多年的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接