V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
szuwl
V2EX  ›  程序员

为什么很少听说有人用 kotlin 开发后端

  •  1
     
  •   szuwl · 2021-06-07 11:14:14 +08:00 · 13592 次点击
    这是一个创建于 1255 天前的主题,其中的信息可能已经有所发展或是发生改变。
    相印的 kotlin 后端的招聘岗位也很少,很疑惑,这么好使的后端语言,为什么一直处于较冷的状态。
    84 条回复    2021-08-29 11:31:13 +08:00
    Kasumi20
        1
    Kasumi20  
       2021-06-07 11:20:58 +08:00
    太灵活了,只适合 geek 玩

    上班摸鱼还是老老实实写 Java 的 getter setter 。
    dolphintwo
        2
    dolphintwo  
       2021-06-07 11:21:27 +08:00   ❤️ 15
    因为培训班只教 java
    szq8014
        3
    szq8014  
       2021-06-07 11:24:32 +08:00
    还是取决于公司的业务类型,比如我所在的公司有一些甲方验收的时候明确要求是 Java 。
    有一些自己的产品就可以随便用,不过为了统一我也不打算推 kotlin 了,虽然用它写业务真的很爽
    let apply map 爽到飞起
    kidult
        4
    kidult  
       2021-06-07 11:26:42 +08:00   ❤️ 1
    JAVA:一万个人心中只有那个哈姆雷特
    Kotlin:一万个人心中有一万个哈姆雷特
    ufan0
        5
    ufan0  
       2021-06-07 11:31:22 +08:00 via Android
    维稳大于天,大家觉得老东西靠谱,除非哪天 Java 不让用了或者彻底某个方面被时代抛弃了。

    话说回来,如果你是部门架构师级别的,是可以自己选择其他语言的。
    wupher
        6
    wupher  
       2021-06-07 11:33:18 +08:00
    用没问题,招人的时候就有点麻烦。

    我的项目后端使用 Kotlin 开发,新人从学习能上手做事,要接近 1 个月吧。
    qwerthhusn
        7
    qwerthhusn  
       2021-06-07 11:35:33 +08:00
    用了 KT 感觉 Java 就是一坨屎。但是公司项目肯定还是用 Java 啊,不是所有人愿意花精力学 kt 的。
    zoharSoul
        8
    zoharSoul  
       2021-06-07 11:37:22 +08:00
    暂时缺少大公司零头宣传.
    wengych
        9
    wengych  
       2021-06-07 11:38:25 +08:00 via iPhone
    后端能用 java11,以前安卓只能用 1.6
    levelworm
        10
    levelworm  
       2021-06-07 11:40:57 +08:00 via Android
    看了下语法 return on when 有点骚啊
    zhgg0
        11
    zhgg0  
       2021-06-07 11:43:13 +08:00
    @wupher 如果会 java,一天就可以了吧?
    stimw
        12
    stimw  
       2021-06-07 11:44:13 +08:00
    大部分从 java8 换到 11 都不想换,还让他们换个语言...
    uglyer
        13
    uglyer  
       2021-06-07 11:50:00 +08:00   ❤️ 1
    17 年的项目尝试过,除了对象序列化遇到一些坑之外其他方面都挺好的,能极大的提高效率。
    对于团队成员,kotlin 不熟悉的语法,先用 java 写 用 idea 提供自动转换的工具 翻译为 kotlin,基本上一周左右都能熟悉了。
    jarrodquan
        14
    jarrodquan  
       2021-06-07 11:55:29 +08:00
    我现在在用 Gradle 构建基于 Kotlin 的 JavaFX 项目还有 Spring Boot 项目。
    后来因为要完全离线开发,把 Gradle 换回了 Maven 。
    Kotlin 写起来很舒服,省略标点符号,更高级的扩展 API,免去了 Getter/Setter 直接赋值取值(写 JavaFX 的时候贼爽)。
    后端 Spring Boot 这种项目,最明显的感受就是更便捷的集合操作 API,还有协程。
    Leviathann
        15
    Leviathann  
       2021-06-07 12:02:54 +08:00 via iPhone
    @zhgg0 kotlin 的 class 相关语法比 Java 复杂不少
    易上手主要是函数式相关的 api 比较直观易用
    MarkLeeyun
        16
    MarkLeeyun  
       2021-06-07 12:14:40 +08:00
    @kidult 还好,其实都有规范的,按照规范去写代码应该不会有什么大的问题的。
    yazinnnn
        17
    yazinnnn  
       2021-06-07 12:36:50 +08:00
    未来是可以期待的,spring vertx quarkus 等后端框架是拥抱 kotlin 的
    fermiz
        18
    fermiz  
       2021-06-07 12:41:06 +08:00
    目前项目正在使用 Kotlin,大半年了;语言本身方面挺香的,尤其是集合操作、scope 函数之类的;框架方面,基本很多开源的依赖都有 kotlin 支持,目前除了 MapStruct 这种底层要转会 JAVA 的静态代理的,没有什么大坑,新人上项目 2-3 周适应期,可以先写 Java 用 IDE 自动转试试;
    zxCoder
        19
    zxCoder  
       2021-06-07 12:48:55 +08:00
    kotlin 和 c#有些语法糖挺像的
    jack778
        20
    jack778  
       2021-06-07 12:51:12 +08:00
    @szq8014 接盘你项目的人会哭的呢。
    holulu
        21
    holulu  
       2021-06-07 12:52:15 +08:00
    除非一开始就用,很少项目中途转。
    Jooooooooo
        22
    Jooooooooo  
       2021-06-07 12:53:35 +08:00
    好处不明显啊

    而且一个相同的东西存在好几种写法是个非常大的缺点
    xd314697475
        23
    xd314697475  
       2021-06-07 12:54:47 +08:00
    我们在用 kt 写后端
    Lonely
        24
    Lonely  
       2021-06-07 13:00:04 +08:00 via iPhone   ❤️ 2
    没有太大的优势啊
    yazinnnn
        25
    yazinnnn  
       2021-06-07 13:05:44 +08:00
    @Jooooooooo
    举个栗子?
    Jooooooooo
        26
    Jooooooooo  
       2021-06-07 13:11:07 +08:00
    @yazinnnn 比如这种 val max = if (a > b) a else b

    我宁愿看下面这种代码

    int max;

    if(a>b) {
    max = a;
    } else {
    max=b;
    }


    本来 java 自带的三目运算符就已经很不直观了(go 就直接抛弃了这个语法)
    viakiba
        27
    viakiba  
       2021-06-07 13:11:51 +08:00
    kt 相比 java 最大的优势是协程 其他只能说是语法糖
    iyaozhen
        28
    iyaozhen  
       2021-06-07 13:32:08 +08:00
    有 spring 全家桶嘛?

    再说还有发展迅猛的 go,还有市场依旧很大的 php
    Leviathann
        29
    Leviathann  
       2021-06-07 13:37:50 +08:00
    @iyaozhen 17 年初发布的 spring5.0 完全兼容 kotlin
    @Jooooooooo 这样写那 max 就不能声明成 immutable 的
    iyaozhen
        30
    iyaozhen  
       2021-06-07 13:42:16 +08:00
    @Leviathann 那其实还是换语言的问题,就像前面说的,我们之前团队从 1.6 换到 8 都搞了好久。如果是新项目很可能用 go
    yitingbai
        31
    yitingbai  
       2021-06-07 13:48:15 +08:00
    @jarrodquan 你用 javafx 做什么项目? 这玩意太吃内存了, 空窗口启动就用了 40 多个线程和 100 多 MB 内存, 随便刷一刷几百兆内存就没了, 虽说现在内存便宜, 也架不住这么玩啊
    Torpedo
        32
    Torpedo  
       2021-06-07 13:48:58 +08:00
    https://www.v2ex.com/t/781261?p=1 你看看这下面很多写 java 的人的回帖,我感觉让他们用点『新』的 java 语法就很难了,更别说用 kotlin 了
    NEVERCODE
        33
    NEVERCODE  
       2021-06-07 13:52:33 +08:00
    我推荐给我司后端,他们非常抗拒…
    timle1029
        34
    timle1029  
       2021-06-07 13:54:35 +08:00
    亚麻是有的,而且越来越多,只是对于用户来说感觉不到
    Ambush
        35
    Ambush  
       2021-06-07 14:03:27 +08:00
    我司后端用的正是 Kotlin
    fewok
        36
    fewok  
       2021-06-07 14:04:34 +08:00
    完全没有性价比。

    学习成本:用 kotlin 就可以不懂 java 吗?
    内存占用:基于 jvm,kotlin 反而多占用一些内存
    执行速度:jvm 上,没有区别
    开发效率:你还在纠结那些语法表达,我已经完成任务。
    结构化设计:OOP 、AOP 、DI 、DDD 等等,思想都没变法,不过是语法不一样。
    cco
        37
    cco  
       2021-06-07 14:05:03 +08:00
    @qwerthhusn 没必要捧一贬一,各有优缺点。
    wxw752
        38
    wxw752  
       2021-06-07 14:14:05 +08:00   ❤️ 1
    ”凭什么让我学 kotlin,下一份工作又用不到”
    unco020511
        39
    unco020511  
       2021-06-07 14:16:18 +08:00
    因为大家都不想换
    wupher
        40
    wupher  
       2021-06-07 14:18:17 +08:00
    @Leviathann 是的,我也是因为更喜欢诸如 FP,以及诸如 data class,强类型等语法点而使用。
    @zhgg0 但写代码的时间就有可能更长了。Kotlin 写完基本编译成功后,就基本没太多问题。

    其实新的 Java16 也提供了类似 data class 机制,不过,java16, 我司运维现在还支持 java8 。
    roundgis
        41
    roundgis  
       2021-06-07 14:23:06 +08:00 via Android
    @jarrodquan gradle 不支持離線嗎?
    Alexliu
        42
    Alexliu  
       2021-06-07 14:27:29 +08:00
    这不就是看个人爱好么。。我是有在生产环境用 kt 写过后端了,反而没在 android 里用
    shihty5
        43
    shihty5  
       2021-06-07 14:29:52 +08:00
    我司作为 fin tech 独角兽全面拥抱 Kotlin,自己团队招人,求简历~
    www.airwallex.com

    [email protected]
    Rheinmetal
        44
    Rheinmetal  
       2021-06-07 14:31:55 +08:00
    有一个古老的项目,有人用 kt 重构之后把线程全部改成 coroutine 。
    在旧机器上跑的好好的,等要迁移的时候。新机器上项目直接启动过后,过一会儿不明原因 hang 。
    zed1018
        45
    zed1018  
       2021-06-07 14:32:32 +08:00
    我们组一半的 jvm 已经用 kt 了
    zhuangzhuang1988
        46
    zhuangzhuang1988  
       2021-06-07 15:06:19 +08:00
    @Rheinmetal 而且特别难查 bug.
    dbpe
        47
    dbpe  
       2021-06-07 15:09:50 +08:00
    kotlin 语法糖真甜...特别是拓展方法...真香
    yyyyda
        48
    yyyyda  
       2021-06-07 15:10:38 +08:00
    我们就在用 kotlin 写后端,到现在快两年了
    zoharSoul
        49
    zoharSoul  
       2021-06-07 15:12:28 +08:00
    @shihty5 #43 坐标哪里?
    byte10
        50
    byte10  
       2021-06-07 15:28:41 +08:00
    @kidult 哈哈这一个精髓了,很多人喷 java 为啥那样古板的语法。其实就是这个道理,花里胡哨的语言导致无法维护的情况。因为开发团队 参差不齐,所以最好的语言还是 java 的
    @qwerthhusn 你要听话,比 Kotlin 好的语言多的是,js,python,go,c# 开发都比它爽。但是为啥在业务领域还是 java 强,你还没领会到。当你成为领导,架构师的就会知道了。不听话就会很惨的。
    hello1996
        51
    hello1996  
       2021-06-07 15:42:50 +08:00
    因为后端用 kotlin 收益不大
    yvestang
        52
    yvestang  
       2021-06-07 15:43:55 +08:00   ❤️ 1
    为啥很多人还停留在「我学了个新语言很厉害」、「 xx 语言比 yy 语言更牛」这个层次.....估计是没有管理过大型工程吧。
    Kamiyu0087
        53
    Kamiyu0087  
       2021-06-07 15:46:10 +08:00
    Kotlin 写起来确实很爽
    个人很喜欢
    Rwing
        54
    Rwing  
       2021-06-07 15:46:59 +08:00
    推荐一手 C# 😊
    w741069229
        55
    w741069229  
       2021-06-07 16:02:26 +08:00   ❤️ 1
    用 kt 不如用 scala,写起来比 kt 优雅的多吧
    huangyanan
        56
    huangyanan  
       2021-06-07 16:06:21 +08:00
    @fewok 赞同,公司新人特别推崇新语言新特性。
    kett
        57
    kett  
       2021-06-07 16:12:11 +08:00   ❤️ 2
    个人认为 Java 这种死板,语法糖少的语言非常适合工程,kt 这种灵活,语法糖多的,比较适合个人爽。
    dqzcwxb
        58
    dqzcwxb  
       2021-06-07 16:17:38 +08:00
    不用 kotlin 的理由并不是不接受新的语法也不是不会学,而是因为 java 会逐步吸收其他语言的成熟优点变成自己的
    既然我用的语言会慢慢进化,我为什么要用其他的?
    echo1937
        59
    echo1937  
       2021-06-07 16:25:38 +08:00
    "方向错了,徒增功耗,有失公允,感知不强" /手动狗头

    现在后端圈子都不太热衷 JDK 的更新,KT 化自然也就更不热门了。
    acmore
        60
    acmore  
       2021-06-07 17:06:43 +08:00   ❤️ 1
    楼主在经历了 “古板” 语言的摧残之后见到了比较现代化的写法很高兴可以理解,但是如果你了解其他的语言也可以问:“为什么不用 C#/Go” 等一系列不可能有标准答案的问题。但回答也简单,“没有为什么,没人拦着你用”。

    软件工程是一门专有学科,其中语言的比重恰恰是极低的,既然 Java 好招人就用 Java 写,正如 C# 少见诸 JD 一样。如果真的喜欢高效和灵活地开发后端,Go 和 TS 效率要更高,生态好坑也少, 也可以关注 LTS 的 Java 17, Kotlin 灵活和高效没错,但也没有到成为银弹的高度。
    DOLLOR
        61
    DOLLOR  
       2021-06-07 17:21:31 +08:00
    因为写 Java 的 leader 看不懂。
    yike47
        62
    yike47  
       2021-06-07 17:51:57 +08:00
    以稳为准,团队开发的情况下,提交了几个 Lambda 表达式都会问这个有没有问题
    RicardoY
        63
    RicardoY  
       2021-06-07 18:07:35 +08:00
    俺就在用,跟现有的 Java8 项目完全无痛集成。其实主要是看 leader 对这种新技术的态度如何,先在边缘服务上试点,然后推广到核心服务,有测试覆盖,使用 kt 不会遇到什么阻力的。
    kingfalse
        64
    kingfalse  
       2021-06-07 18:11:43 +08:00 via Android
    我是后端跟爬虫一直在用
    dilu
        65
    dilu  
       2021-06-07 18:29:59 +08:00
    不是语言好就用的人多,参考 rust,性能优,有范型,无 gc,结果不也是不温不火
    chendy
        66
    chendy  
       2021-06-07 18:50:44 +08:00
    公司项目老老实实 java,自己玩 kt
    毕竟要考虑维护和招人
    shihty5
        67
    shihty5  
       2021-06-07 18:59:34 +08:00
    @zoharSoul 上海黄浦区中海国际中心
    cmdOptionKana
        68
    cmdOptionKana  
       2021-06-07 19:05:31 +08:00
    @dilu 相反 Go 被语法爱好者狂喷,从很多角度都可以喷 Go 语法倒退,特性少要啥没啥,结果却大火。
    thetbw
        69
    thetbw  
       2021-06-07 19:24:39 +08:00
    @fewok kotlin 写起来速度个人感觉还是比 java 快的,虽然编译起来有点慢。而且代码可以看起来更简洁,尤其是使用了协程
    newmlp
        70
    newmlp  
       2021-06-07 19:38:31 +08:00
    出了问题你负责?
    Huelse
        71
    Huelse  
       2021-06-07 20:04:21 +08:00
    kotlin 少,那 scala 做后端的也少,除了大数据的
    levelworm
        72
    levelworm  
       2021-06-07 20:05:21 +08:00
    @Jooooooooo 这个我觉得要比 if else 写在外头的更直观啊,和三目操作符不一样。这个更接近口语了。不过就是 if else 的部分不能太长,否则一溜看下来也不舒服。
    fewok
        73
    fewok  
       2021-06-07 20:45:18 +08:00
    @thetbw 书写效率,不好做对比,因为没有质的变化,只能说取决熟悉程度(比如我 java 就非常快)。但你不写单测嘛?不执行下看看运行情况嘛?代码不过 CI\CD 嘛?
    Mystery0
        74
    Mystery0  
       2021-06-07 21:28:11 +08:00 via Android
    举一点例子:我司用 Arthas 来诊断服务的状态,偶尔还用在线 debug,对使用 Java 写的服务来说简直完美,对我用 kt 写的服务来说直接爆炸。后端不喜欢用 kt 的一个原因应该是配套的生态还是主要支持 Java 的吧
    junbaor
        75
    junbaor  
       2021-06-07 21:31:30 +08:00
    无意间打开了 okhttp 代码已经换成了 kotlin, 我司基础框架也是用 kotlin 做的,该上车上车,问题不大。
    matrix67
        76
    matrix67  
       2021-06-07 21:39:17 +08:00
    之前就是有提出的 worse is better .
    Leee
        77
    Leee  
       2021-06-07 22:14:56 +08:00
    歪个楼,也没见有人用 dart 来写后端的哈哈哈哈哈
    abc612008
        78
    abc612008  
       2021-06-07 23:36:52 +08:00
    我以前的公司整个后端都是完全 kotlin 写的。
    Muyiafan
        79
    Muyiafan  
       2021-06-08 08:45:27 +08:00
    因为只有你会
    yibo2018
        80
    yibo2018  
       2021-06-08 09:39:59 +08:00
    我前上司就特别迷 kottlin
    其实我有时候很不理解这种东西,过来过去不就是换个语法糖,有必要吗?
    我对各种语言语法的变化真是深恶痛绝,一样的操作非要搞 10 种 8 种写法,效率却没有多大的变化
    我也承认语法也是有研究价值的,但是我觉得不如研究其他的更好
    Gleven
        81
    Gleven  
       2021-06-08 11:33:58 +08:00
    @yazinnnn 我们团队已经用过 vert.x+kotlin 的组合,不要太爽,完美解决回调地狱的问题
    HangoX
        82
    HangoX  
       2021-06-08 14:14:27 +08:00
    如果一个代码运行得好好的为啥要改
    THESDZ
        83
    THESDZ  
       2021-06-09 09:47:53 +08:00
    @MarkLeeyun # 永远不要高估团队内开发人员的水平,也不要低估沟通的成本.
    rachel1307
        84
    rachel1307  
       2021-08-29 11:31:13 +08:00
    Java 转 Kotlin 了(不过也是大差不差) 最近有打算看看机会的兄弟姐妹可以丢我简历!!

    Global Fintech 跨境支付 D+轮了 核心团队在扩招~
    10 7-8 5 节奏 市区马当路

    Email: [email protected]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5814 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.