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

kotlin 做服务端开发靠谱吗?

  •  
  •   jjshare · 2019-10-24 23:05:08 +08:00 · 10548 次点击
    这是一个创建于 1617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己常用 PHP ~ golang 刚出来的时候,使用过一段时间,累不觉爱~

    最近自己捣鼓一个客户端,学了一下 kotlin 感觉非常爽~

    因为 kotlin 完全兼容 Java,所以在想 kotlin 做服务端开发的话,是不是靠谱?有实践过的朋友,来讨论一下~

    40 条回复    2020-10-16 18:41:31 +08:00
    fansangg
        1
    fansangg  
       2019-10-24 23:13:25 +08:00 via iPhone
    当然可以,就是没有人用,一般都是写 Android 的在用,而且也是小部分写 Android 的在用。
    hyrepo
        2
    hyrepo  
       2019-10-24 23:22:11 +08:00 via iPhone
    我们组目前就是,基本上是当做一个更好用的 Java 在用,反正 Java 能用的它也能用,实在不行的情况甚至可以直接在里面写 Java,何乐而不为呢?
    qwertyegg
        3
    qwertyegg  
       2019-10-25 03:09:12 +08:00
    靠谱!所有 java 的 library 拿来就能用

    语法糖比 Java 更好用
    LokiSharp
        4
    LokiSharp  
       2019-10-25 07:28:11 +08:00 via iPhone
    不靠谱,找不到人接盘的
    waising
        5
    waising  
       2019-10-25 07:40:57 +08:00 via iPhone
    前公司 2 年前就开始用来写服务了
    sagaxu
        6
    sagaxu  
       2019-10-25 07:57:54 +08:00 via Android   ❤️ 10
    2017 年 Q1,项目中开始引入 Kotlin
    2017 年 Q2,新增文件和有变更的老文件都用 Kotlin
    2017 年 Q3,核心 api 从 tomcat 往 vertx 重构
    2017 年 Q4,除了自动生成,已无一行 JAVA 代码
    2018 年 Q1,核心 API 全部重构到 vertx
    2018 年 Q4,100% vertx,去处了 tomcat
    2019 年 Q1,开始引入 Kotlin coroutine
    2019 年 Q4,大部分 API 重构成了 coroutine

    并非个人玩具项目,日均请求在 10 亿以上

    spring ioc 对 Kotlin 有特别的特性,vertx 跟 coroutine 的集成丝般顺滑,就像在用 Go 一样。不仅仅是兼容 JAVA,而是某些 JAVA 库,一些特性只支持 Kotlin,反而 JAVA 却用不了。
    by73
        7
    by73  
       2019-10-25 08:21:55 +08:00 via Android
    kt 还不错,
    murmur
        8
    murmur  
       2019-10-25 08:28:54 +08:00
    靠谱但是没必要,因为 spring mvc 那套太成熟了,有一点语法不爽架不住咱 ide 牛逼啊
    lastpass
        9
    lastpass  
       2019-10-25 08:32:07 +08:00 via Android
    服务端使用 scala 相对 kotlin 要多。
    Rwing
        10
    Rwing  
       2019-10-25 08:33:09 +08:00
    如果喜欢的 kotlin 的语法,可以尝试一下 C#
    dilu
        11
    dilu  
       2019-10-25 08:38:22 +08:00 via Android
    语言层面靠谱,生态呢?你走了谁接盘?遇到问题你搜都搜不到解决方案
    sty
        12
    sty  
       2019-10-25 08:46:01 +08:00 via Android
    @sagaxu 哪些 Java 库特性,Java 用不了,kotlin 能用?
    liuzhedash
        13
    liuzhedash  
       2019-10-25 08:51:51 +08:00
    靠谱,你就把它当成 java 就行了
    rockyou12
        14
    rockyou12  
       2019-10-25 08:55:31 +08:00 via Android
    我自己项目和公司的小部分代码就在用,完全没问题,不过大部分项目确实也没太大必要上就是了
    lbp0200
        15
    lbp0200  
       2019-10-25 09:05:58 +08:00 via iPhone
    不使用 Java 的,都是异教徒
    samwalt
        16
    samwalt  
       2019-10-25 09:14:01 +08:00
    @sagaxu 什么项目,能说下吗?
    PDX
        17
    PDX  
       2019-10-25 09:16:46 +08:00
    @sagaxu 求分享
    youngxhui
        18
    youngxhui  
       2019-10-25 10:06:48 +08:00 via Android
    靠谱啊,spring5.2 的官方文档示例代码都是 java 和 kotlin 两种语言了
    deming
        19
    deming  
       2019-10-25 10:44:25 +08:00
    @sagaxu 老哥,能否做点 kotlin 的分享啊,或者贴个博客,感觉你在这方面的实战经验挺丰富。我发现只要有 kotlin vertx 的话题,里边评论都有你。哈哈
    lee015
        20
    lee015  
       2019-10-25 11:33:06 +08:00 via Android
    编译出来就是 Java 代码没啥大问题,语法糖是真的香
    loshine1992
        21
    loshine1992  
       2019-10-25 11:38:16 +08:00
    Kotlin 是大势所趋
    jjshare
        22
    jjshare  
    OP
       2019-10-25 12:41:52 +08:00
    @fansangg
    @hyrepo
    @qwertyegg
    @waising
    @sagaxu
    @by73
    @liuzhedash
    @rockyou12
    @youngxhui
    @lee015
    @loshine1992
    手动圈一遍,谢谢各位的观点~

    @waising 老哥公司还挺先进,我是最近自己想写 app,学了一下,感觉很赞

    @sagaxu 2017 年 Q2 季度到现在就没有正式工作过了,之前工作时大并发场景比较多,调研了 golang,但是当时要自己造的轮子比较多,就 nginx+lua+php 撸起来了~那个实际 kotlin 还没有听说过,也就没有调研过~
    @dilu kotlin 按照官方的说法,是可以完全接盘 jvm 生态的~

    @rockyou12 是的,现在自己也没有工作,偶尔想写个啥,PHP 直接撸了~想 kotlin 写服务端,就是感觉可以这么干,所以发上来问问~

    @lbp0200 PHP 是最好的语言
    @loshine1992 哈哈哈,kt 一统三届~
    heiheidewo
        23
    heiheidewo  
       2019-10-25 12:53:13 +08:00
    生态上讲,应该用 golang
    Kasumi20
        24
    Kasumi20  
       2019-10-25 14:30:42 +08:00
    Kotlin 是世界上最好的语言

    Kotlin + Spring 写的小网站"Youtube 在线解析", 求 star

    github.com/develon2015/Youtube-dl-REST
    qiyuey
        25
    qiyuey  
       2019-10-25 15:21:14 +08:00
    讲道理是很靠谱的
    huanggan
        26
    huanggan  
       2019-10-25 16:05:50 +08:00
    有什么用呢,最后还是编译成 java,就想 typescript 对于 js
    lagoon
        27
    lagoon  
       2019-10-25 16:13:52 +08:00
    那个,看到许多人说走了没人接盘的问题。
    但 kotlin 和 java 区别那么大吗?
    我看到许多 Android 码农,都是直接项目上用 kotlin 写,都不需要去学。有疑问的地方查一下就好。
    hantsy
        28
    hantsy  
       2019-10-25 16:22:33 +08:00
    Spring 5 开始对 Kotlin 官方支持,加入很多 Kotlin 特有 DSL 简化 Spring 开发,如 BeanDefitionDSL,FunctionalRouteDSL 等,这样 Spring 项目 Java 转到 Kotlin,不仅仅是简单的语言转换 。

    参考: https://github.com/hantsy/angular-spring-reactive-sample/tree/master/server-kotlin
    hantsy
        29
    hantsy  
       2019-10-25 16:26:35 +08:00
    Spring 5.2 开始支持 Kotlin Coroutines,不过我还不熟悉,
    参考: https://github.com/hantsy/spring-kotlin-coroutines-sample
    realkenshinji
        30
    realkenshinji  
       2019-10-25 18:52:51 +08:00 via iPhone
    可以的,看看 ktor
    xlui
        31
    xlui  
       2019-10-25 20:22:48 +08:00 via Android
    不仅可以,还很香
    diferent
        32
    diferent  
       2019-10-25 20:47:59 +08:00
    已经用了,很久了, 现在遇到一个 Java 项目 , 就先添加 Kotlin 支持先.
    别人用啥我不管, 但是我肯定写 Kotlin.
    jjshare
        33
    jjshare  
    OP
       2019-10-25 21:36:08 +08:00
    @heiheidewo 哈哈,负责人的说,golang 没有生态

    @Kasumi20 手动赞
    @qiyuey 我也觉得靠谱,不过没有实操过
    @realkenshinji 好的,谢谢

    @xlui 吃香喝辣的请带上我
    @hantsy 专业,优秀,手动大拇指

    @diferent 不会 Java 的,表示 kt 大法好
    @lagoon 人生虽然有很多盘要接,但是未尝不是好盘啊,哈哈,要有接盘的能力,不要有接盘的心理包袱~
    changdy
        34
    changdy  
       2019-10-25 21:37:33 +08:00
    自己也用 kotlin 写过后端项目,不过仍旧要泼一下冷水了
    kotlin 和 java 后端最大的不同是视角不同 比如 data class 的设计理念:
    * 对于 java 后端来说 data class 的构造器不太妥当,基本上都要初始化 null 反而很不优雅
    * data class 不支持继承 ,这点更棘手

    我没用 kotlin 做过大项目, 不过目前来看其实 kotlin 语言的初衷并不是以服务端为主.
    fansangg
        35
    fansangg  
       2019-10-25 22:17:18 +08:00
    @lagoon 你遇到的可能是已经用琐碎的时间看了很多遍语法了,我 17 年刚上手的时候用 kt 写项目,不会写的都是用 java 写一遍然后贴过来转成 kotlin 的,看看转成啥样的然后照葫芦画瓢
    diferent
        36
    diferent  
       2019-10-25 22:50:02 +08:00
    @changdy
    说明你还没有掌握 Kotlin ,
    data class 只是 kotlin 里的一种具体表现,适用于一部分场景,
    Java 也是一样的. 只不过 Java 因为自身的语法限制,后来才形成公约式的 getter/setter 以及 builder, 本身上都是语法劣势而不得已的妥协而已.
    kotlin 的语法不存在这些劣势,所以没有必要按照 Java 的思路去设计序列化对象
    现在我所有的 entity 和 DTO 都用 kotlin 去写的
    现在除非是打开别人的工程, 不然都不会安装 lombok 插件.
    YUyu101
        37
    YUyu101  
       2019-10-25 23:45:18 +08:00
    我刚看到也是感觉很爽,各种语法糖 apply let 什么的还有协程,突然就想起了隔壁 c#。
    lagoon
        38
    lagoon  
       2019-10-26 08:20:11 +08:00
    @fansangg 哪有这么夸张。除非是一个学 java,就只学 java,对其他语言不屑一顾的人。否则,新的语言,太多类似的概念、写法。自然而然就会比较容易上手。
    至于某些从事 java,就对其他语言一直看都不看一眼的,我觉得是不对的(真的天天忙到 996 除外)。
    changdy
        39
    changdy  
       2019-10-26 08:27:03 +08:00
    @diferent
    ---> data class 只是 kotlin 里的一种具体表现,适用于一部分场景,
    ---< 我觉得 java 里面常见的 entity 之类的 应该都是可以使用 data class 替换的. 但是目前我却只能 继承和 data class 二选一 并且官方也注意到了 data class 不能继承的窘境 准备开始改善了
    ---> kotlin 的语法不存在这些劣势,所以没有必要按照 Java 的思路去设计序列化对象
    ---< `我没有,我不是,你别胡说` 我只是觉得 kotlin 最早的设计角度并没有放在 后台服务器上
    ---> 现在我所有的 entity 和 DTO 都用 kotlin 去写的
    ---< 很想知道 需要继承的时候是怎么做的... 放弃继承吗? 还是放弃 data class

    其实 我也很喜欢 kotlin 这个语言. java 太罗嗦了, 包括提到的 getter/setter 的确让人不爽,但并不代表这门语言在一些情况下是完美的, 我也只是站在一个后端开发的角度讲出我的一些痛点
    no13bus
        40
    no13bus  
       2020-10-16 18:41:31 +08:00
    老哥还在玩 kotlin 吗?加个微信聊聊撒. no13bus
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2566 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1003ms · UTC 15:56 · PVG 23:56 · LAX 08:56 · JFK 11:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.