我周围的情况是基本没有 java 开发使用 kotlin ,基本都是移动端( Android )在是用,好奇为什么…
1
zxCoder 2022-03-24 14:54:46 +08:00
(又不是不能用
|
2
nicevar 2022-03-24 14:55:19 +08:00
Kotlin 相对 Java ,优势基本上在语法上,Java 有 IDE Buf 加持的情况下,用起来不比 Kotlin 弱,我就是做安卓用 Kotlin ,后端依然用 Java ,没必要折腾,现在我甚至有点后悔把安卓一些封装的库转为 Kotlin 了。
|
3
debuggeeker 2022-03-24 14:58:30 +08:00
@nicevar 库还是 java 好,因为有些项目如果不支持 kt ,还能用。特别是老项目,我觉得没有必要纠结用啥。该用就用,前提是都得会。
|
4
ciki 2022-03-24 15:00:10 +08:00
Java8 以上很香,kt 没啥优势
|
5
witcherhope 2022-03-24 15:02:40 +08:00
只是加了些语法糖,而语法糖这个东西够用就好
|
6
olaloong 2022-03-24 15:04:55 +08:00 4
Android 的 Java 不是标准的 Java ,换 Kotlin 确实更好用了
后端有换 Kotlin 的功夫不如提升一下 Java 版本 |
7
changdy 2022-03-24 15:11:57 +08:00 1
java 有完备的模板引擎?
lambda 功能真的齐全? 为什么已经实现了 Comparable 还不能用 大于小于符号 ? 不否认 java 生态圈比较齐全...但是 真心感觉 java 写起来啰嗦... |
8
Huelse 2022-03-24 15:14:04 +08:00 5
激进的已经 scala 一步到位了
|
9
yazinnnn 2022-03-24 15:15:14 +08:00
我在用,然后我同事看不懂我写的啥。
再者,大家都是 spring boy ,而 kotlin 对于 spring 来说又没有明显增强的特性。reactor coroutine 算一个吧,但是你见过用 webflux 和 r2dbc 的人吗? |
10
leighton 2022-03-24 15:15:14 +08:00 via iPhone 1
AWS 某偏核心组,以前大部分是 cpp 和 java ,现在新代码都是 rust 和 kotlin 了。不过 kotlin 语法糖太多,我看别人写的代码有点吃力
|
11
haython 2022-03-24 15:16:33 +08:00 4
以前试过 kotlin ,然后 3 个人写出 3 个风格,互相难看懂
|
12
yazinnnn 2022-03-24 15:19:37 +08:00 1
我工作的常备工具库是 coroutine+vertx+arrowkt ,协程还好说,vertx 和 arrow 这两个 monad 风的库一般人接受不了啊,只能自己写着开心了。
|
13
hidemyself 2022-03-24 15:22:56 +08:00
因为 Java 有 Spring ,都快一统天下了
|
14
Mateverse OP |
15
nothingistrue 2022-03-24 15:35:00 +08:00
虽然都是基于 Java ,但面向前端 UI 的生态,跟面向后端的生态之间的区别,要比跨语言还大。kotlin 毕竟是从 Android 出发的,后端一时半会不会用。
还有另一方面,Java 太大了,Android 部分,和 Web 后端部分,只是最流行的(或者说搜索引擎上搜索最多的),但可能连 Java 总生态的 1/3 范围都没占到。(比如说,Mysql 数据库、Oracle 数据库中的 Java 部分、Hadoop 、Storm ,这些都是 Java 开发的,即没有用 kotlin 也没有用 spring 。)这直接导致除了基本 JDK ,很难有框架能一统天下。就是 JDK ,因为 JCP 基本上被 Oracle 独家控制了,也快分裂成 JDK-current 跟 JDK8 两套了。 |
16
whyrookie 2022-03-24 15:42:31 +08:00
Android 用 Kotlin 确实很舒服,毕竟谷歌定下的官方语言,有很多生态上的支持,后端不清楚,Kotlin 的语法比较花哨,确实可能出现不同人写出的代码风格差别很大的情况。我还是很喜欢 Java 的,严谨,风格统一,只是前端(包括客户端)有很多页面,感觉用 Java 写太繁琐了
|
17
fredli 2022-03-24 15:46:11 +08:00
因为懒啊,除了 Android ,Java 又不是不能用
|
18
echo1937 2022-03-24 15:50:06 +08:00
|
20
az467 2022-03-24 16:14:01 +08:00
让升到 java11/17 都不愿意,害搁这里 kotlin 呢。
|
21
Goooler 2022-03-24 16:14:08 +08:00
因为懒啊,拒绝新事物,说语法不香的那是没好好用过
|
22
Leviathann 2022-03-24 16:18:33 +08:00
@ciki 21 以后才算没啥优势,21 以下优势还是很明显,java8 的集合连静态工厂都没有,还得用蹩脚的 guava 创建
@Mateverse kotlin 必须 inlay hint 全开,面向 ide 编程 @witcherhope 某种特性的易用程度和使用频率强相关,java 一样可以做某种属性的懒加载或者委托,但是我很少使用,kotlin 一个关键字就行所以用的很多,体验完全不一样 |
23
Bingchunmoli 2022-03-24 16:21:14 +08:00 via Android
@changdy 有模板引擎,lambda 还属于新特性,大部分用 1.7 语法比较正常。 啰嗦确实罗嗦但是高级新手一个逻辑写出来差不了太多,不容易知名问题,也没有什么亮点
|
24
kassadin 2022-03-24 16:37:39 +08:00
Java 没“官方”啊
Web 部分 “Java 又不是不能用”,Spring 支持 kotlin 也没强推 Android 端虽不是强推,但协程、Compose 的引入基本也算强推了,Java 已经沦为“真不能用”了 |
25
Narcissu5 2022-03-24 16:54:33 +08:00
|
26
wangtian2020 2022-03-24 17:23:38 +08:00
刚从 github 上下了一个 demo 项目,导入 kotlin-compiler-embeddable android studio 花了 30 分钟
|
27
kkocdko 2022-03-24 17:36:17 +08:00 6
因为培训班不教。
|
28
MoonWalker 2022-03-24 17:37:16 +08:00
@Narcissu5 这怪不了 javaer 把,毕竟现在 mybatis 和 springmvc 都得对 java8 的 date 类做额外处理才能用啊。
|
29
xuanbg 2022-03-24 18:06:09 +08:00 1
反正就是“又不是不能用”,“省不了多少功夫”,“懒得去折腾”
|
30
zmal 2022-03-24 18:11:19 +08:00
为啥不用 scala ?语法糖比 kotlin 还多。
以前我也怒喷过 Java 在语法方面的不思进取,后来看了看 JDK 的更新,模块化、G1 、ZGC ,工程方面的大动作真的不含糊,相比之下语法糖那点真不是啥大事。 再后来用了用 scala ,语法糖见缝插针,多到吐血,滥用到 IDE 都不知道你的代码对不对。 个人认为 JDK17 已经是比较完美的状态,该有的差不多都有。 打败 java 的不会是另一种 jvm 语言。 |
31
kx5d62Jn1J9MjoXP 2022-03-24 18:29:33 +08:00 via Android
kotlin 学习成本不低的
|
32
mosliu 2022-03-24 18:30:56 +08:00
java 都 18 了 升下版本吧
花点钱使用 idea 在加上 coplilot 现在写代码真的很简单了。 无所谓 kotlin 代理的那点方便与提升。 |
33
2NUT 2022-03-24 18:36:28 +08:00
安卓端多吧
|
34
Cbdy 2022-03-24 18:39:48 +08:00
为什么 Java 开发没有普遍使用 Java9,10,11,12,13,14,15,16,17,18 ?
|
35
janus77 2022-03-24 18:40:31 +08:00
java 的轮子生态很强,轮子的开发者不支持就没那么好用
安卓的话有谷歌在强推,新的安卓轮子都是 kt 写的 |
36
imtianx 2022-03-24 18:57:17 +08:00
kotlin 写着不要太爽,但是看的人很难受,各种高阶函数的使用,特别是那种无限嵌套的
|
37
Narcissu5 2022-03-24 19:00:16 +08:00
@MoonWalker 新版本都不用的
|
38
changdy 2022-03-24 19:14:45 +08:00
@bthulu 啊哈 ? 一提到 模板引擎 就想到了 类似 jsp 的那种吗? 然而实际上 系统对接的时候 模板引擎 挺经常用的
@Bingchunmoli java 的模板引擎 比这 kotlin 真的不能算数.. 真正的问题 我觉得 @Cbdy 说的很对...高版本的 java 推广都成问题... kotlin 的推广更难.. |
39
dwlovelife 2022-03-24 19:32:19 +08:00
说真的 Java 的替代者如果换成 groovy 会更好,groovy 支持动态,在设计方面会更灵活,同样 groovy 的语法糖也很强写起来巨简洁,只是国内很少人会
|
40
Roojay 2022-03-24 19:36:52 +08:00 via Android
万年的 Java1.8 还指望转 Kotlin 😂
|
41
dcsuibian 2022-03-24 19:38:40 +08:00
今天从 Java 换到 Kotlin ,明天就从 Kotlin 换到 Zbling ,后天从
|
42
iRiven 2022-03-24 20:00:40 +08:00 1
kotlin 写的时候很舒服,阅读的时候很费脑子,不同人有不同风格,同一个人在不同时期都有不同风格,早上有没有喝咖啡,都能通过 kotlin 表现出来。java 虽然死板点,但是阅读的时候,能一眼就知道要做什么。
|
43
dcsuibian 2022-03-24 20:02:51 +08:00 2
按快了不好意思。
1 、新语言的语法糖和旧语言的历史包袱,会在新新语言和新语言之间再次出现。 2 、Java 本身设计比较优秀,并没有什么明显的缺陷。仍然好用。 3 、即使很像,说到底仍然是另一个语言。换语言成本很大。 4 、Java 语言本身也在进化。很多人吐槽 Java8 ,但如果你是老板,团队换新语言和旧语言的新版本之前挑一个,你选哪个呢? |
44
cweijan 2022-03-24 20:36:53 +08:00
kotlin 我比较喜欢的就只有 optional, 其他的都是语法糖, 没有特别大的优势, 静态函数还要声明成 object, 太麻烦了
|
45
searene 2022-03-24 20:50:13 +08:00
从公司层面上考虑是正常的,大部分的 Java 开发是不会 Kotlin 的,如果强推的话,很多人不愿意学,招人成本也会高一些,毕竟会 Java 的比会 Kotlin 的多多了。Kotlin 更多的是语法糖,优势不是特别大。
如果个人项目的话,我觉得 Kotlin 就很合适了 |
46
roundgis 2022-03-24 20:56:09 +08:00 via Android
先普及 java11 再說
|
47
echo1937 2022-03-24 20:58:15 +08:00 1
@MoonWalker #28 MyBatis 很早就对 JSR-310 提供开箱可用的支持了。
Since version 3.4.5, MyBatis supports JSR-310 (Date and Time API) by default. https://mybatis.org/mybatis-3/configuration.html#typeHandlers mybatis-3.4.5 https://github.com/mybatis/mybatis-3/releases/tag/mybatis-3.4.5 |
49
sagaxu 2022-03-24 21:03:03 +08:00 via Android
用了这,是能早下班还是加薪?
|
50
nicegoing 2022-03-24 21:04:23 +08:00
写了一段时间 kotlin ,越写越觉得 Java 虽然啰嗦,也严谨好看,代码一目了然。
鱼与熊掌不可兼得,要好看,本来 kotlin 几下搞定的,就得啰啰嗦嗦的写好多。 |
51
bk201 2022-03-24 21:05:16 +08:00 1
都用 java 了,如果不是单人做的项目,为啥要用一个多语法糖的语言,多语法糖意味着写出来的东西可能很难理解。
|
53
kingjpa 2022-03-24 21:13:25 +08:00
java 啊?本来就是以稳定不折腾为主,
我还用 1.8 呢, 这都多少年了 |
54
wupher 2022-03-24 21:29:33 +08:00
其实挺好用的,独立负责的项目都在使用 Kotlin 了。
至于公司那帮老古董,他们连 JDK8 都不愿意升级,还提啥 Kotlin 。 |
55
Jooooooooo 2022-03-24 23:09:22 +08:00
写法太多读起来也累.
|
56
jackmod 2022-03-24 23:36:10 +08:00
新项目还是用 8 ,因为支持到 2030 年。
|
58
msg7086 2022-03-25 02:19:17 +08:00
太真实了,最近刚刚升到 Java 8 ,你跟我说 Kotlin ?(狗头
|
59
hingbong 2022-03-25 07:45:54 +08:00 via Android
我们部门就差不多都是 kotkin
|
60
lixm 2022-03-25 07:51:11 +08:00
用 kotlin 5 年了, 目前感觉良好
|
61
fueen 2022-03-25 09:08:37 +08:00
不是,我就搞不懂最简单的一点,我用 Java 用的好好地为什么要换 kotkin 啊?
|
62
zed1018 2022-03-25 09:12:25 +08:00
因为他们学不会
|
63
weiweiwitch 2022-03-25 09:19:15 +08:00 via Android
@fueen 会带来开发效率的提升和错误率下降。特别是空指针,我们现在极少出现了。
|
64
dbpe 2022-03-25 09:29:45 +08:00
java 都没玩会..指望他们玩 kotlin?算了吧
|
65
muyiluop 2022-03-25 09:38:23 +08:00
哈哈,每隔一段时间出一个类似的贴子,看下这类型帖子会持续多少年
|
66
6i3BMhWCpKaXhqQi 2022-03-25 09:47:44 +08:00
@zmal 因为 build 慢,performance 也不好
写了好久 scala 的人路过 |
67
6i3BMhWCpKaXhqQi 2022-03-25 09:48:24 +08:00
@zmal 并不是因为语法糖,毕竟觉得太甜可以不吃,也不是非吃不可。
|
68
yazinnnn 2022-03-25 09:57:26 +08:00 1
为什么觉得 kotlin 比 java 难懂? java 写点 fp 向的代码,一堆 Function BIFunction BiConsumer 难道比 (T)->R, (A,B)->R,(A,B)->Unit 好懂?
|
69
chendy 2022-03-25 09:58:20 +08:00
成本和风险不抵收益
安卓有谷歌在推,其他地方并没有 日常项目,开发人员连 java 特性都摸不明白,哪有胆量换 kt |
70
neptuno 2022-03-25 10:01:31 +08:00
不然为啥叫 java 开发。。。。
|
71
zmal 2022-03-25 10:08:48 +08:00
|
72
6i3BMhWCpKaXhqQi 2022-03-25 10:12:01 +08:00
@zmal 同意,各有各的好处。
|
73
zmal 2022-03-25 10:21:01 +08:00
还有就是,理论上其他 JVM 语言有的东西 Java 都可以加上去,再不济可以混合编译。
“加功能”总是很简单,“该不该加”、“要不要加”、“怎样更好的加”背后的东西才是需要思考的。 Java 再差也不可能搞出高版本不兼容低版本这种事来。这是包袱,也是责任。 |
74
zhazi 2022-03-25 10:26:52 +08:00
你的 java 代码到达可以嫌弃这门语言的地步了吗?
如果你原本的 java 代码都写不好,凭什么让别人相信你换一门语言就能写好。并且为你的想法去买单 |
75
zmal 2022-03-25 10:32:42 +08:00
还是建议大家多用一用其他语言的,像 op 和楼里一些优越感很强的 kt 程序员,怎么说呢,多少沾点...
|
77
zmal 2022-03-25 10:42:20 +08:00
|
78
TArysiyehua 2022-03-25 10:45:43 +08:00
上面说了一大堆,都是说语言的。其他跟语法真关系不大,有多少人真心喜欢 Java 或者 Kotlin 了?再说白一点,有多少人喜欢编程的?
大部分人能省事就省事,学一个新的东西难道不费精力吗? 那为啥 Android 很多人用。废话,你不会 kotlin 你找不到工作。我做 Java 后端的,不会 Kotlin 会找不到工作吗?你再问问现在的 android 开发,面试不会 kotlin ,不会协程,有几个能找到工作的? 那为啥 Android 不会 kotlin 找不着工作呢?根据原因是谷歌一直在推 kotlin ,导致国内不得不学,你不学。团队就不好写 KPI ,有了 KPI ,就导致招人的时候要求会 Kotlin ,招人要求会,从而导致了 Anrdoid 开发者不得不去学 |
79
NoNewWorld 2022-03-25 11:06:28 +08:00
因为 java 很多半路出家的,你指望他们用?
|
80
yazinnnn 2022-03-25 11:25:43 +08:00
呃呃,张嘴多少沾点,嘴里说“多用点其他语言”然后喷别人“优越感很强”,闭嘴引战不再回复,再来就要 block 了吧
差不多得了 v2 阿 q😣 |
81
Lemeng 2022-03-25 13:33:14 +08:00
循序渐进循序渐进
|
82
Sh4p 2022-03-25 14:09:45 +08:00 6
坐标: 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 是必经之路,也跟语言没什么关系。 |
83
MoonWalker 2022-03-25 14:24:00 +08:00
@echo1937 是我云了,哈哈哈
|
84
ZeroDu 2022-03-25 16:07:59 +08:00
楼上很多人说为啥不设计 java 版本。java 的大多项目都是业务相关,java 项目往往依赖非常多,升级版本带来的问题很多,无法确保三方依赖支持。因为 java 项目众多各个库为能广泛应用自然版本选择时不会那么激进,
|
85
nicocho 2022-03-25 18:23:20 +08:00
kotlin 是 google 推荐的 android 开发语言, 协程,语法糖什么的是不错,但作为一个老 java,kotlin 可读性不那么舒服
|
86
nicevar 2022-03-25 18:34:00 +08:00
@TArysiyehua 没那么夸张,安卓开发不用 Kotlin 的多的去了,甚至有些保守的公司过去很长一段时间不让用 Kotlin ,一个语言而已,真要用,几天就能上手了。
|
87
Sh4p 2022-03-25 18:37:47 +08:00 1
而且易读性这个东西要怎么定义呢?假设让一个完全没见过 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. 读惯了与好读是等价的吗? |
88
cheng6563 2022-03-25 18:41:47 +08:00
lombok 现在都用不动,还说 Kotlin ?
|
89
Suddoo 2022-03-25 19:22:43 +08:00 via iPhone
老板不好招人,开公司要考虑成本的,手下一帮人等着养家糊口
|
90
thtznet 2022-03-25 21:13:43 +08:00
我是 C#小组派来招安各位的,论语法糖和一把梭,C#从来没有输过....我编不下去了。
|
91
aureole999 2022-03-25 21:48:31 +08:00 via Android
用了 2 年 kotlin 最近回头写了一点 java ,觉得 kotlin 的可空 /不可空变量和扩展还是挺好用的。data 类大部分情况下好用,但不能继承有时候又有点麻烦,不想 lombok 比较灵活
|
92
Leviathann 2022-03-25 21:55:20 +08:00
@Sh4p
java 顶多是关于 how 的可读性,写一堆流水账简简单单,但是在关于 what 的可读性方面远不如 kotlin ,也就是表达能力 kotlin 影响可读性的地方主要是作用域和 receiver 容易变,这个就要借助 ide 的类型提示了 |
93
BeautifulSoap 2022-03-25 22:21:47 +08:00
看了下公司的手册,我在的公司现在对于新开发的项目,推荐语言和框架早已经是 Go 或 Kotlin 了。这还是个日本公司,挺多公司也并没你们想得那样因循守旧的。
|
95
ByteCat 2022-03-25 23:53:57 +08:00
我做 Spring Boot 都是 Kotlin + Gradle 那一套,Spring 对 Kt 支持还是挺好的,写多了完全不想用 Java 了 XDDD
|
96
haya 2022-03-26 00:54:05 +08:00
kotlin 写写 vert 还行
|
97
Bingchunmoli 2022-03-26 03:01:07 +08:00 via Android
@Narcissu5 熟悉好用,框架做了支持,不过我还是推荐换新写法有些老版本还是要用 util 的 date
|
98
Bingchunmoli 2022-03-26 03:04:09 +08:00 via Android
@weiweiwitch 切换技术栈需要成本. 不需要成本就好了
|
99
Mirage09 2022-03-26 03:06:33 +08:00 via iPhone
很多时候不是“为什么不用”而是“又不是不能用”
|
100
Bingchunmoli 2022-03-26 03:07:39 +08:00 via Android
@Sh4p 生成也挺多的,lombok 我也不太会用静态参数的处理
|