为什么 Java 开发没有普遍使用 kotlin
source link: https://www.v2ex.com/t/842611
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
我周围的情况是基本没有 java 开发使用 kotlin ,基本都是移动端( Android )在是用,好奇为什么…
第 1 条附言 · 1 天前
- 希望大家友好讨论
- 用kotlin不一定代表所有代码都需要切换到kt,我只是个人感觉kt里有很多特性很省事,当然代码易读性确实不如java
第 2 条附言 · 23 小时 51 分钟前
zxCoder 1 天前
nicevar 1 天前
debuggeeker 1 天前
ciki 1 天前
witcherhope 1 天前
olaloong 1 天前 4
后端有换 Kotlin 的功夫不如提升一下 Java 版本
changdy 1 天前 1
lambda 功能真的齐全?
为什么已经实现了 Comparable 还不能用 大于小于符号 ?
不否认 java 生态圈比较齐全...但是 真心感觉 java 写起来啰嗦...
Huelse 1 天前 4
yazinnnn 1 天前
再者,大家都是 spring boy ,而 kotlin 对于 spring 来说又没有明显增强的特性。reactor coroutine 算一个吧,但是你见过用 webflux 和 r2dbc 的人吗?
leighton 1 天前 via iPhone
haython 1 天前 2
yazinnnn 1 天前 1
hidemyself 1 天前
nothingistrue 1 天前
还有另一方面,Java 太大了,Android 部分,和 Web 后端部分,只是最流行的(或者说搜索引擎上搜索最多的),但可能连 Java 总生态的 1/3 范围都没占到。(比如说,Mysql 数据库、Oracle 数据库中的 Java 部分、Hadoop 、Storm ,这些都是 Java 开发的,即没有用 kotlin 也没有用 spring 。)这直接导致除了基本 JDK ,很难有框架能一统天下。就是 JDK ,因为 JCP 基本上被 Oracle 独家控制了,也快分裂成 JDK-current 跟 JDK8 两套了。
whyrookie 1 天前
fredli 1 天前
az467 1 天前
Goooler 1 天前
Leviathann 1 天前
@Mateverse kotlin 必须 inlay hint 全开,面向 ide 编程
@witcherhope 某种特性的易用程度和使用频率强相关,java 一样可以做某种属性的懒加载或者委托,但是我很少使用,kotlin 一个关键字就行所以用的很多,体验完全不一样
Bingchunmoli 1 天前 via Android
kassadin 1 天前
Web 部分 “Java 又不是不能用”,Spring 支持 kotlin 也没强推
Android 端虽不是强推,但协程、Compose 的引入基本也算强推了,Java 已经沦为“真不能用”了
Narcissu5 1 天前
wangtian2020 1 天前
kkocdko 1 天前 3
MoonWalker 1 天前
xuanbg 1 天前 1
zmal 1 天前
以前我也怒喷过 Java 在语法方面的不思进取,后来看了看 JDK 的更新,模块化、G1 、ZGC ,工程方面的大动作真的不含糊,相比之下语法糖那点真不是啥大事。
再后来用了用 scala ,语法糖见缝插针,多到吐血,滥用到 IDE 都不知道你的代码对不对。
个人认为 JDK17 已经是比较完美的状态,该有的差不多都有。
打败 java 的不会是另一种 jvm 语言。
ssynhtn 1 天前 via Android
mosliu 1 天前
花点钱使用 idea 在加上 coplilot
现在写代码真的很简单了。
无所谓 kotlin 代理的那点方便与提升。
2NUT 1 天前
Cbdy 1 天前
janus77 1 天前
安卓的话有谷歌在强推,新的安卓轮子都是 kt 写的
imtianx 1 天前
changdy 1 天前
@Bingchunmoli java 的模板引擎 比这 kotlin 真的不能算数..
真正的问题 我觉得 @Cbdy 说的很对...高版本的 java 推广都成问题... kotlin 的推广更难..
dwlovelife 1 天前
Roojay 1 天前 via Android
dcsuibian 1 天前
iRiven 1 天前
dcsuibian 1 天前 1
1 、新语言的语法糖和旧语言的历史包袱,会在新新语言和新语言之间再次出现。
2 、Java 本身设计比较优秀,并没有什么明显的缺陷。仍然好用。
3 、即使很像,说到底仍然是另一个语言。换语言成本很大。
4 、Java 语言本身也在进化。很多人吐槽 Java8 ,但如果你是老板,团队换新语言和旧语言的新版本之前挑一个,你选哪个呢?
cweijan 1 天前
searene 1 天前
如果个人项目的话,我觉得 Kotlin 就很合适了
roundgis 1 天前 via Android
sagaxu 1 天前 via Android
nicegoing 1 天前
鱼与熊掌不可兼得,要好看,本来 kotlin 几下搞定的,就得啰啰嗦嗦的写好多。
bk201 1 天前 1
kingjpa 1 天前
我还用 1.8 呢, 这都多少年了
wupher 1 天前
至于公司那帮老古董,他们连 JDK8 都不愿意升级,还提啥 Kotlin 。
Jooooooooo 1 天前
jackmod 1 天前
msg7086 1 天前
hingbong 1 天前 via Android
lixm 1 天前
fueen 1 天前
zed1018 1 天前
weiweiwitch 1 天前 via Android
dbpe 1 天前
muyiluop 1 天前
yazinnnn 1 天前 1
chendy 1 天前
安卓有谷歌在推,其他地方并没有
日常项目,开发人员连 java 特性都摸不明白,哪有胆量换 kt
neptuno 1 天前
zmal 1 天前
“加功能”总是很简单,“该不该加”、“要不要加”、“怎样更好的加”背后的东西才是需要思考的。
Java 再差也不可能搞出高版本不兼容低版本这种事来。这是包袱,也是责任。
zhazi 1 天前
如果你原本的 java 代码都写不好,凭什么让别人相信你换一门语言就能写好。并且为你的想法去买单
zmal 1 天前
TArysiyehua 23 小时 50 分钟前
大部分人能省事就省事,学一个新的东西难道不费精力吗?
那为啥 Android 很多人用。废话,你不会 kotlin 你找不到工作。我做 Java 后端的,不会 Kotlin 会找不到工作吗?你再问问现在的 android 开发,面试不会 kotlin ,不会协程,有几个能找到工作的?
那为啥 Android 不会 kotlin 找不着工作呢?根据原因是谷歌一直在推 kotlin ,导致国内不得不学,你不学。团队就不好写 KPI ,有了 KPI ,就导致招人的时候要求会 Kotlin ,招人要求会,从而导致了 Anrdoid 开发者不得不去学
zsyubo393 23 小时 30 分钟前
yazinnnn 23 小时 10 分钟前
差不多得了 v2 阿 q😣
Lemeng 21 小时 3 分钟前
Sh4p 20 小时 26 分钟前 4
现状: 公司级别使用 Kotlin ,Kotlin 和 Java legacy 比例差不多 95 : 5
我了解的同情况的公司:Afterpay (公司级别已普及), Lego (公司级别在转型), Google (部分组)
Kotlin 写后端到底好不好用:
Springboot 2.3.9, 语言层面只遇到过一个坑:Kotlin 自己的 Collection 是有 Immutable 和 Mutable 两种的,而 Java 都是 Mutable 的,至少这个版本对 Kotlin Immutable Collection 支持有问题。所以在 wire bean 的时候要注意下。
别的没遇到过任何语言层面的问题,支持得相当完美。
我理解的阻力:
1. 面向简历编程。在这个公司不干了,去下一家未必能用 Kotlin 。
我觉得这个问题无解,尤其在国内。
2. MVC vs Webflux, JDBC vs R2DBC 。
这其实跟 Kotlin 够不够好没啥关系。我们组自己的服务已经彻底 reactive 化了,没有这方面烦恼。别的组也不是都用这些,但照样可以用 Kotlin 。
3. 觉得语法糖用不上,怕编程风格不统一。
前者的话,我个人觉得都不用说 null safety (毕竟这个东西和 Java 的互兼容性是好是坏是值得讨论的,不是所有 lib 都会给你好好加 @Nullable ),constructor 的优化和 apply 这两个东西已经足够让我忘记 Java 了。
后者的话,如果你们组 /公司的 CR 流程和风气够好,我觉得互相理解、统一、寻找 better practice 是必经之路,也跟语言没什么关系。
MoonWalker 20 小时 12 分钟前
ZeroDu 18 小时 28 分钟前
nicocho 16 小时 13 分钟前
nicevar 16 小时 2 分钟前
Sh4p 15 小时 58 分钟前
@ Data
@ AllArgsConstructor
@ NoArgsConstructor
public class RandomStuff {
private String a = "a";
private String b = "b";
}
class RandomStuff(
val a: String = "a",
val b: String = "b",
)
1. 应不应该强逼着语言新手理解 annotation ?
2. 如果不用 lombok ,第一个东西你手写会变多长?
3. 手写原生 constructor ,RandomStuff(String a),我怎么让这个东西只接受一个参数,但能选择赋值给 a or b ?
4. 读惯了与好读是等价的吗?
cheng6563 15 小时 54 分钟前
Suddoo 15 小时 13 分钟前 via iPhone
thtznet 13 小时 22 分钟前
aureole999 12 小时 48 分钟前 via Android
Leviathann 12 小时 41 分钟前
java 顶多是关于 how 的可读性,写一堆流水账简简单单,但是在关于 what 的可读性方面远不如 kotlin ,也就是表达能力
kotlin 影响可读性的地方主要是作用域和 receiver 容易变,这个就要借助 ide 的类型提示了
BeautifulSoap 12 小时 14 分钟前
ByteCat 10 小时 42 分钟前
haya 9 小时 42 分钟前
Bingchunmoli 7 小时 35 分钟前 via Android
Bingchunmoli 7 小时 32 分钟前 via Android
Mirage09 7 小时 30 分钟前 via iPhone
Bingchunmoli 7 小时 28 分钟前 via Android
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK