以后我们都会是 Java /kotlin 程序员吗?学了下 kotlin,感觉 kotlin 啥都能干

2022-09-10 09:22:36 +08:00
 popil1987

Android 原生开发:不用说了,标配,特别是 jetpack compose 推出后

Android 和 iOS 开发:kotlin multiplatform mobile.看了下原理是界面和硬件交互还是原生开发,公共的库可以用 kotlin 开发,什么 api 请求啊,ai 算法啊都可以只实现一套,swift 可以直接引入,不需要写 wrapper

桌面开发:jetpack compose for desktop ,是 java 的 swing 做底层,这可移植性不用说,其他库有 kotlin multiplatform

web 开发:kotlin/js,转译到 js 。另一点是和 js 的 interop 也很好,可以很简单的引入 js 生态。我看到官方支持很多 react 生态的 lib,加上 jetpack compose for web 或 jb 自家的 ring ui

服务端:这生态现在和 java 一样好,还有个 ktor 和 web 端,移动端都能 full stack 公用代码

数据科学:jupyter notebook 加上 kotlin kernel,有能替换 python pandas numpy 的库,而且很好,大数据方面 java 肯定完爆 python,python 很喜欢,但 kotlin 是真香

担心:没有深入进去,不知道有啥坑,java 生态倒是杠杠的。被 JetBrains 的 IDE 支配( vim, emacs 确实打不过 idea )

fleet 出来以后对我们这种纯 linux 下工作的人来说是真香,不好忍住

个人有时间还是要学习下小众技术,不为别的,小众技术啥生态没有,有利于学习底层知识

5131 次点击
所在节点    编程
33 条回复
popil1987
2022-09-10 09:27:18 +08:00
还想到一点不足就是正确性还不能和 haskell rust 相提并论,如果不论学习曲线的话。在我看来,正确性意味着少测试,少 debug ,生产效率
内存问题不怎么算问题
Leviathann
2022-09-10 09:40:47 +08:00
目前用来写后端
没什么问题
MakHoCheung
2022-09-10 09:49:56 +08:00
确实 Kotlin 涉及到了很多的方面,但是除了安卓开发,其他都是非常一般甚至多此一举。
我只说跟 Java 比,如果是 Java 8 的话 Kotlin 绝对非常香,但是跟现在 Java 19 比就没啥用。除了扩展函数和尾随闭包,Kotlin 有的,比如数据类、协程啊,Java 都有,甚至模式匹配还不如 Java 的。
fox0001
2022-09-10 10:03:19 +08:00
按目前的发展来看,Kotlin 只是 Java 的“跟屁虫”。没贬义的意思,只是想说,Kotlin 要平替 Java ,只能跟随 Java 发展。
agagega
2022-09-10 10:20:05 +08:00
当年大家也是这么想 Swift 的
dcsuibian
2022-09-10 10:54:24 +08:00
问下隔壁什么都能写的 js 吧
shot
2022-09-10 10:57:38 +08:00
感觉 Kotlin 是我用过的最舒服的语言。最喜欢的几点:
1. 语法糖: null-safety, lambda, `val`, standard library
2. coroutines
3. 设计好 DSL ,写代码犹如写文章
4. 全端开发

我最近一次写 kotlin 代码大概是两年前,印象中有这么一些劣势/限制:
1. 语法过于灵活很容易放飞自我, 普通开发者难以消化大量的 let/apply/run/also 和 filter/flatMap/associate/groupBy
2. 除 Android 和 backend 外,其它端的工具/生态/社区还是不够完善,能用但不够好用
3. 编译速度慢

