为什么 Java 开发没有普遍使用 kotlin

2022-03-24 14:47:40 +08:00
 Mateverse

我周围的情况是基本没有 java 开发使用 kotlin ,基本都是移动端( Android )在是用,好奇为什么…

18438 次点击
所在节点    程序员
129 条回复
Lemeng
2022-03-25 13:33:14 +08:00
循序渐进循序渐进
Sh4p
2022-03-25 14:09:45 +08:00
坐标: Airwallex
现状: 公司级别使用 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
2022-03-25 14:24:00 +08:00
@echo1937 是我云了,哈哈哈
ZeroDu
2022-03-25 16:07:59 +08:00
楼上很多人说为啥不设计 java 版本。java 的大多项目都是业务相关,java 项目往往依赖非常多,升级版本带来的问题很多,无法确保三方依赖支持。因为 java 项目众多各个库为能广泛应用自然版本选择时不会那么激进,
nicocho
2022-03-25 18:23:20 +08:00
kotlin 是 google 推荐的 android 开发语言, 协程,语法糖什么的是不错,但作为一个老 java,kotlin 可读性不那么舒服
nicevar
2022-03-25 18:34:00 +08:00
@TArysiyehua 没那么夸张,安卓开发不用 Kotlin 的多的去了,甚至有些保守的公司过去很长一段时间不让用 Kotlin ,一个语言而已,真要用,几天就能上手了。
Sh4p
2022-03-25 18:37:47 +08:00
而且易读性这个东西要怎么定义呢?假设让一个完全没见过 JVM 系语言的人来看

@ 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
2022-03-25 18:41:47 +08:00
lombok 现在都用不动,还说 Kotlin ?
Suddoo
2022-03-25 19:22:43 +08:00
老板不好招人,开公司要考虑成本的,手下一帮人等着养家糊口
thtznet
2022-03-25 21:13:43 +08:00
我是 C#小组派来招安各位的,论语法糖和一把梭,C#从来没有输过....我编不下去了。
aureole999
2022-03-25 21:48:31 +08:00
用了 2 年 kotlin 最近回头写了一点 java ,觉得 kotlin 的可空 /不可空变量和扩展还是挺好用的。data 类大部分情况下好用,但不能继承有时候又有点麻烦,不想 lombok 比较灵活
Leviathann
2022-03-25 21:55:20 +08:00
@Sh4p
java 顶多是关于 how 的可读性,写一堆流水账简简单单,但是在关于 what 的可读性方面远不如 kotlin ,也就是表达能力

kotlin 影响可读性的地方主要是作用域和 receiver 容易变,这个就要借助 ide 的类型提示了
BeautifulSoap
2022-03-25 22:21:47 +08:00
看了下公司的手册,我在的公司现在对于新开发的项目,推荐语言和框架早已经是 Go 或 Kotlin 了。这还是个日本公司,挺多公司也并没你们想得那样因循守旧的。
iseki
2022-03-25 22:41:05 +08:00
@yazinnnn 好耶!
ByteCat
2022-03-25 23:53:57 +08:00
我做 Spring Boot 都是 Kotlin + Gradle 那一套,Spring 对 Kt 支持还是挺好的,写多了完全不想用 Java 了 XDDD
haya
2022-03-26 00:54:05 +08:00
kotlin 写写 vert 还行
Bingchunmoli
2022-03-26 03:01:07 +08:00
@Narcissu5 熟悉好用,框架做了支持,不过我还是推荐换新写法有些老版本还是要用 util 的 date
Bingchunmoli
2022-03-26 03:04:09 +08:00
@weiweiwitch 切换技术栈需要成本. 不需要成本就好了
NVDA
2022-03-26 03:06:33 +08:00
很多时候不是“为什么不用”而是“又不是不能用”
Bingchunmoli
2022-03-26 03:07:39 +08:00
@Sh4p 生成也挺多的,lombok 我也不太会用静态参数的处理

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

https://ex.noerr.eu.org/t/842611

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

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

© 2021 V2EX