kotlin 可以完美平替 Java 吗?

2024 年 3 月 20 日
 YugenFring

如题, 说是可以完美兼容, 不知道有没有实际用过的大哥.

另外, spring 那一套是否可以完全用 kotlin 开发, 如果有一些依赖只有 java 版本呢?

求解, 感谢

24110 次点击
所在节点    程序员
110 条回复
MoonLin
2024 年 3 月 20 日
@kneo #39 kotlin 那边有过承诺,只要 Android 还需要支持 java6 ,他们就会继续支持 java6 ,哪怕三五年后不再支持 java6 了,截止这个版本的前一个版本语法和标准库也比 Java21 要新,三五年后我们真的能用得上 java21 吗?所以你说的第三方风险是不存在的。
而且我已经说了,有些 leader 本身偏保守,我今年还见过 java8 的新项目,对于升级 jdk ,会说现有一些依赖没人维护了,整个链路升级成本高等等,但是引入 kotlin 并不会影响到这些,说服的可能性还大一些,或者你认为可能性是反过来的?
cvooc
2024 年 3 月 20 日
@LPJD kotlin 和 java 是完美平替, 可以互相引用, 你可以在 kt 里直接引入 java 文件, 也可以反过来, 不影响生态使用
weijancc
2024 年 3 月 20 日
@pdog18 我看你说的 top level, 直接回退成面向过程了😴. 我之前就想着用一个工具类蕴含静态工具方法, 方法就只有 object.
wupher
2024 年 3 月 20 日
1. 可以
2. 可以,实际上 18 年以来,我主持的后端项目全部使用 Kotlin 了。
codehz
2024 年 3 月 20 日
不是完美平替,企业的例子我不知道,mc 模组里,fabric 的模组,无法在 mixin 中使用 kotlin (原因是 kotlin 的标准库会有冲突)
Rickkkkkkk
2024 年 3 月 20 日
语法糖太多在工作上总是坏的.

一个逻辑只有一种写法是最好的.
cutiechi
2024 年 3 月 20 日
完美支持,现在所有的平台,Flink Spark 任务之类的全是 kt
iseki
2024 年 3 月 20 日
Kotlin 现在最大的问题一个是语法和标准库特性不够激进,Java 也在更新迭代,另一个是工具链质量比较差,生成的字节码相对糟糕一点。
不过后者好在有 JVM 的 JIT 加持,除了一些边边角角(比如 vararg 展开)并不会产生多少实际影响。
综合考虑 Java 和 Kotlin 现状,我建议可以将大部分业务代码用 Kotlin 编写,在一些明显用 Kotlin 写起来更繁琐的地方,不要犹豫,直接用 Java 写。
会 Kotlin 的开发者熟悉 Java 几乎是必须的。
iseki
2024 年 3 月 20 日
不需要在什么地方用 Java 什么地方用 Kotlin 制定繁琐的细则,如果你的团队能够把 Kotlin 用好,成员自己一定清楚该怎么做。
mysunshinedreams
2024 年 3 月 20 日
@YugenFring #12 这个确实,我在小范围内的团队使用过,本子又卡又热,很影响使用体检,而且代码提示大部分时候还一顿一顿的。
aboutyang
2024 年 3 月 20 日
单打独斗用 kotlin 。大点的项目用 java 更有利于团队协作和日常维护,还有更好招人。
xxlsize
2024 年 3 月 20 日
QQ 也可以平替微信,甚至作为 IM 更好用,但架不住那么社交对象在微信。
平替当然可以,但是要你的领导、同事配合才行,否则自己单玩嘛
bringyou
2024 年 3 月 20 日
插句题外话,kotlin 下一代 compiler K2 已经可以在 kotlin 1.9.x 里面主动开启了,并且会随着 kotlin2.0 发布而转正
dif
2024 年 3 月 20 日
spring 当然可以纯 kotlin 开发了,你看官网就提供了 java 和 kotlin ,我记得以前还用 scala 写过呢。
bringyou
2024 年 3 月 20 日
@bringyou #73 刚没说完就直接发布了……
按照 jetbrains 的说法,K2 没有太大的语法变更,主要致力于性能表现上的优化。
在一些测试上甚至可以得到 2 倍的性能提升
<amp-youtube data-videoid="QGtB--ABiNM" layout="responsive" width="480" height="270"></amp-youtube>&t=233s

https://blog.jetbrains.com/kotlin/2023/02/k2-kotlin-2-0/

https://blog.jetbrains.com/kotlin/2021/10/the-road-to-the-k2-compiler/
daileidecaifu
2024 年 3 月 20 日
没有平替这一说,我觉得还是习惯问题。
daileidecaifu
2024 年 3 月 20 日
@Rickkkkkkk 非常认同,特别是多人协同开发,有些语法糖特性被滥用,并不是每个人都会仔细使用。
Surechun
2024 年 3 月 20 日
没有平替。kotlin 写起来感觉还是缺少了点东西,上次有个新项目本来也打算全用 kotlin 写,后面还是变成了混着用。kotlin 没有的特性用 Java 来补。不过还是会关注 kotlin 。
sam384sp4
2024 年 3 月 20 日
对技术和生产力有追求的,比如安卓早用上了。
至于后端的 spring 程序员, 让他们升个 jdk 都跟要了他们的命似的,让他们学一门新语言根本不可能。
sam384sp4
2024 年 3 月 20 日
@daileidecaifu kotlin 语法糖多吗, 和 java 比是多, 但和 ts 、c#、python 比还差一大堆。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1025262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX