Java社区对Kotlin有什么看法? - reddit


从 Kotlin 使用 Java,也许更重要的是从 Java 调用 Kotlin,几乎在每个用例中都是完全无缝的。
语言以相同的模式“思考”,因此您不会试图强迫 Java 成为纯粹的函数式或其他东西。如果我用 Kotlin 编写一个库,其他开发人员可以在 Java 领域使用它,而无需考虑翻译它。
JetBrains 在设计互操作性方面做得非常非常好,特别是当您认为它还支持与 Javascript 的良好互操作性时。
 
Kotlin 在后端很受欢迎。在您可以在 Android 上轻松使用之前,它很容易与 Spring 一起使用。曾经它是 Java 的替代品(就像 Groovy 一样)。
诚然,如今它是 Android 唯一真正的选择,但服务器端 Java 不断改进,因此差距没有那么大。
 
Kotlin 是一种更具表现力的语言,有好有坏。好是因为它可以让你真正按照自己的方式做事,坏是因为两个 Kotlin 开发人员可能正在编写看起来完全不同的代码。
Kotlin 协程与基于反应式编程的 Java 库一起使用,可提供令人印象深刻的后端性能,而无需担心反应式编程,这真的非常棒。
 
Java 正在通过 Project Loom 获得绿色线程,它应该比协程更容易使用。
Loom 的好处是它自动知道要做什么,而 Kotlin 需要suspend修饰符。
 
正如 Brian Goetz 曾经说过的:Kotlin就像 Java,但有渐进式的优点和缺点。
我所在的团队大约在两年前切换到 Kotlin。起初我们遇到了一些问题,但很快就形成了一种共同的风格。我们在代码审查方面有很好的文化,我认为这确实有助于在我们的团队中找到一种共同的风格。
 
我将 Kotlin 视为一种更好的 Java 语言语法。API、JVM、工具、库生态系统,对我来说仍然是 Java。因此,我对 Kotlin/Native、Kotlin/JS 或协程没什么兴趣,尽管我偶尔会使用它们。例如,我宁愿使用 Loom 而不是 Kotlin 协程。我从来没有在Android上使用过它。始终是后端、CLI 和桌面。
我对 Kotlin 最大的不满之一是你不能用它来制作 100% 原生的 Java 库.
当我编写库时,我希望它们实际上是只是依赖于 Kotlin 标准库的 Java 库,因为这是通用语,也是获得使用的最佳方式。出于这个原因,有时我会在 Java 中重写接口,但将 impl 保留在 Kotlin 中。
所以在我看来,Kotlin 对 Java 社区来说绝对是好事。尤其是它让我对 .NET/C# 的兴趣大打折扣。.NET 的论点始终是(对我而言)C# 是一种比 Java 更现代、更方便的语言,但生态系统更小,VM​​ 更差……但你得到了适当的属性等。
不过,Kotlin 超越了 C#,所以现在我明白了什么是更好的语言、最好的 VM、stdlib 和库、最好的可移植性和多供应商 VM 环境。这是一个非常棒的组合,我用它编写的代码可供 Java 用户轻松使用。
 
我喜欢 Kotlin,写起来感觉更自然,并“解决”了 Java 的许多烦恼。但我也发现 Kotlin 更难阅读,这可能有点讽刺。
我在专业和业余项目中每天驾驶 Kotlin 几年后得出的结论。它比 Java 更容易编写,但更难阅读。
编写代码确实比阅读更容易,但是反过来不是,所以我又回到了 Java。
 
Kotlin 也没有解决我在使用 Java 时遇到的任何问题;Kotlin 以牺牲清晰度和可读性为代价来优化编写代码。
 
Kotlin 是新的 Scala。它最终将成为今天的 Scala。只是因为Java最终会“赶上”。
 
我们不需要 kotlin,Java没问题。Kotlin 几乎没有存在的理由。它有一些有趣的特性,但 Java 会做到这一点。这并不是说 kotlin 是“错误的”,但我永远不会使用它。
 
我觉得 kotlin 已经跑到了它希望替代Java的地步,但却失去 jvm 和 jdk 团队为发展语言所付出的关心。例如,kotlin 有 continuations,iirc,但它们与 jvm 中的内容不兼容,这意味着要么现在结束使用,要么半途而废,已经不能利用 jvm 本身中的某些东西。
Kotlin 感觉就像是一种语言,人们更感兴趣的是制作一种适合当时流行关键字的语言,而不是一种语言实际需要的语言。
显然,这只是我的意见,你的可能会有所不同。
我只是没有看到 kotlin 的优势。如果 kotlin 是一种独立的语言,而 Java 不存在,我相信它会很好。但现在我只是看不到好处。他们将 Java 生态系统支离破碎,收效甚微。
 
我已经将几个项目重写为 kotlin,然后返回并将它们重写为 java。可悲的是,这是一种时尚。
 
可以在VSCode等编辑器中使用Kotlin 语言:
https://github.com/fwcd/kotlin-language-server
当然,kotlin-language-server 体验无法与JetBrains  jdtls 相比。