fuhanfeng
V2EX  ›  Kotlin

Kotlin 2.0.0 正式版发布了

  •  
  •   fuhanfeng · May 22, 2024 · 11305 views
    This topic created in 723 days ago, the information mentioned may be changed or developed.

    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 做服务端的公司吗?

    Supplement 1  ·  May 23, 2024
    51 replies    2024-08-08 16:25:07 +08:00
    smallboy19991231
        1
    smallboy19991231  
       May 22, 2024
    是和 Java 類似的哪個語言嗎
    cutiechi
        2
    cutiechi  
       May 22, 2024
    nice

    坐标苏州, to G 公司, 所有服务全是 Kotlin, 包括各种 Flink 、Spark Jar 任务, 摸鱼时间大大增加
    jaguar1982ssss
        3
    jaguar1982ssss  
       May 22, 2024
    https://plugins.jetbrains.com/plugin/24379-tencent-cloud-ai-code-assistant
    这个插件做 Kotlin 的 AI 代码生成效果不错,还是免费的。
    javak
        4
    javak  
       May 22, 2024 via iPhone
    ide 得支持还没跟上,还要再等一等才能用
    Leviathann
        5
    Leviathann  
       May 22, 2024
    听说 google 用 java 做的 server 的组很多都转向了 kotlin
    以前用 c++的转向了 go
    tuokamuta
        6
    tuokamuta  
       May 22, 2024
    Scala!!!!!!!!
    weeei
        7
    weeei  
       May 22, 2024
    @Leviathann kotlin 的服务端有没有 killer app ?
    fuhanfeng
        8
    fuhanfeng  
    OP
       May 22, 2024
    @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  
       May 22, 2024
    我先试试 Kotlin2.0.0 的 JetpackCompose 好不好用
    lisongeee
        10
    lisongeee  
       May 22, 2024
    我想知道 compose 1.7 啥时候发布,compose 1.6 的拖拽有元素位置错乱的问题

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    感觉有点遗憾了,不知道后面哪个版本才能上线
    aisonren
        51
    aisonren  
       Aug 8, 2024
    怎么觉得 kotlin 有一点点像 C#
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3003 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 198ms · UTC 02:06 · PVG 10:06 · LAX 19:06 · JFK 22:06
    ♥ Do have faith in what you're doing.