Kotlin 2.0.0 正式版发布了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fuhanfeng
V2EX    Kotlin

Kotlin 2.0.0 正式版发布了

  •  
  •   fuhanfeng 2024-05-22 10:55:25 +08:00 10362 次点击
    这是一个创建于 572 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://kotlinlang.org/docs/whatsnew20.html

    GPT-4o 的总结:

    Kotlin 2.0 亮点

    1. K2 编译器

      • 稳定:默认用于所有平台,性能显著提升。
      • 性能:编译了 1000 万行代码,测试了 18000 开发者和 80000 项目。
    2. IDE 支持

      • 新版 Kotlin 插件捆绑在 IntelliJ IDEA 和 Android Studio 中。
    3. Gradle 集成

      • 新 DSL:用于多平台项目的实验性编译器选项配置。
      • Compose 插件:增强对 Jetpack Compose 的支持。
    4. Lambda 函数

      • invokedynamic:生成更小的二进制文件,但 lambda 不可序列化。
    5. Kotlinx-metadata-jvm 库

      • 稳定版本,提供读取和修改 JVM 二进制文件元数据的 API 。
    6. Kotlin/Native 增强

      • GC 监控:在 Apple 平台上改进垃圾回收性能监控。
      • 方法冲突解决:改进与 Objective-C 方法的冲突处理。
    7. Kotlin/Wasm

      • 支持命名导出和无符号原始类型的 @JsExport 函数。
    8. 智能类型转换

      • 改进 ifwhenwhile 块中的智能类型转换,减少手动类型断言。

    Kotlin 2.0.0 语言层面没有新特性,但是引入 K2 编译器,提高了性能。

    想问一下大家上海/杭州有用 Kotlin 做服务端的公司吗?

    第 1 条附言    2024-05-23 19:29:55 +08:00
    51 条回复    2024-08-08 16:25:07 +08:00
    smallboy19991231
        1
    smallboy19991231  
       2024-05-22 11:04:55 +08:00
    是和 Java 似的哪言
    superchijinpeng
        2
    superchijinpeng  
       2024-05-22 11:05:16 +08:00
    nice

    坐标苏州, to G 公司, 所有服务全是 Kotlin, 包括各种 Flink 、Spark Jar 任务, 摸鱼时间大大增加
    jaguar1982ssss
        3
    jaguar1982ssss  
       2024-05-22 11:09:27 +08:00
    https://plugins.jetbrains.com/plugin/24379-tencent-cloud-ai-code-assistant
    这个插件做 Kotlin 的 AI 代码生成效果不错,还是免费的。
    javak
        4
    javak  
       2024-05-22 11:10:10 +08:00 via iPhone
    ide 得支持还没跟上,还要再等一等才能用
    Leviathann
        5
    Leviathann  
       2024-05-22 11:11:06 +08:00
    听说 google 用 java 做的 server 的组很多都转向了 kotlin
    以前用 c++的转向了 go
    tuokamuta
        6
    tuokamuta  
       2024-05-22 11:12:01 +08:00
    Scala!!!!!!!!
    weeei
        7
    weeei  
       2024-05-22 11:16:49 +08:00
    @Leviathann kotlin 的服务端有没有 killer app ?
    fuhanfeng
        8
    fuhanfeng  
    OP
       2024-05-22 11:19:17 +08:00
    @smallboy19991231 #1 有些类似,都可以运行在 JVM 上,也支持和 Java 混编

    @superchijinpeng #2 toG 能做到所有服务都是 Kotlin ,很赞啊

    @Leviathann #5 昨天还看到说 Android 官方支持 Kotlin Multiplatform
    https://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html
    xianyv
        9
    xianyv  
       2024-05-22 11:21:26 +08:00
    我先试试 Kotlin2.0.0 的 JetpackCompose 好不好用
    lisongeee
        10
    lisongeee  
       2024-05-22 11:22:08 +08:00
    我想知道 compose 1.7 啥时候发布,compose 1.6 的拖拽有元素位置错乱的问题

    https://github.com/Calvin-LL/Reorderable/issues/27
    chendy
        11
    chendy  
       2024-05-22 11:22:49 +08:00
    回想起上次用 kt 已经是七年前的事情了
    语法特性很棒,null-safe 和 unmutable 然我受益良多,但是 IDE 很卡电脑很热,于是放弃至今

    好用,好玩,但是干活过日子我还是选择 java
    qinfengge
        12
    qinfengge  
       2024-05-22 11:24:31 +08:00
    Kotlin 服务端入门的教程大佬们有没有啊,我想试试
    kuanat
        13
    kuanat  
       2024-05-22 11:26:57 +08:00   1
    写 Kotlin 可比写 Java 爽太多了,等 LSP 和 IDE 跟上,体验还会更好。
    Leviathann
        14
    Leviathann  
       2024-05-22 11:29:24 +08:00
    @weeei 图省事直接用 spring boot 就行 官方也有自己维护的 ktor

    springboot quarkus(vert.x) jooby javalin 都有对 kotlin 的支持
    fuhanfeng
        15
    fuhanfeng  
    OP
       2024-05-22 11:31:57 +08:00
    @javak #4 K2 是可以选了,但是 Language 和 Api 还只能选到 1.9

    @weeei #7 Kotlin 本身支持和 Java 混编,例如 Spring 也是支持 Kotlin

    @chendy #11 如果是 7 年前用,那现在差别还是蛮大的,K2 之后 IDEA 应该好很多了,不会很卡
    fuhanfeng
        16
    fuhanfeng  
    OP
       2024-05-22 11:37:13 +08:00
    @qinfengge #12 可以试一下 https://hyperskill.org/tracks/69

    如果要和 Java 混编,用 Spring Boot 的,可以用 https://start.spring.io/

    生成一个 Kotlin 的项目,然后把配置复制一下就行,立马可以跑起来
    hepin1989
        17
    hepin1989  
       2024-05-22 12:24:25 +08:00
    Java 21 比他 Kotlin 也就少了个 val 等于,不如我 Scala 3 香
    hronro
        18
    hronro  
       2024-05-22 12:54:44 +08:00 via Android
    有模式匹配了吗
    zywu9726
        19
    zywu9726  
       2024-05-22 13:10:36 +08:00
    @hepin1989 kotlin 的 null-safe 好用啊 Java21 一样到处都是 null ,虽然 Optional 能解决一部分,但不是语法层面的,写起来还是难受。
    另外还有很重要的一点,kotlin 对于函数式编程的支持要远大于 java ,java 的 lambda 写起来太繁琐,kotlin 的语法糖很甜。
    SoloCompany
        20
    SoloCompany  
       2024-05-22 13:27:35 +08:00 via iPhone
    因为抱着 checked exception 不肯放弃,java 的 lambda 和 stream api 就是天生残废,不知道 2024 的今天是否能有所改善
    SoloCompany
        21
    SoloCompany  
       2024-05-22 13:30:57 +08:00 via iPhone
    java 应该引入一个 suppress annotation 让编译器允许 lambda 抛出的 checked exception 只污染外部方法签名
    fuhanfeng
        22
    fuhanfeng  
    OP
       2024-05-22 13:43:40 +08:00
    @hepin1989 #17 Kotlin 之于 Java ,最大的好处还是 Null safety ,从语言层面去解决这个问题。

    @hronro #18 具体指的是什么?

    @SoloCompany #20 Java 的 lambda 和 steam 更像是语法糖
    stdying
        23
    stdying  
       2024-05-22 13:56:33 +08:00
    @hepin1989 Scala3 还有项目用吗
    zhady009
        24
    zhady009  
       2024-05-22 14:06:25 +08:00 via iPhone
    @fu82581983 扩展函数、重载操作符、DSL 、主构造函数、参数默认值、灵活好用的线程操作 API 等等 反正我是一点不想写 Java 了
    fuhanfeng
        25
    fuhanfeng  
    OP
       2024-05-22 14:17:00 +08:00
    @zhady009 #24 有人问我 Kotlin 比 Java 语法上哪里好,我一下子还想不起来,你说的这些都是优势,而且比 Java 的类型推导也更强大
    lonenol
        26
    lonenol  
       2024-05-22 14:36:08 +08:00
    @fu82581983 我比较喜欢的是 1. 集合相关的操作,完爆 stream 2. 扩展函数 3. 字符串模版, 虽然 jdk21 也引入了字符串模版的预览版,不过论好用,差了 kotlin 八条街
    tangqiu0205
        27
    tangqiu0205  
       2024-05-22 14:39:52 +08:00
    @qinfengge #12 JB 家的 Ktor 也可以看看,https://ktor.io/
    tuokamuta
        28
    tuokamuta  
       2024-05-22 15:46:00 +08:00
    我 Scala 好羡慕他们有有钱爹啊

    Tips: Scala 3.5.0-RC 发布了!!!
    fuhanfeng
        29
    fuhanfeng  
    OP
       2024-05-22 16:02:02 +08:00
    @tuokamuta #28 哈哈,有两个爹
    luoshuimumu
        30
    luoshuimumu  
       2024-05-22 16:11:32 +08:00
    官方支持归支持 但是你们真的会用 kotlin 写 spring 吗??上生产的那种
    zhywang
        31
    zhywang  
       2024-05-22 16:17:31 +08:00
    上次用 kotlin 写后端已经是 5 年前了,我的评价是 kotlin 就是加足了语法糖的 java ,甜
    fuhanfeng
        32
    fuhanfeng  
    OP
       2024-05-22 16:28:30 +08:00
    @lonenol #26 Kotlin 给人的感觉更现代,更符合人的直觉。

    @luoshuimumu #30 t/1025262 参考这个帖子,用的人还是不少的,不过 Kotlin 在移动端使用比例大,服务端的确很少

    @zhywang #31 语法特性的确很多,新出来的语言除了 Go ,其它语言也差不多,包括 Rust 特性非常多,不过日常编码其实用得不多,但是用到的时候会觉得比较优雅
    lonenol
        33
    lonenol  
       2024-05-22 18:41:15 +08:00
    @luoshuimumu 我们已经上了,体验良好,不过是混用,希望写 Java 的继续写 Java
    Jirajine
        34
    Jirajine  
       2024-05-22 18:59:17 +08:00
    @kuanat kotlin 就别想 LSP 了,jb 为了卖自家的 IDE 不可能提供支持。
    kuanat
        35
    kuanat  
       2024-05-22 19:45:14 +08:00
    @Jirajine #34

    官方早就说过不想做 LSP 了,之前我试了一段时间那个第三方做的 LSP ,差得还是有点远。所以我说希望 LSP 跟 IDE 能跟上,达到八成水平,支持我用 neovim/VS Code + LSP 就很满意了。这个事情上有得选是第一步。
    superchijinpeng
        36
    superchijinpeng  
       2024-05-22 19:57:02 +08:00
    Loserzhu
        37
    Loserzhu  
       2024-05-22 22:56:34 +08:00
    @superchijinpeng 不会是新区那边的某达科技吧?做安防 监控 视讯的
    luoshuimumu
        38
    luoshuimumu  
       2024-05-23 09:37:47 +08:00
    @lonenol #33 新项目还是老项目呢?我这边的 java 的也是觉得没有特别切过去的理由

    @superchijinpeng created 4 months ago ,新项目? java 占比这么低是没有复用公司现有的 java 脚手架之类的?
    @fu82581983 #32 确实移动端用的多,我的移动端朋友也有少数不会 kotlin 的,依旧混得很好=。=
    superchijinpeng
        39
    superchijinpeng  
       2024-05-23 10:35:06 +08:00
    @Loserzhu 不是
    superchijinpeng
        40
    superchijinpeng  
       2024-05-23 10:36:13 +08:00
    @luoshuimumu #38 随便截了一个项目, 21 年开始 all in kt 了
    abc612008
        41
    abc612008  
       2024-05-23 11:57:18 +08:00 via Android   2
    Kotlin 是我用过的语法上最优雅的语言,我觉得在这方面吊打 java 是没啥问题的。
    98b984275a6b4591
        42
    98b984275a6b4591  
       2024-05-23 13:11:50 +08:00
    @superchijinpeng 贵司还招人吗
    boris1993Jr
        43
    boris1993Jr  
       2024-05-23 14:48:14 +08:00 via iPhone
    我上家公司 StubHub 就在用 Kotlin 写后端,这是一家工作体验非常好的公司
    可惜,上海整个办公室全被裁了
    fuhanfeng
        44
    fuhanfeng  
    OP
       2024-05-23 15:19:59 +08:00
    @abc612008 #41 是的,而且我觉得整个语言设计风格很统一,算是后起之秀的优势

    @boris1993Jr #43 我还专门从 BOSS 上搜了一下“Kotlin 后端”,寥寥无几,最多也只是 Java 后端里有个标签是 Kotlin ,主要还是 Android 开发
    Jirajine
        45
    Jirajine  
       2024-05-23 16:04:20 +08:00
    @kuanat 是的,kotlin 只能用 jb 自家的 ide 是最大的缺点,被迫用多个 IDE ,每个都有不同的配置/插件/快捷键是很糟糕的体验。
    qviqvi
        46
    qviqvi  
       2024-05-23 18:52:38 +08:00
    start.spring.io 生成的 kotlin 项目不用 kotlin sdk 也能运行,是不是就不用按照 sdk 了?
    netabare
        47
    netabare  
       2024-05-23 18:56:35 +08:00 via Android
    终于更新大版本了,希望之后可以看到一些语言上的更新
    fuhanfeng
        48
    fuhanfeng  
    OP
       2024-05-23 19:33:36 +08:00
    @qviqvi 是的,不用单独装 kotlin sdk ,IDEA 自带,如果是编译也会通过 kotlin 插件编译成字节码

    @netabare 语言特性应该得等到 2.1.0 之后了,不过其实特性已经足够多了,编译器能更快,开发体验会更好
    netabare
        49
    netabare  
       2024-05-25 03:13:01 +08:00 via Android
    @fu82581983 主要是 when 语句,在 Java 实装了模式匹配的现在,显得有点过时了。直接影响就是某些算法到现在都只能用 visitor 模式来写,非常不方便。

    真要说的话 Kotlin 的语法确实设计的非常合理也很精简,不仔细想甚至想不出有啥非常欠缺的功能。像是??=这种语法糖其实也不是那么重要。
    Belmode
        50
    Belmode  
       2024-06-29 22:32:07 +08:00
    本来还以为 2.0 能上这个几个功能的
    Static extensions
    Collection literals
    Name-based destructuring
    Context receivers
    Explicit fields

    感觉有点遗憾了,不知道后面哪个版本才能上线
    aisonren
        51
    aisonren  
       2024-08-08 16:25:07 +08:00
    怎么觉得 kotlin 有一点点像 C#
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1112 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 17:46 PVG 01:46 LAX 09:46 JFK 12:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86