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

JDK 23 发布了

  •  
  •   Ayanokouji · 1 天前 · 10042 次点击
    此版本是非 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/
    110 条回复    2024-09-19 11:04:02 +08:00
    1  2  
    Creamliu
        1
    Creamliu  
       1 天前 via iPhone
    这个月刚从 jdk8 升级到 jdk21 ,还没上生产。
    huihuiHK
        2
    huihuiHK  
       1 天前   ❤️ 1
    等一波 java8 党
    yolee599
        3
    yolee599  
       1 天前 via Android   ❤️ 1
    jdk8 永远的神,从桌面到安卓再到后台服务,一个版本就够了
    cheng6563
        4
    cheng6563  
       1 天前
    字符串模板还没定稿吗
    chendy
        5
    chendy  
       1 天前
    J8 人不请自来,公司项目,狗都不升,java7 主流,java8 先进,java11 动不动就 build 报错没人管,java17 的项目已经凉了

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

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

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

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

    jdk8 jdk11 jdk21

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

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

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


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

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

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

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

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