如题, 说是可以完美兼容, 不知道有没有实际用过的大哥.
另外, spring 那一套是否可以完全用 kotlin 开发, 如果有一些依赖只有 java 版本呢?
求解, 感谢
1
werls 277 天前
kotlin 就是 Java 的另一种写法 可以直接使用 Java 库,最后执行的时候都会被编译为 Java.class 执行,类似 js 和 ts 的关系
|
2
chendy 277 天前
多年前( 2017-18 )尝试过
优点挺多,比如 data ,比如不区分基本类型和包装类型,比如 null safe ,巴拉巴拉 缺点也有,最明显的就是慢,一样的机器一样的 ide ,java 就顺滑很多,kt 就卡卡的(不知道现在咋样了 另外就是一些思路要转变,比如 null safe ,比如不可变集合 总体来说挺好玩的,但是公司项目除非团队水平够不考虑 |
3
weijancc 277 天前
不太行, 以前试过 kotlin, 在开发期间比较占资源, 当时机器一般, 挺卡的. 另外就是不能直接使用 static, 必须写成 object, 挺别扭; 比较爽的是有 optional 操作符?. , 有效避免空指针.
|
4
zhanlanhuizhang 277 天前
完美支持。
|
5
Melanthius 277 天前 1
兼容性没有问题,kotlin 语法糖很香,代码可以写的很飘。但是现在有 AI 补全这种东西,Java 这种死板好读的代码反而成为优势。
|
6
iamppz 277 天前
Kotlin 编译很慢,正在迁移回 Java
|
7
zed1018 277 天前
我们 11 个服务里。只有 3 个 java ,1 个 nodejs 。剩下的全是 kotlin 。
|
8
wetalk 277 天前
什么 kt 、groovy 、scala 之类的,只要还跑在 Jvm 上,最多在某些领域存在一定优势,完美平替 Java 那是不可能的
|
9
Akitora 277 天前
和 spring 的兼容没问题,最实打实的好处大概就是 null-safety 以及 orm 框架比 java 的更好用,其他语法糖倒是个人感觉可有可无,最大的问题就是开发的时候 IDE 确实比 java 卡得多,不知道 k2 compiler 转正之后可否有改善
|
11
ychost 277 天前
我的 Java + Kotlin + Groovy 混编的服务端项目,兼容性没问题开发效率高很多,IDEA 现在也很丝滑了( M2 的 MBP ),需要注意的就是千万别把 Kotlin 当 Java 写,否则很难受
|
12
YugenFring OP |
13
gongxuanzhang 277 天前
何谈平替, 简直是高配
除了编译慢没缺点,用了 kotlin 就别用 maven 了,换成 gradle |
14
YugenFring OP @wetalk 如何理解呢? 因为说 kotlin 是完美兼容的
|
15
qinxi 277 天前
可以, 我们现在没有 java 代码了, 全部转换到纯 kotlin
|
16
qq135449773 277 天前
Java 消亡是早晚的事情,如果一定要投出来一个 jvm based 的语言能活到未来,我一定只会投 kotlin 。
并且 kotlin 也不止 jvm ,他也有 kotlin native 之类的大杀器,只是现在还不是那么成气候。。 |
17
YugenFring OP @ychost mac 上的 ide 用着相对于 win 确实平滑很多, 主要不知道 win 下是什么体验
|
18
YugenFring OP @Melanthius crud 还可以, java 毕竟训练数据太多了
|
19
YugenFring OP |
20
Narcissu5 277 天前
kotlin 在后端的流行度还是不太够,而且 java 21 之后特别是有了虚拟线程之后 kotlin 的优势不太明显了
|
21
YugenFring OP @qq135449773
java 的势头感觉确实在下降, 只是百足之虫, 想要死掉还是需要很久很久的. 不喜欢用 java 主要就是语言确实不够现代, 就没有兴趣, 虽然想干的都能干, 所以一直想试试 kotlin |
22
liaopen123 277 天前
兼容没啥问题,kotlin 写的可太爽了。
|
23
YugenFring OP @Narcissu5 确实是事实, 主要换到 jdk21, 对于现在的 jdk8 项目, 感觉也算是重构了. 排除团队技术栈的问题, 新项目如果能用 kotlin, 是否会优先选择
|
24
kneo 277 天前 via Android 6
@qq135449773 Java 也在进化,特性越来越多,Kotlin 反而越活越尴尬。
Java 必死 Kotlin 是未来这种话不知道怎么想出来的。哪怕你拆开发也没放在一起这么可笑。 |
25
LPJD 277 天前
不能。Java 的优势在于生态圈,Ctrl+C -> Ctrl + V 。使用 Java 开发十有八九是考虑了开发成本问题。个人开发随意
|
26
kneo 277 天前 via Android
@YugenFring 非安卓项目不考虑 Kotlin 。放五年前还可以尝试。现在没必要。
|
27
YugenFring OP @LPJD 不考虑这些, 主要就是自己写的时候爽点, 如果公司嗯要求 java 也可以切换过去
|
28
tinyfry 277 天前
1. 新人容易滥用 kotlion 的特性。
2. 函数式编程很爽。 3. 项目如果大的话,编译非常慢。 4. 在 debug 的时候一些问题可能调试困难。 5. idea 完美支持。你把 java 复制到 kotlin 中,它都会询问要不要自动帮你转。。 结论,适合技术水平稍微好一些的团队使用,或者安卓团队。我持中性看法。 |
29
xsi640 277 天前
用 kotlin 可以大幅提高开发效率,只是有一定学习成本,关键怎么选看楼主。
|
30
qq135449773 277 天前
@kneo #24 啥时候 lombok 死了再跟我讲这种话也不迟。
|
31
unco020511 277 天前
完全可以,不管是 android 还是后台开发,都可以无缝替换
|
32
nicholasxuu 277 天前
可以,甚至 ide 可以完美直接转换语言。几乎可以理解为繁体和简体中文的区别。
|
33
MoonLin 277 天前
kotlin 对比 java 有个完全无法替代的作用:只要你能引入 kotlin 技术栈,就可以用新的标准库新的语法糖,至于 jdk 是 6 还是 8 还是 11 都无所谓,反正最后会脱糖,这给一些不能升级 jdk (我非常认同)的老项目维护和老 leader 开新项目还用 java8 一个非常舒适的开发环境。理论上说服 leader 引入 kotlin 要比升级 jdk 容易一些。
|
34
cloud107202 277 天前
前 kotlin 重度用户。近两年综合 Java 目前的发展趋势与方向,我是认为在 Android 开发之外的服务端编程里,完全没有需要使用 kotlin 的场景
|
35
kneo 277 天前 via Android
@qq135449773 啥时候 lombok 死了再说 Java 死不死吧。说不定 lombok 都比 kotlin 活得久。
一个东西的生命力不是由你个人的喜好来决定的。因为你不喜欢 lombok 就说 Java 要完蛋,与其说是评论,不如说是诅咒。 |
36
YugenFring OP @xsi640 学习曲线感觉和 swift 应该差不多
|
37
YugenFring OP @cloud107202 请问这里说的趋势是 jdk 的新特性这些吗?
|
38
geekjoehome 277 天前 3
以前怎么样不清楚,目前看平替 java 应该完全没问题。
我目前每天都在 Jetbrains Academy 上学习 Kotlin Core 课程,用了 kotlin 后就完全不想再回去写 Java 、Javascript 、Typescript 了。Kotlin 除了 Syntatic Sugar 外还有很多非常不错的现代化设计理念,感觉该语言的设计是集市面上众多语言的优点于一体(设计前应该是考察过了很多语言的),又利用了 jvm 丰富的库和跨平台特性。语法精炼且极富表达力( concise and expressive ) 根据 kotlin 课程的介绍,该语言设计初衷就是为了改进背负有沉重历史包袱的 java 语言,其设计的第一原则就是保证与 java 的互操作性与兼容性。所以楼主担忧的“如果有一些依赖只有 java 版本呢?” 完全不是问题,kotlin 与 java 互操作 100%兼容。 最新的编译器感觉编译速度得到了显著提升,也没有感觉到很卡( 2018 年买的 AMD 2400G 32G 内存)。相反,我感觉 kotlin 写起来十分丝滑和清爽。 可能由于 kotlin 比较新,迭代比较快,目前市面上也没啥好的第三方学习资料。相比我看过的一些书籍,目前看 Jetbrains Academy 的学习课程是我见过的最棒的(应该不会有谁比官方更懂 Kotlin 了吧)!官网的各项文档也做得相当 nice 。 |
39
kneo 277 天前 via Android
@MoonLin 朋友,你说的 kotlin 优点只是基于现状,也许下一次 kotlin 升级就不支持 java 6 了。这都是使用第三方技术的风险。
那些还在使用旧 jdk 的老项目,根据我的经验,他们不能升级的原因是主要不想动旧代码。咱们要是有使用 kotlin 的魄力也不至于还在用 6 。 |
40
shyangs 277 天前 2
@qq135449773
@kneo Kotlin 自己的官方教學文件一直出現 Java / Java classes. 根本就預設學習者已經會 Java 才來學 Kotlin. 這種情況 Java 怎麼可能比 Kotlin 先死. ( 把 Kotlin 當第一門語言的初學者被迫去學 Java ) 比如 https://kotlinlang.org/docs/arrays.html#primitive-type-arrays 直接出現了 Kotlin Primitive-type array 相當於 Java 的什麼陣列. |
41
russ44 277 天前
前几天看到站里老哥发的 Kotlin 教程中文译版 /t/1023394 之后学习中
|
42
meeop 277 天前
理论上可以,实际上短期内不行
可以是因为 kotlin 可以直接调 java,可以和 java 可逆变换,所以肯定是能当 java 用的 不行是因为有学习成本,特别是其中的协程需要基础库支持,使用协程就不能直接用 java 的很多涉及多线程库了(几乎所有网络,数据类的库),java 又不是不能用,加上 lombok,mybatin 生成器之类的项目降低 java 开发成本,综合来讲用 kotlin 收益大于成本 |
43
fredweili 277 天前
kotlin 用 java 库没什么问题,kotlin 的高级语法多
|
44
TONYXUELI 277 天前
@cloud107202 是的,入手才知道扔无线朱老师都是这个方向
|
45
monkeyWie 277 天前 via Android
可以的,就是编译有点慢
|
46
28Sv0ngQfIE7Yloe 277 天前
|
47
lisongeee 277 天前 3
说一下看起来和 java 无关的问题,kotlin 团队现在主要工作应该是完善 multiplatform
kotlin multiplatform 对我真的非常有用,因为我的一个 Android 项目的某个功能 <https://github.com/gkd-kit/selector> 就是用 kotlin multiplatform 实现的 好处是代码可以直接编译为 JavaScript/Wasm ,这样用户在 浏览器/nodejs 就能直接在线使用这个功能 如果是以前,我得手动实现 JavaScript 端代码,手动维护一个功能的两套代码实现想想都麻烦 |
48
echo1937 277 天前
总有人说 Java 消亡是早晚的事情,这谁都知道啊,问题是多久,五年、十年、十五年?
三种情况,应对的措施完全不同。 |
49
0xCyan 277 天前
之前在做一个谷歌云盘同步的功能,发现官方都没有提供 kotlin 的包
|
50
sun2920989 277 天前
个人偏见还是认为 kotlin 依旧是谷歌和甲骨文博弈下的特殊产物.
另外 ts 的发展势头看起来也一般了. 基于另一套平台之上的语法糖平台.总是有些局限性. |
51
zed1018 277 天前
|
52
vlinx 277 天前
当然,完成可以
|
54
Helsing 277 天前 via iPhone
可以,开发 Android 比 Java 好用多了
编译速度和之前用 Java 没多大区别了 |
55
kenvix 277 天前
Kotlin 唯一的缺点就是由于语言自身的复杂性,编译开销比 Java 高很多,但是加配置就行。
除此外没有任何缺点 |
56
xingchenxf 277 天前
可以。
楼上说的编译器卡之类的问题,我都没遇到过,我猜测差不多的开发机应该都能正常编译。 语法上,基本上是集各家之大成了。 我用过的各种语言:C 、java 、js 、ts 、python 、dart 、lua ,kotlin 应该是最好用的了,体验上只有 ts 和 dart 能和 kotlin 打一打,但也还是不如 kotlin 。 唯一的缺点,就是 kotlin 有时候写起来语法糖太多,有的人写的代码太飘,不太容易看懂。 好在都是基于 jvm ,很容易看到源码,实在不行就编成 class 再反编译成 java ,总是能看懂的。 |
57
lmshl 277 天前
说实话平替 Java 有点过于低估 Kotlin 了
|
58
yongdaimi 277 天前
用了一段时间了,感觉如下:
1. 编译慢; 2. 语法糖多,编码确实更容易, 确实解决了 java 上的一些痛点; 3. 源码阅读困难,尤其在滥用语法糖和高级特性的情况下,感觉读起来好痛苦,对团队中水平参差不齐的程序员是个挑战; 小项目或许会用一用,大型项目不考虑 |
59
yule111222 277 天前
我爱 Kotlin~
支持 Kotlin~ |
60
vanishxiaoma 277 天前
正在使用 kotlin 开发新的后端项目。使用感受写着比 java 爽太多
|
61
MoonLin 277 天前
@kneo #39 kotlin 那边有过承诺,只要 Android 还需要支持 java6 ,他们就会继续支持 java6 ,哪怕三五年后不再支持 java6 了,截止这个版本的前一个版本语法和标准库也比 Java21 要新,三五年后我们真的能用得上 java21 吗?所以你说的第三方风险是不存在的。
而且我已经说了,有些 leader 本身偏保守,我今年还见过 java8 的新项目,对于升级 jdk ,会说现有一些依赖没人维护了,整个链路升级成本高等等,但是引入 kotlin 并不会影响到这些,说服的可能性还大一些,或者你认为可能性是反过来的? |
64
wupher 277 天前
1. 可以
2. 可以,实际上 18 年以来,我主持的后端项目全部使用 Kotlin 了。 |
65
codehz 277 天前
不是完美平替,企业的例子我不知道,mc 模组里,fabric 的模组,无法在 mixin 中使用 kotlin (原因是 kotlin 的标准库会有冲突)
|
66
Rickkkkkkk 277 天前
语法糖太多在工作上总是坏的.
一个逻辑只有一种写法是最好的. |
67
superchijinpeng 277 天前
完美支持,现在所有的平台,Flink Spark 任务之类的全是 kt
|
68
iseki 277 天前 via Android
Kotlin 现在最大的问题一个是语法和标准库特性不够激进,Java 也在更新迭代,另一个是工具链质量比较差,生成的字节码相对糟糕一点。
不过后者好在有 JVM 的 JIT 加持,除了一些边边角角(比如 vararg 展开)并不会产生多少实际影响。 综合考虑 Java 和 Kotlin 现状,我建议可以将大部分业务代码用 Kotlin 编写,在一些明显用 Kotlin 写起来更繁琐的地方,不要犹豫,直接用 Java 写。 会 Kotlin 的开发者熟悉 Java 几乎是必须的。 |
69
iseki 277 天前 via Android
不需要在什么地方用 Java 什么地方用 Kotlin 制定繁琐的细则,如果你的团队能够把 Kotlin 用好,成员自己一定清楚该怎么做。
|
70
mysunshinedreams 277 天前
@YugenFring #12 这个确实,我在小范围内的团队使用过,本子又卡又热,很影响使用体检,而且代码提示大部分时候还一顿一顿的。
|
71
aboutyang 277 天前
单打独斗用 kotlin 。大点的项目用 java 更有利于团队协作和日常维护,还有更好招人。
|
72
xxlsize 277 天前
QQ 也可以平替微信,甚至作为 IM 更好用,但架不住那么社交对象在微信。
平替当然可以,但是要你的领导、同事配合才行,否则自己单玩嘛 |
73
bringyou 277 天前
插句题外话,kotlin 下一代 compiler K2 已经可以在 kotlin 1.9.x 里面主动开启了,并且会随着 kotlin2.0 发布而转正
|
74
dif 277 天前
spring 当然可以纯 kotlin 开发了,你看官网就提供了 java 和 kotlin ,我记得以前还用 scala 写过呢。
|
75
bringyou 277 天前 1
@bringyou #73 刚没说完就直接发布了……
按照 jetbrains 的说法,K2 没有太大的语法变更,主要致力于性能表现上的优化。 在一些测试上甚至可以得到 2 倍的性能提升 &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/ |
76
daileidecaifu 277 天前
没有平替这一说,我觉得还是习惯问题。
|
77
daileidecaifu 277 天前
@Rickkkkkkk 非常认同,特别是多人协同开发,有些语法糖特性被滥用,并不是每个人都会仔细使用。
|
78
Surechun 277 天前
没有平替。kotlin 写起来感觉还是缺少了点东西,上次有个新项目本来也打算全用 kotlin 写,后面还是变成了混着用。kotlin 没有的特性用 Java 来补。不过还是会关注 kotlin 。
|
79
sam384sp4 277 天前 1
对技术和生产力有追求的,比如安卓早用上了。
至于后端的 spring 程序员, 让他们升个 jdk 都跟要了他们的命似的,让他们学一门新语言根本不可能。 |
80
sam384sp4 277 天前
@daileidecaifu kotlin 语法糖多吗, 和 java 比是多, 但和 ts 、c#、python 比还差一大堆。
|
82
Leviathann 277 天前
swift 才称得上集市面上众多语言的优点于一体
kotlin 可以理解 go 化的 scala ,这里的 go 是简陋(对大部分人并不是坏事)、随意( ad-hoc)、编译更快的意思 |
84
yazinnnn0 277 天前
kotlin 除了写 jna wrapper 时体验比写 java 差之外, 其他任意情况基本都是大于等于 java
|
85
windyboy 277 天前
好像没有感觉过 kotlin 在 ide 里慢
编译慢的问题也没留意过 我现在能用 kotlin 的地方肯定不会想去用 java java 有一些历史性的问题,尤其是维护别人的旧代码,kotlin 的感觉是自然顺畅,甚至 java 就应该是这样的感觉 如果你总是考虑先 java 再转 kotlin 应该是很别扭的 代码量少,清晰,维护别人的代码简直了,谁用谁知道 |
86
zhouhu 277 天前
kotlin 能用 arthas 吗,或者在 kotlin 上有替代品吗
|
87
Leviathann 277 天前
另外现在这点特性就嫌容易 abuse ,期待伴随 Kotlin2.0 一起的 context receiver 给你们带来一些小小的 scala 震撼
|
88
lovedebug 277 天前
这就反复在问 typescript 多久替代 javascript
目前的答案是:不会 |
89
betty00 277 天前
虽然但是,kotlin 写起来真舒服,less is more
|
91
me1onsoda 277 天前
kotlin 能带来什么?只是写的舒服的话,那无所谓了,代码补全已经弥补了。要是 kotlin 能比 Java 编译快、启动快、包小、内存占用小,那意义很大。否则我就再激进一点转 rust
|
92
caffeine 277 天前
@xingchenxf 这么麻烦?直接 AI 问一下就行
|
94
nothingistrue 277 天前 via Android
讲一个笑话,讨论一个 Google 做的东西,非 10 亿+用户级别的,能不能好好用。
|
95
wolfan 277 天前
TS 代替掉了 JS 嘛,没有。
|
97
superedlimited 277 天前 via iPhone
上面拿 ts 和 js 类比的,不要搞笑了好吗?不是会写两个字母 t s 就可以乱 fun pee 的
|
99
fkdog 276 天前
当年 groovy 的评价也跟楼上类似,可替代 java 、写的爽,然后就没有然后了。
kotlin 如果没办法像 python 之于机器学习、科学计算,go 之于高并发、云组件一样成为某个杀手级应用/领域的核心,那感觉也就这样,不温不火。 语言框架迭代不要太频繁,单纯可能不想付出太多沉默、试错成本罢了。 |