Java 后端有用 Kotlin 的吗?

2024-04-11 06:56:26 +08:00
 nnegier

Kotlin 目前有个很明显的优点,就是实现了协程(用户态线程),可以减少资源的开销

5410 次点击
所在节点    程序员
50 条回复
street000
2024-04-11 07:53:45 +08:00
以前到处用 kotlin ,现在能用 ts 就用 ts ,kotlin 几乎没有什么缺点但是背靠 gradle ,进入前端领域后我是越来越不能接受 gradle 了。
chendy
2024-04-11 08:03:44 +08:00
肯定有,但是不多
90%以上的业务系统不在乎那点性能,而且更在乎换语言之后的风险和成本提高
macaodoll
2024-04-11 08:16:10 +08:00
尝试过
xwwsxp
2024-04-11 08:24:26 +08:00
你这过时了,JDK 21 就实现了所谓的协程,这个有点对于现在的 Java 而言不算什么;不过,万恶的 NPE 处理确实还是痛点,虽然有 Optional 来规避问题。
Rehtt
2024-04-11 08:24:27 +08:00
@chendy Kotlin 不是和兼容 java 吗
Rehtt
2024-04-11 08:25:40 +08:00
@xwwsxp 大部分还是 JDK8 🤣
xwwsxp
2024-04-11 08:28:27 +08:00
@Rehtt 怎么可能,我们早就是 JDK 17 了
Dragonphy
2024-04-11 08:28:30 +08:00
可以先试试新增一个 src/main/kotlin 直接写
zed1018
2024-04-11 08:44:47 +08:00
我们。目的是为了 Safe Call 和 val
liumao
2024-04-11 08:49:37 +08:00
@xwwsxp #7 确实很多项目还是 jdk8
weiweiwitch
2024-04-11 08:51:02 +08:00
这语言挺好用的呀。
我们用了好多年了,上线了好几个后端项目了。没遇到啥语言上的问题。
这语言对比其他 JVM 语言,变化算少的了。如果不用一些复杂的语法,纯粹可以当做简化版的 Java 用。
特别是 val 变量声明,用了这个,几乎杜绝了我们项目里所有 NPE 问题。
协程的话,没有 go 和 C#的好用,但也帮助我们解决了某些特殊需求。
dlmy
2024-04-11 08:57:49 +08:00
@xwwsxp #7 现实就是公司内 90% 的项目还是使用 JDK 8 ,压根就没有办法升级,一定要升级的话,内部自研的中间件就得全部跟着一起升,以此来完成框架适配跟特性兼容,风险跟成本都很大
layxy
2024-04-11 09:07:59 +08:00
虽然和 java 兼容,但是协作的时候强制同事学习 Kotlin 不太友好,而且领导也不会同意你随意变更技术栈,个人项目或者小团队协商好倒是可以上
changhe626
2024-04-11 09:08:01 +08:00
我们公司大规模的都是 kotlin+springboot 的模式,很少 java+springboot ,写了这么久的 kotlin ,感觉 kotlin 并没有比 java 好多少。。。。,都是业务语言而已,只是一些非空判断?,优点用,其他的感觉没啥大的区别,语法糖没有那么重要。
TWorldIsNButThis
2024-04-11 09:11:11 +08:00
用 但是没用协程

用 reactive 的框架才能用上协程,比如 vertx ktor

spring 底层就写死了 thread per request
kneo
2024-04-11 09:11:25 +08:00
@weiweiwitch 不同意。Kotlin 远比 Java 复杂,和“精简版 Java”八竿子打不着。只能说你用的是简化版的 Kotlin 。
cbdyzj
2024-04-11 09:15:09 +08:00
在升级 Java 21 (从 11 升),老代码基本没咋动
kneo
2024-04-11 09:15:19 +08:00
@weiweiwitch 没有 NPE 是因为语言/编译器层面实现的 null safety ,不是因为 val ( immutability )。
boris1993Jr
2024-04-11 09:25:10 +08:00

StubHub 被卖掉之前很多新的后端都是用 Kotlin+SpringBoot+WebFlux 写的

@street000 #1 并不强绑定 gradle 啊,我们当时就是用 maven 构建
kneo
2024-04-11 09:27:02 +08:00
@xwwsxp java 21 实现的不叫协程( coroutine )。现在好像叫虚拟线程( virtual thread )的比较多。也有别的叫法,但是不能叫做“协程”。协程的“协”一般要求使用者明确定义把当前线程的使用权交给其它协程的时机( suspend )。

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

https://yangjunhui.monster/t/1031480

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

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

© 2021 V2EX