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

Kotlin 2.0.0 正式版发布了

  •  
  •   fu82581983 · 178 天前 · 7780 次点击
    这是一个创建于 178 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条附言  ·  177 天前
    51 条回复    2024-08-08 16:25:07 +08:00
    smallboy19991231
        1
    smallboy19991231  
       178 天前
    是和 Java 類似的哪個語言嗎
    superchijinpeng
        2
    superchijinpeng  
       178 天前
    nice

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    感觉有点遗憾了,不知道后面哪个版本才能上线
    aisonren
        51
    aisonren  
       100 天前
    怎么觉得 kotlin 有一点点像 C#
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:46 · PVG 03:46 · LAX 11:46 · JFK 14:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.