V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Ayanokouji
V2EX  ›  程序员

JDK 23 发布了

  •  
  •   Ayanokouji · 96 天前 · 13339 次点击
    这是一个创建于 96 天前的主题,其中的信息可能已经有所发展或是发生改变。
    此版本是非 lts 版本,主要特性是决定了 zgc 发展方向

    本帖不欢迎刷 jdk8 梗

    Features

    455: Primitive Types in Patterns, instanceof, and switch (Preview)
    466: Class-File API (Second Preview)
    467: Markdown Documentation Comments
    469: Vector API (Eighth Incubator)
    473: Stream Gatherers (Second Preview)
    471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
    474: ZGC: Generational Mode by Default
    476: Module Import Declarations (Preview)
    477: Implicitly Declared Classes and Instance Main Methods (Third Preview)
    480: Structured Concurrency (Third Preview)
    481: Scoped Values (Third Preview)
    482: Flexible Constructor Bodies (Second Preview)

    https://openjdk.org/projects/jdk/23/
    113 条回复    2024-09-20 15:31:34 +08:00
    1  2  
    Creamliu
        1
    Creamliu  
       96 天前 via iPhone
    这个月刚从 jdk8 升级到 jdk21 ,还没上生产。
    huihuiHK
        2
    huihuiHK  
       96 天前   ❤️ 1
    等一波 java8 党
    yolee599
        3
    yolee599  
       96 天前 via Android   ❤️ 1
    jdk8 永远的神,从桌面到安卓再到后台服务,一个版本就够了
    cheng6563
        4
    cheng6563  
       96 天前
    字符串模板还没定稿吗
    chendy
        5
    chendy  
       96 天前
    J8 人不请自来,公司项目,狗都不升,java7 主流,java8 先进,java11 动不动就 build 报错没人管,java17 的项目已经凉了

    下班回去有空,自己的小玩具升级一手玩一玩就行了
    wxw752
        6
    wxw752  
       96 天前   ❤️ 12
    各位是真不审题啊,OP 说了本帖不欢迎刷 jdk8 梗。

    现在那些中间件稍微新点的版本早不支持 8 了,你们是怎么够用的
    ted05
        7
    ted05  
       96 天前
    我已经用上 17 了
    Mogugugugu
        8
    Mogugugugu  
       96 天前
    to B 的项目已经开始慢慢的升 17 了,to G 的项目还不行,还得再等几年。
    Leexiaobu
        9
    Leexiaobu  
       96 天前
    竟然支持 Markdown 写注释了
    wysnxzm
        10
    wysnxzm  
       96 天前
    把落后挂嘴边的习惯有时候得改改
    twofox
        11
    twofox  
       96 天前
    21 我已经用起来了
    Goooooos
        12
    Goooooos  
       96 天前
    还是等下个 LTS ,这个版本基本都是 Preview
    TanKuku
        13
    TanKuku  
       96 天前 via Android
    @cheng6563 好像是撤销了,没了
    Greendays
        14
    Greendays  
       96 天前
    半年前把公司的项目升级到了 JDK21
    dcsuibian
        15
    dcsuibian  
       96 天前
    能上 21 的我都上 21 了
    L0L
        16
    L0L  
       96 天前
    流的这个好像有点意思
    dragondove
        17
    dragondove  
       96 天前
    感觉改变不大,大部分都是预览特性,zgc 大部分情况表现不如 g1 ,该用 g1 还是用 g1 。markdown 这个感觉是追潮流了,python 的文档之前就支持了 markdown ,不过我个人觉得不是很必要。现在就想着字符串模板什么时候重新设计好,希望不会比 jdk21 上的预览版本差多少。
    jptx
        18
    jptx  
       96 天前
    Vector API 都第八次孵化了
    salmon5
        19
    salmon5  
       96 天前
    可以 java -XX:+UseZGC 用分带 ZGC 了
    Huelse
        20
    Huelse  
       96 天前
    @cheng6563 按这份邮件的意思是想做个更好的设计所以推迟了
    https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html
    salmon5
        21
    salmon5  
       96 天前
    https://github.com/openjdk/jdk/pull/17060 这个“低级”bug 也修复了,从 java8-23
    salmon5
        22
    salmon5  
       96 天前
    @salmon5 #21
    修复的并不完美,应该用\n ,而不是\r\n
    typing
        23
    typing  
       96 天前 via iPhone
    我连 jdk8 都没用过,只记得 jdk 1.42
    ( java 不是我工作/常用语言)
    xubeiyou
        24
    xubeiyou  
       96 天前
    用 17 的路过- - 感觉特么是不是都没人用 17 都是 21 了?
    windghoul
        25
    windghoul  
       96 天前
    @dragondove zgc 对比 g1 的数据文章有吗大佬
    TWorldIsNButThis
        26
    TWorldIsNButThis  
       96 天前 via iPhone
    看了下项目组的 jdk 升 17 的需求已经有人在做了,也就一个点
    fffq
        27
    fffq  
       96 天前
    你发任你发 我用 java8
    yty2012g
        28
    yty2012g  
       96 天前
    @windghoul 我自己使用情况来看。throughput 的影响,大概 ZGC 分代是 4.x%,G1 是 1.x%。延迟的话,不用说肯定是 ZGC ,基本就是 0ms 。footprint 没测过。我这边服务的堆是 8G 的。目前用的是 JDK 22
    SuperManNoPain
        29
    SuperManNoPain  
       96 天前
    生态能及时升级就好了,看样子再过一两年新项目使用 jdk21 基本没啥问题了
    clf
        30
    clf  
       96 天前
    已经 jdk17 了,主要还是看 spring 等的选择。
    zhouhu
        31
    zhouhu  
       96 天前   ❤️ 1
    目前使用 G1 是比较好的,G1 在 latency 、throughput 、footprint 有很好的平衡。追求 throughput 使用 parallel GC ,追求 latency 使用 ZGC 。
    zhouhu
        32
    zhouhu  
       96 天前
    推荐一个博主 tschatzl ,在 oracle 做 gc 优化的,他主要 g1 的优化。
    https://tschatzl.github.io/
    interim
        33
    interim  
       96 天前
    我司的重构项目已经上 jdk21 了
    windghoul
        34
    windghoul  
       96 天前
    @yty2012g 感谢,我们现在全面使用 jdk17 + zgc ,目前表现效果还可以,之后再充分测试一下,有什么推荐的资料看看吗?
    adoal
        35
    adoal  
       96 天前
    @wxw752 中间件……用老版本呗。去年还帮人验收了一个 CentOS 6 + Java 6 + Tomcat 6 的 666 项目。主要是很多地方性、行业性的信息化小公司对 infrastructure 的更新不当回事,而没有技术力量的甲方单位则毫无概念,从来不会提要求。
    Rorysky
        36
    Rorysky  
       96 天前
    @yty2012g 从应用层说,和 gc 的语言没多大区别了(性能上)
    Rorysky
        37
    Rorysky  
       96 天前
    @wxw752 任何产品都有生命周期,对于末期的(或者说只做维护修复 bug )产品不升级才是明智选择,因为从盈利上将已经不值得投入优化了
    wysnxzm
        38
    wysnxzm  
       96 天前   ❤️ 1
    @dragondove #17
    551/35298=0.015
    705/18015=0.039
    minor gc 平均时间 0.02ms 不到
    major gc 平均时间 0.04ms 不到
    注意时间单位是毫秒不是秒,还需要考虑吗少年?
    yty2012g
        39
    yty2012g  
       96 天前
    @windghoul #34 JDK17 的是不分代的 ZGC ,吞吐量的影响会更大一点,我自己实测是 7.x%左右,如果对延迟要求不是特别高,JDK17 建议使用 G1 吧
    yty2012g
        40
    yty2012g  
       96 天前   ❤️ 1
    @Rorysky #36 差不多,在充分预热的情况下,高版本 gc 的吞吐量影响几乎可以忽略不计,像是我在 jdk22 用 G1 ,火焰图基本快看不到 GC 的开销了
    jackmod
        41
    jackmod  
       96 天前
    我们那边也突然开始 17+gradle8+spring3 了
    以前连 spring 都不是,非常古老的玩意
    4xxx
        42
    4xxx  
       96 天前
    j8yyds
    windghoul
        43
    windghoul  
       96 天前
    @yty2012g #39 感谢
    wxw752
        44
    wxw752  
       96 天前
    @adoal #35 我也遇到过这样的公司,一般 HR 描述技术栈比较老,我就说不合适然后挂电话了。
    wxw752
        45
    wxw752  
       96 天前
    @Rorysky #37 to B 真是干不了一点,我怕干几年人干废了。
    zhouhu
        46
    zhouhu  
       96 天前
    @yty2012g 看到很多大佬对 gc 的评论😂
    ZZ74
        48
    ZZ74  
       96 天前
    多少有点 java 程序性能调优的经验,第一条优化建议就是升级 JDK
    cmlx1014
        49
    cmlx1014  
       96 天前
    jdk17 苟个十年再找稳定版本吧。。
    kiroter
        50
    kiroter  
       96 天前
    用 kt 的都 17 了吧
    cslive
        51
    cslive  
       96 天前   ❤️ 1
    别急,springbooot 会出手
    iamwin
        52
    iamwin  
       96 天前
    国内已经死在 java8 了
    storyxc
        53
    storyxc  
       96 天前
    自己用的项目目前在用 17 ,公司这种项目 真的升不动。
    jorneyr
        54
    jorneyr  
       96 天前
    我们项目本来 JDk8 够用,后来使用了 Datagrip 的 MongoDB JDBC 驱动,这个驱动最低要求 JDK 17 ,所以升级到了 JDK 17 。

    最期待的是等 SpringBoot 支持虚拟线程完善后再一次性升级到最新版。
    chenfang
        55
    chenfang  
       96 天前
    @yty2012g #28 问下大佬 ,因为我们业务比较倾向于低延迟,于是测试 ZGC,有时候会 full gc..然后延迟情况很夸张, 增大了内存或者调了一下 ZGC 的相关参数 还是会出现这种情况,

    而且 ZGC 貌似吞吐量对比 G1 会降低不少,很好奇你们没有 full gc 出现么?
    yty2012g
        56
    yty2012g  
       96 天前
    @chenfang ZGC 吞吐量是会下降不少,分代 ZGC 能稍微好点,但是还是比 G1 要差一点。full GC 的问题更大可能性的还是内存泄露的问题吧,既然使用了高版本 JDK ,那就开个 JFR 呗,然后看看到底是哪里的对象没有被回收掉。我这边的服务类似于数据采集,虽然 QPS 高,但是基本都是朝生夕死,基本没有长期存活的对象,所以目前没观察到 full GC 。
    javaisthebest
        57
    javaisthebest  
       96 天前   ❤️ 2
    刷版本号这个臭毛病到底是从哪个语言开始的?

    jdk8 jdk11 jdk21

    搞这三个大版本就差不多得了

    后续的更新全特么那种逗你玩的更新
    beginor
        58
    beginor  
       96 天前
    有没有 jdk6 继续苟活的?
    Rickkkkkkk
        59
    Rickkkkkkk  
       96 天前
    新版本的 java 一个大改进是 gc 时间,其实这一点就应该推动很多人去升级了
    Rever4433
        60
    Rever4433  
       96 天前
    @wxw752 #45 现在银行 toB 虽然对技术要求不多,但是会定期进行漏洞扫描,倒逼我们的技术进行升级。我们已经被迫升级到了 JDK21 。
    ikas
        61
    ikas  
       96 天前
    唯一可惜,字符串模板没了
    Mark24
        62
    Mark24  
       96 天前   ❤️ 1
    JDK 的大版本是 向后兼容么? JDK23 可以兼容 JDK8 ?
    msg7086
        63
    msg7086  
       96 天前
    @javaisthebest 换成 1.8 1.11 1.21 会让你舒服很多吗……
    msg7086
        64
    msg7086  
       96 天前   ❤️ 1
    @Mark24 不完全兼容,我们代码库从 8 升到 17 已经搞了好几个月了,最明显的问题是大量基于 powermock 的测试代码需要重写。
    felixcode
        65
    felixcode  
       96 天前 via Android
    jdk8 加 CentOS7 可以混到延迟退休,谁有意见那就是别的都不稳定,都不是企业级环境
    harry90
        66
    harry90  
       96 天前
    说实话虽然领导想升级 jdk17 但是我不怎么赞成 做了快 10 年的 toB 系统 这玩意动起来吃力不讨好
    devswork
        67
    devswork  
       96 天前
    完了,目前正在用 21 ,还使用了 STR 字符串模板,然后 23 好像没有了字符串模板了,怎么办
    jorneyr
        68
    jorneyr  
       96 天前
    @devswork 目前正在用 21 ,还使用了 STR 字符串模板,然后 23 好像没有了字符串模板了,怎么办。

    这么坑么!
    zhouhu
        69
    zhouhu  
       96 天前
    @jorneyr 本来就不是正式功能吧
    Ayanokouji
        70
    Ayanokouji  
    OP
       96 天前
    @L0L #16 Stream Gatherers 大概率 JDK24 正式发布。
    https://openjdk.org/jeps/485
    hetal
        71
    hetal  
       96 天前
    我们 mysql 都在用 8.4.2 了,J8 的同学还在用 5.7 么~
    dragondove
        72
    dragondove  
       96 天前
    @jorneyr preview 特性,本来就没保证一定是这样的
    dasbn
        73
    dasbn  
       96 天前
    等待 JDK 25 LTS
    yazinnnn0
        74
    yazinnnn0  
       96 天前   ❤️ 1
    @javaisthebest
    不知道是不是从 rust 开始的


    另外, rust 之所以号称编程语言界的原神, 有没有更新频率一致的因素🧐
    yazinnnn0
        75
    yazinnnn0  
       96 天前
    🧐我记得当初 kotlin 用户(还是官方来着?)说 kotlin 1.3 版本语言特性相当于 java 20, 不知道 java 23 的易用性比得上 kotlin1.3 了没
    ShotaconXD
        76
    ShotaconXD  
       96 天前
    还在用 17, 说实话除了语法糖之外, 好像没感觉到太明显的变化. 也可能是市场上大多数的使用场景其实..... you know
    WindProtect
        77
    WindProtect  
       96 天前
    非 lts 没啥好讨论的感觉。
    leegradyllljjjj
        78
    leegradyllljjjj  
       96 天前 via iPhone
    八爷是你们能讨论的吗?别给八阿哥脸上抹黑
    zhouhu
        79
    zhouhu  
       96 天前
    @ShotaconXD GC 方面有很多的优化,不要只是关注语法。😂
    iv8d
        80
    iv8d  
       96 天前
    jdk8 永远的神,从桌面到安卓再到后台服务,一个版本就够了
    RainCats
        81
    RainCats  
       96 天前
    @Mogugugugu ToG 的除非有人搞了 java8 几个大的 bug ,然后才会让升级版本,不然别想了
    RyanPoy
        82
    RyanPoy  
       96 天前
    @javaisthebest 从.net 开始。不是到什么时候出来一个 5.0 。然后 java 就由 1.4 直接到了 5.0 ,然后就直接开始了。
    yazinnnn0
        83
    yazinnnn0  
       96 天前
    @WindProtect
    474: ZGC: Generational Mode by Default
    467: Markdown Documentation Comments

    已经稳定的特性可以讨论一下, 貌似只有一个分代 zgc 和 md 注释

    Vector API (Eighth Incubator)
    这玩意儿咋辣么难产, 都第八次孵化了
    Leviathann
        84
    Leviathann  
       96 天前
    @yazinnnn0 听说在值类型做好之前会一直处于孵化状态
    iintothewind
        85
    iintothewind  
       96 天前
    把 Scala 的 pattern-match ,control flow ,case class 直接抄过来,==代替 equals ,默认不可变集合类型,变量声明默认 final ,

    直接全搬过来就好了,这样一点一点的抄,太慢了。
    GameAuto
        86
    GameAuto  
       96 天前
    多年后端程序员,并没有持续关注 javasdk 版本的习惯,因为我用了三年多 kt 了,前几个项目一直在用 kt1.5 ,目前新项目也准备用 kt2.x 了
    asd999cxcx
        87
    asd999cxcx  
       96 天前
    21 之后的下一个 LTS 是啥?
    Ayanokouji
        88
    Ayanokouji  
    OP
       96 天前
    @asd999cxcx 25, 两年一个 lts
    yohole
        89
    yohole  
       96 天前
    将来要升 JDK 的唯一动力可能是 Spring 的生态最低要求,例如 SpringBoot ,Spring 等几个大框架最新版本最低要求都至少 11 以上了
    Ayanokouji
        90
    Ayanokouji  
    OP
       96 天前
    @yohole SpringBoot3 要求 jdk 最低 17 ,另外 spring boot2 去年已经结束社区维护了
    iamppz
        91
    iamppz  
       96 天前 via iPhone
    刚降回去,升级太麻烦了,很多依赖不支持,字符串模版、文本块都还是预览特性,还是直接 kotlin 混合使用丝滑
    yohole
        92
    yohole  
       96 天前
    @Ayanokouji #90 嗯差不多,单纯升级 JDK 的动力不多,但是升级 Spring 生态的动力相对高点,但是升级 JDK 这个在大中小企业是需要衡量收益和风险的,甚至还要考虑迁移成本,还涉及到运维、部署等等,所以目前主力还是 8
    cyningxu
        93
    cyningxu  
       96 天前 via Android
    你发任你发,我用 java8
    yty2012g
        94
    yty2012g  
       96 天前
    今天下载了 Orcale OpenJDK 23 ,压测了一下。G1 GC 的吞吐量还是比 ZGC 强不少,倒是 Vert.x + Virtual Thread 效果还是挺不错的
    xueyuehua
        95
    xueyuehua  
       96 天前
    虽然我们现在项目也是都用 17 ,但是 17 有什么新特性,就没人用过,jdk8 那些用的都不多,能跑就行
    zhouhu
        96
    zhouhu  
       96 天前
    kenvix
        97
    kenvix  
       96 天前
    Vector 和 Vanilla 到底啥时候能实装的
    forgottencoast
        98
    forgottencoast  
       96 天前
    @RyanPoy
    J2SE 5.0 September 30, 2004
    .Net 5.0 November 10, 2020
    BBCCBB
        99
    BBCCBB  
       96 天前
    stream tolist 什么的, 什么时候能加入推断集合大小.. 每次直接 new arraylist(), 默认 capacity 10, 我 3 个元素他也是 10 个, 几百个元素也是 10 个, 去 stream map tolist 要扩容好几次.. 更多的元素更惨.. 扩容+额外的空间浪费.

    rust 对于明确大小, 没有 filter 之类修改的, 都会直接用明确大小..
    RoccoShi
        100
    RoccoShi  
       96 天前
    jdk8 升级到 jdk17 已经忙活一年多了..
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1078 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 22:58 · PVG 06:58 · LAX 14:58 · JFK 17:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.