基于以上因素,我建议只在独行侠项目中使用 Kotlin 。
如果能在团队中成功应用,也许需要是业界 top 10% 精英组成的超级团队。
hankli
2022-09-10 10:58:37 +08:00
3 楼+1
搞不明白宁愿学 kt ,也不愿意升级 jdk 版本,是因为什么
hsfzxjy
2022-09-10 11:40:50 +08:00
kt 想撼动 python 在机器学习的地位没这么简单,主要是生态基本是围绕 python 开发的,而且学术界的人根本不想换
iseki
2022-09-10 11:46:26 +08:00
@hankli 即使是最新的 Java ,特性和 Kotlin 比也有很大差距。更别说很多项目不让你动 JDK
zmxnv123
2022-09-10 12:04:38 +08:00
公司用的话没啥问题
就是写自己的项目不想带个虚拟机,kotlin native 连个反射没有。
HugoChao
2022-09-10 12:15:38 +08:00
js 好像也啥都能干,前后端,多平台应用,还能 tensorflow 呢
popil1987
2022-09-10 12:22:53 +08:00
安特的各位,不是杠大家,就是讨论,本人是个 java hater 但是通过最近对 kotlin 的了解,并且在各端都实验了下,确实震撼比较大。
@MakHoCheung 对大公司,大家分工,各自做好自己的事就好。对于独行侠或者小公司可就太有意义了。而和 java 相比的话,web 、桌面、数据科学,双端开发 java 可就比不了了,java 行的 kotlin 也行,kotlin 行的 java 不一定
@fox0001 你行的就 call 你,你不行的你想想办法吧----kotlin 对 java 说
@agagega kotlin 是真做出来这些东西了,并且受到 google 支持
@dcsuibian 隔壁 js 是真真的不行你就看 typescript, rescript, purescript, elm, ghcjs, clojurejs.......都想革 js 的命。RN 个人感觉比不了 flutter ,flutter 能直接 call c 接口,意味着能很好的跟 rust 配合,RN 移动端和桌面端只能各个平台的语言配合,数据科学也不行,当然了,小程序们是必须 js 的
@shot 我就是独行侠,学了好多编程语言,多学一门编程语言新的概念并没有多多少,主要作为 java hater ,之前不太了解 java 一些著名的库,底层知识不够,先来发帖看大家意见
@hankli 生态的问题,不是 java 语言本身的问题
@hsfzxjy 市场问题,tensorflow 和 torch 只是被 python warpper 了,kotlin 也能 wrapper,向量的计算至少 kotlin 不太担心自己循环
Jirajine
2022-09-10 12:23:00 +08:00
swing 支持 wayland 遥遥无期,我桌面上 jb 系 ide 是唯一需要跑 xorg 的程序了。
humpy
2022-09-10 12:27:58 +08:00
这东西就是看起来很美好,实际还不成熟,你实际用 kmm 写个复杂点的库就知道了…尤其是在 ios 里用协程,老的内存模型恶心人,新内存模型 gc 又卡得爆炸
s524256521
2022-09-10 12:28:36 +08:00
我现在就是左手 Kotlin ,右手 Swift ,中间 Python ,八端覆盖,那感觉呢,就是拥有了全世界。
s524256521
2022-09-10 12:30:19 +08:00
@s524256521 拳打小程序,脚踢 Flutter
Jooooooooo
2022-09-10 13:07:00 +08:00
啥都能干的语言不一定是好事.

语法糖多一般来讲都是坏事.
janus77
2022-09-10 13:56:55 +08:00
关于 jdk 不能升级的问题,我可以分三大类(姑且把比例定位 60% 30%和 10%吧,只是为了做成金字塔模型,数字并不准确)
60%是政治因素,比如所谓的“屎山别动”、“动了出问题你负责”、“能跑就行”、“老大说别动,他只看得懂老风格的代码”。这些可以无脑升级,所以也可以无脑换 kt
30%是技术因素,比如“框架只支持 jdk7”、“库只支持 jdk7”、“迁移成本高”等。这些花一点工夫也可以升级,但是不一定能无脑换 kt ,看框架有没有平替
10%是架构因素,比如某些大厂有定制的 jdk ,自己魔改了源码,或者自研的框架(注意是自研,一般这类框架没有平替)依赖老版本 jdk 。这些就没法升了。这类应该暂时换不了 kt
这样看来似乎有一多半是可以换 kt 的,但是别忘了成本和收益比。换了有什么好处?这才是支持你换的动力。
在我上面说的 60%部分,可以说换了并没有什么好处,因为他本来就是屎山,屎山是不会在乎以后维护有多方便、开发有多爽的,更不用说那些来自老旧势力的阻力了,这也可以视为负收益的一部分。
israinbow
2022-09-10 14:04:44 +08:00
> fleet
我收到了 fleet 的内测邀请, 下载了 Linux 版本的, 但是程序根本无法运行启动, 还是别报太大希望了.

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

https://www.v2ex.com/t/879059

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

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

© 2021 V2EX