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 下工作的人来说是真香,不好忍住
个人有时间还是要学习下小众技术,不为别的,小众技术啥生态没有,有利于学习底层知识
1
popil1987 OP 还想到一点不足就是正确性还不能和 haskell rust 相提并论,如果不论学习曲线的话。在我看来,正确性意味着少测试,少 debug ,生产效率
内存问题不怎么算问题 |
2
Leviathann 2022-09-10 09:40:47 +08:00 via iPhone
目前用来写后端
没什么问题 |
3
MakHoCheung 2022-09-10 09:49:56 +08:00 4
确实 Kotlin 涉及到了很多的方面,但是除了安卓开发,其他都是非常一般甚至多此一举。
我只说跟 Java 比,如果是 Java 8 的话 Kotlin 绝对非常香,但是跟现在 Java 19 比就没啥用。除了扩展函数和尾随闭包,Kotlin 有的,比如数据类、协程啊,Java 都有,甚至模式匹配还不如 Java 的。 |
4
fox0001 2022-09-10 10:03:19 +08:00 via Android
按目前的发展来看,Kotlin 只是 Java 的“跟屁虫”。没贬义的意思,只是想说,Kotlin 要平替 Java ,只能跟随 Java 发展。
|
5
agagega 2022-09-10 10:20:05 +08:00 via iPhone
当年大家也是这么想 Swift 的
|
6
dcsuibian 2022-09-10 10:54:24 +08:00
问下隔壁什么都能写的 js 吧
|
7
shot 2022-09-10 10:57:38 +08:00 1
感觉 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% 精英组成的超级团队。 |
8
hankli 2022-09-10 10:58:37 +08:00
3 楼+1
搞不明白宁愿学 kt ,也不愿意升级 jdk 版本,是因为什么 |
9
hsfzxjy 2022-09-10 11:40:50 +08:00 via Android
kt 想撼动 python 在机器学习的地位没这么简单,主要是生态基本是围绕 python 开发的,而且学术界的人根本不想换
|
10
iseki 2022-09-10 11:46:26 +08:00 via Android
@hankli 即使是最新的 Java ,特性和 Kotlin 比也有很大差距。更别说很多项目不让你动 JDK
|
11
zmxnv123 2022-09-10 12:04:38 +08:00 via iPhone
公司用的话没啥问题
就是写自己的项目不想带个虚拟机,kotlin native 连个反射没有。 |
12
HugoChao 2022-09-10 12:15:38 +08:00
js 好像也啥都能干,前后端,多平台应用,还能 tensorflow 呢
|
13
popil1987 OP 安特的各位,不是杠大家,就是讨论,本人是个 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 不太担心自己循环 |
14
Jirajine 2022-09-10 12:23:00 +08:00 1
swing 支持 wayland 遥遥无期,我桌面上 jb 系 ide 是唯一需要跑 xorg 的程序了。
|
15
humpy 2022-09-10 12:27:58 +08:00 via iPhone
这东西就是看起来很美好,实际还不成熟,你实际用 kmm 写个复杂点的库就知道了…尤其是在 ios 里用协程,老的内存模型恶心人,新内存模型 gc 又卡得爆炸
|
16
s524256521 2022-09-10 12:28:36 +08:00 via Android
我现在就是左手 Kotlin ,右手 Swift ,中间 Python ,八端覆盖,那感觉呢,就是拥有了全世界。
|
17
s524256521 2022-09-10 12:30:19 +08:00 via Android
@s524256521 拳打小程序,脚踢 Flutter
|
18
Jooooooooo 2022-09-10 13:07:00 +08:00
啥都能干的语言不一定是好事.
语法糖多一般来讲都是坏事. |
19
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%部分,可以说换了并没有什么好处,因为他本来就是屎山,屎山是不会在乎以后维护有多方便、开发有多爽的,更不用说那些来自老旧势力的阻力了,这也可以视为负收益的一部分。 |
20
israinbow 2022-09-10 14:04:44 +08:00
> fleet
我收到了 fleet 的内测邀请, 下载了 Linux 版本的, 但是程序根本无法运行启动, 还是别报太大希望了. |
21
duke807 2022-09-10 14:10:57 +08:00 via Android
我随便说一个,你看看能不能干
python 的 cocotb ,fpga 和芯片仿真 |
22
dqzcwxb 2022-09-10 14:12:12 +08:00
@MakHoCheung #3 其他语言有的,java 都会有(抄)
|
24
Jirajine 2022-09-10 15:32:54 +08:00
@fzdwx 输入法应该可以通过 XIM ,当然 jb/swing 自己在输入法方面也有坑。不支持 wayland 最大的问题是性能低、hidpi 模糊、输入有延迟。
|
25
akira 2022-09-11 00:39:28 +08:00
从来就没有一种语言打天下的事情。 不要拿个锤子 就看啥都是钉子
|
26
pengtdyd 2022-09-11 01:24:57 +08:00
啥都能干 ??? 除了 C/C++敢这么说,我还没见过第二个这么狂的语言。
|
27
rbq123456 2022-09-11 02:25:32 +08:00
别的不知道,只说 web 开发这一块,都是扯淡
|
28
musi 2022-09-11 08:48:50 +08:00
js 之前也是这么说的
|
29
musi 2022-09-11 08:50:45 +08:00
@popil1987 #13 这么多都想革 js 的命,你看看哪个成功了,最后不还是要编译成 js 跑在浏览器里。
要真正革 js 的命,一定要从浏览器下手 |
32
popil1987 OP @musi 这么说也对,毕竟 TS 无痛使用 js ,其它多多少少得做点引入的工作。其它语言使用的场景可能是特性足以有动力做点 js 引入的工作或者不需要 js 生态。如你只需要 react 全家桶,又不想用 TS 就可以用 kotlin 开发
|
33
mysunshinedreams 2022-09-13 15:15:11 +08:00
实际生产环境中使用过,感觉别的东西都挺好,唯一的缺点就是 Kotlin 的插件有点卡,有的时候代码提示不跟手,编译时间变长。
|