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

JDK 24 发布了

  •  2
     
  •   Ayanokouji · 23 小时 9 分钟前 · 7639 次点击
    Features

    404: Generational Shenandoah (Experimental)
    450: Compact Object Headers (Experimental)
    472: Prepare to Restrict the Use of JNI
    475: Late Barrier Expansion for G1
    478: Key Derivation Function API (Preview)
    479: Remove the Windows 32-bit x86 Port
    483: Ahead-of-Time Class Loading & Linking
    484: Class-File API
    485: Stream Gatherers
    486: Permanently Disable the Security Manager
    487: Scoped Values (Fourth Preview)
    488: Primitive Types in Patterns, instanceof, and switch (Second Preview)
    489: Vector API (Ninth Incubator)
    490: ZGC: Remove the Non-Generational Mode
    491: Synchronize Virtual Threads without Pinning
    492: Flexible Constructor Bodies (Third Preview)
    493: Linking Run-Time Images without JMODs
    494: Module Import Declarations (Second Preview)
    495: Simple Source Files and Instance Main Methods (Fourth Preview)
    496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
    497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm
    498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe
    499: Structured Concurrency (Fourth Preview)
    501: Deprecate the 32-bit x86 Port for Removal


    https://openjdk.org/projects/jdk/24/

    https://medium.com/graalvm/welcome-graalvm-for-jdk-24-7c829fe98ea1


    此版本是非 lts 版本,今年 9 月份的 jdk 25 是 lts 版本


    本帖不欢迎刷 jdk8 梗,都是 10 多年前的技术了,2014 年 3 月 18 日发布。
    92 条回复    2025-03-19 23:43:39 +08:00
    lujiaxing
        1
    lujiaxing  
       23 小时 5 分钟前   ❤️ 4
    你发任你发, 我用 Java 8
    aptupdate
        2
    aptupdate  
       23 小时 5 分钟前 via iPhone
    我滴妈耶,都到 24 了啊?这是每年一个大版本的节奏吗?
    Ayanokouji
        3
    Ayanokouji  
    OP
       23 小时 4 分钟前
    @aptupdate 每年两个版本,两年一个 lts 版本
    iintothewind
        4
    iintothewind  
       23 小时 4 分钟前
    值类型真难产啊,
    Java 不得不带着镣铐跳舞.
    ExplodingFKL
        5
    ExplodingFKL  
       23 小时 3 分钟前
    不是 LTS 用不到,而且这一版没杀手级别的新特性 ...
    wangtian2020
        6
    wangtian2020  
       23 小时 0 分钟前
    什么时候支持动态类型了我再用
    letianqiu
        7
    letianqiu  
       22 小时 54 分钟前
    491: Synchronize Virtual Threads without Pinning 是这次最重要的更新了,virtual thread 总算是可以用了
    Goooooos
        8
    Goooooos  
       22 小时 51 分钟前
    等 9 月线上服务升级 25 lts
    dragondove
        9
    dragondove  
       22 小时 48 分钟前
    @ExplodingFKL aot linking 对于客户端软件算是很有用的功能了。compact object header 也是很有用的特性,虽然还是实验性的,现在也只合并了半个实现( 8 字节对象头),4 字节版本合并到 lillput 上了,还在更新支持各类 gc 之类的。对象头的缩减对于服务端程序感觉能减少 10%以上的内存占用,还能够减少 gc 压力,对性能也会有提升。
    sleepybear1113
        10
    sleepybear1113  
       22 小时 47 分钟前
    正在 21 + Spring Boot 3.x ,等发 25 lts 再换
    ovtfkw
        11
    ovtfkw  
       22 小时 46 分钟前
    你强任你强, 我用 Java 8
    sagaxu
        12
    sagaxu  
       22 小时 44 分钟前
    @ExplodingFKL

    JEP 450 内存占用减少 8-10 个百分点
    JEP 491 虚拟线程首次真正可用


    @wangtian2020 Groovy 和 Clojure 都支持动态类型
    kzfile
        13
    kzfile  
       22 小时 42 分钟前
    我也想用新的 jdk ,但是项目不允许
    liaohongxing
        14
    liaohongxing  
       22 小时 41 分钟前
    Foreign Function Interface for Java (JEP 424) , 关于 FFI 的更新怎么没有看到消息
    Plutooo
        15
    Plutooo  
       22 小时 38 分钟前
    21 之前没关注过 jdk 版本的迭代,21 关注以后发现原来 jdk 的迭代这么快
    Ayanokouji
        16
    Ayanokouji  
    OP
       22 小时 37 分钟前
    @liaohongxing https://openjdk.org/jeps/454 已经在 jdk 22 release 了
    5261
        17
    5261  
       22 小时 24 分钟前
    你发布归你发布,公司项目 Java8, 任谁来都不好使~谁升级谁背锅
    Rever4433
        18
    Rever4433  
       22 小时 23 分钟前
    公司的项目还在 jdk8 -> jdk17 的迁移过程中
    wuyiccc
        19
    wuyiccc  
       22 小时 21 分钟前
    还在用 jdk8+jdk17 两个版本并行中
    linquan
        20
    linquan  
       22 小时 18 分钟前
    不写 java ,之前写的还都是用的 jdk8 ,想问一下现在主流的版本是多少?是 17 么,vscode 的调试器貌似要求最低 17 ,感觉 jdk17 是不是和类似 cpp11 在 cpp 中的情况
    gitrebase
        21
    gitrebase  
       22 小时 13 分钟前
    结构化并发啥时候能转正啊…
    wysnxzm
        22
    wysnxzm  
       22 小时 7 分钟前
    有些人并没有意识到自己不追赶技术就会被技术追赶并淘汰的现实
    wwalkingg
        23
    wwalkingg  
       22 小时 4 分钟前
    @ExplodingFKL 新的调用 Native 方法的特性很有吸引力啊
    daye
        24
    daye  
       22 小时 3 分钟前
    不要再说“你强任你强, 我用 Java 8”,都什么时代了,至少 JDK11 以上,现在主流已经是 17 ,还在 Java8 的都是老古董项目了,还坚持你强任你强,只会被后浪拍死在沙滩上
    daye
        25
    daye  
       22 小时 0 分钟前
    @linquan 根据 2024 年的 New Relic 2024 Java 生态系统状态报告,Java 17 、11 和 8 的用户比例分别为 35%、33% 和 29%。
    LowBi
        26
    LowBi  
       21 小时 56 分钟前
    java 啥时能做到 Windows 级别的向下兼容,那就真的没人再谈 jdk8 的梗了,目前跟着服务器 jdk 版本,服务器不升我不升
    spike0100
        27
    spike0100  
       21 小时 51 分钟前
    刚给服务用上 17 ,多行文本和 switch 表达使用的美滋滋的。不知道怎么坚持 j8 用了这么多年的
    wetalk
        28
    wetalk  
       21 小时 50 分钟前
    搞个投票,统计 V 站的朋友目前使用的 JDK 版本,以及对应项目的行业和大致流量,应该比较具有参考下
    me1onsoda
        29
    me1onsoda  
       21 小时 49 分钟前
    @LowBi 越是兼容越是屎山,难以维护。有几个编程语言能做到这样的兼容
    yty2012g
        30
    yty2012g  
       21 小时 48 分钟前
    491 是真不错,终于更敢用 Virtual Thread 了
    487 和 499 是不是计划 jdk25 release ?届时,下一代 Concurrency 模型应该是有一波显著的升级
    cheng6563
        31
    cheng6563  
       21 小时 41 分钟前
    Java 项目升级没那么难,只要你项目里没用那些意义不明的 sun 包的东西。
    sagaxu
        32
    sagaxu  
       21 小时 38 分钟前
    @linquan 主流 17 ,其次 11 。新项目拉 springboot ,支持的最低版本是 17 。

    cubecube
        33
    cubecube  
       21 小时 36 分钟前   ❤️ 1
    谨慎升级

    486: Permanently Disable the Security Manager

    这个改动,兼容性问题很大,第三方库得修好一阵子才能搞定。
    ychost
        34
    ychost  
       21 小时 34 分钟前
    @wangtian2020 groovy 啥都支持,对于 CRUD 挺爽的
    BrookO
        35
    BrookO  
       21 小时 33 分钟前
    我想问下,有没有人还在用 java6 的
    Kamiyu0087
        36
    Kamiyu0087  
       21 小时 32 分钟前
    我们公司都是 11 和 17
    没有用 8 的
    NoKey
        37
    NoKey  
       21 小时 28 分钟前
    这不老生常谈么,对于已经运营多年的老旧大型项目,基本准则就是能不动绝对不动,那不是 java8 是啥呢。。。。
    Niizuki
        38
    Niizuki  
       21 小时 25 分钟前
    我们老古董公司还在用 jdk8 ,醉了
    securityCoding
        39
    securityCoding  
       21 小时 22 分钟前
    @lujiaxing 我真的在用 java8 ,中国把 spark 版本钉死了
    securityCoding
        40
    securityCoding  
       21 小时 21 分钟前
    @securityCoding 中国=》中台
    Meld
        41
    Meld  
       21 小时 15 分钟前
    我还在用 21 ,性能很强,话说老讨论 java8 干啥,看多了也腻了
    Meld
        42
    Meld  
       21 小时 14 分钟前   ❤️ 6
    @lujiaxing

    你甚至不愿意读到正文的最后一行
    TheWalkingDead
        43
    TheWalkingDead  
       21 小时 8 分钟前 via iPhone
    招 java 的越来越少的
    yh7gdiaYW
        44
    yh7gdiaYW  
       21 小时 5 分钟前
    @daye 8 的真实比例比这个统计高的多得多,这个统计的是使用他们家线上监控的 Java 应用,可以预见的是国内不可能有少项目在用他们的服务,国内又恰恰是 8 的重灾区
    zong400
        45
    zong400  
       21 小时 0 分钟前
    zgc 稳定了吗?比 g1 好?
    duhb
        46
    duhb  
       20 小时 52 分钟前   ❤️ 1
    @lujiaxing 老发这些有意思吗,挺没劲的?准备固步自封何时呢~
    Ayanokouji
        47
    Ayanokouji  
    OP
       20 小时 44 分钟前
    @LowBi 但凡用个 docker ,也不至于根据服务器版本走
    Akitora
        48
    Akitora  
       20 小时 40 分钟前
    491: Synchronize Virtual Threads without Pinning

    好哇
    Yukineko
        49
    Yukineko  
       20 小时 33 分钟前
    491: Synchronize Virtual Threads without Pinning

    我在 jdk21 上用虚拟线程,已经被这个坑了好几次了
    cubecube
        50
    cubecube  
       20 小时 28 分钟前
    @zong400 生产在用,没啥大问题。唯一的缺点是不能用压缩指针
    Meld
        51
    Meld  
       20 小时 25 分钟前   ❤️ 1
    @NoKey

    问题大家在这讨论分享的是新 JDK 特性,大家都不是小白,谁不知道古早老项目一般不会动,但是在这种帖子反复强调 Java8 有啥意义,好比新能源车主聚会,大家讨论新平台,新的充电标准,冲进来了燃油车主说,你们聊归聊,我还是要开燃油车,我上班只能开燃油,话没错,说话的场景错了啊,朋友。
    lujiaxing
        52
    lujiaxing  
       20 小时 20 分钟前
    @Meld 然而电车就是不行啊...
    zhouhu
        53
    zhouhu  
       20 小时 12 分钟前
    等 Java 25
    Meld
        54
    Meld  
       20 小时 11 分钟前
    @lujiaxing #52

    您随意
    superchijinpeng
        55
    superchijinpeng  
       20 小时 6 分钟前
    现在大部分都是 17 了,不过 all in kt ,无所谓
    shen13176101
        56
    shen13176101  
       20 小时 5 分钟前
    用 8 就用 8 呗,不想升级背锅就不背锅呗,有些人非要来这里说一嘴显得自己高级么?
    shen13176101
        57
    shen13176101  
       20 小时 4 分钟前
    @shen13176101 #56 之前公司也用 8 ,但是新项目直接用了 17.
    carytseng
        58
    carytseng  
       19 小时 58 分钟前
    @lujiaxing #1 哈哈哈,现状的确如此
    bjfane
        59
    bjfane  
       19 小时 56 分钟前
    个人项目或者公司内部平台已经用了 21 了。感觉良好,配合 springboot3.4.x
    roundgis
        60
    roundgis  
       19 小时 54 分钟前 via Android
    @shen13176101 應該是用 java8 的人沒啥決策權。
    Rickkkkkkk
        61
    Rickkkkkkk  
       19 小时 53 分钟前
    不用新的 g1 不就是纯纯给自己添堵?
    jiazhutianxiadiy
        62
    jiazhutianxiadiy  
       19 小时 49 分钟前 via Android
    无知当炫耀的资本。小丑🤡只是滑稽。刷 1.8 的只会更恶心
    xausky
        63
    xausky  
       18 小时 49 分钟前
    公司项目用 1.8 不能换,自己项目不用 Java
    adoal
        64
    adoal  
       18 小时 48 分钟前
    你气任你气,我用 Java 7
    你逗任你逗,我用 Java 6
    DT27
        65
    DT27  
       18 小时 43 分钟前
    刚看了下我的工具箱:
    jre-8u91-windows-i586
    jre-8u161-windows-i586
    fangxisama
        66
    fangxisama  
       18 小时 24 分钟前
    PS C:\Users\user> java --version
    openjdk 21.0.4 2024-07-16 LTS
    OpenJDK Runtime Environment (build 21.0.4+9-LTS)
    OpenJDK 64-Bit Server VM (build 21.0.4+9-LTS, mixed mode, sharing)
    HENQIGUAI
        67
    HENQIGUAI  
       18 小时 13 分钟前
    刚开始玩 21 ,还写了个脚本方便切换环境变量,坐等 9 月份的 25
    liudih
        68
    liudih  
       18 小时 7 分钟前
    我们就是 java8, 新项目也 java8
    XDiLa
        69
    XDiLa  
       18 小时 6 分钟前
    @Meld #41 这种垃圾烂根 真的看吐了 我和你想的一样
    JoeDH
        70
    JoeDH  
       17 小时 54 分钟前
    已经逐步升级到 17 了,8 不知不觉在淘汰
    111111111111
        71
    111111111111  
       17 小时 51 分钟前
    在用 JDK17
    Greendays
        72
    Greendays  
       17 小时 46 分钟前
    我倒是在用 21 的版本,但感觉好像也不太用得到什么特别的特性。
    salmon5
        73
    salmon5  
       17 小时 44 分钟前
    逐步 JDK 17 已经很多项目在用,原生 G1GC 就是好
    des
        74
    des  
       17 小时 41 分钟前
    天啊 2014 都是 10 年前了,感觉过的好快
    darksheep9527
        75
    darksheep9527  
       17 小时 33 分钟前
    @sleepybear1113 想问一下老哥,用虚拟线程的时候会不会用线程池,我当时实现的时候看虚拟线程思想是每次用就新建一个线程,线程池做的是 每次申请就新建一个. 但是后面发现 这样一来 大量请求进来都用到虚拟线程并发时,内存涨的飞快,但是这个业务可以接受慢一点,用有上限的线程池会更好, 但是奇怪用有上限的线程池后,prod 跑了一周似乎 hang 住了,又切回了了虚拟线程
    ccover
        76
    ccover  
       17 小时 20 分钟前
    @spike0100 你说的这些东西恰恰是管理层最不看重的。。
    Gilfoyle26
        77
    Gilfoyle26  
       17 小时 18 分钟前
    跟我一起读:三八二十四。
    wzwmeme
        78
    wzwmeme  
       17 小时 11 分钟前
    @lujiaxing NT 发言
    Mark24
        79
    Mark24  
       17 小时 3 分钟前
    为什么国内执着于 Java8

    不是 Java7 也不是 Java9 ,Java8 有什么特殊性吗?
    Ayanokouji
        80
    Ayanokouji  
    OP
       16 小时 54 分钟前
    @Mark24 因为 jdk 9 太拖拉,而且是非 lts 版本,等到下一个 lts 版本 jdk11 ,黄花菜都凉了。

    Java SE 8 2014-03-18
    Java SE 9 2017-09-21
    Java SE 11 2018-09-25
    cocong
        81
    cocong  
       16 小时 53 分钟前
    @Mark24 java 8 之后的版本开始收费,当然有开源版本,只是阉割了很多东西
    zhouhu
        82
    zhouhu  
       16 小时 10 分钟前
    @Greendays 很多 jvm 层面,比如 gc 的优化不深入的话是感觉不到。
    zhouhu
        83
    zhouhu  
       16 小时 9 分钟前
    @sagaxu compact header 值得关注,希望 Java 25 lts 能正式发布。
    sthwrong
        84
    sthwrong  
       16 小时 5 分钟前
    @darksheep9527 我的理解是虚拟线程和 goroutine 类似,虽然实现不一定一样,但本质都是为了轻量的并发。go 默认是不限制 goroutine 创建的,那么是否进行池化,只在于是否要限制资源的占用,当资源占用达到了要抢的程度的时候,是有可能比限制上限还要慢的。
    wupher
        85
    wupher  
       15 小时 48 分钟前
    目前新项目已经都是 17 了,希望能早日让我用 21
    Richared
        86
    Richared  
       14 小时 54 分钟前
    新启的项目都开始 21 了。现在 8,11,17,21 的都有。干活都快给自己干崩溃了。
    sagaxu
        87
    sagaxu  
       14 小时 49 分钟前
    @darksheep9527 Oracle 认为 JVM 虚拟线程不要用线程池。限流方法很多,使用线程池大可不必,实际 Go 的 Runtime 也会服用 goroutine 结构,同样也没必要池化。

    Represent Every Concurrent Task as a Virtual Thread; Never Pool Virtual Threads
    https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html

    @cocong 详细说说看,开源版本都阉割了啥? Oracle 自己 build 也是从 openjdk 拉代码,再并入少量私有代码后构建。很多东西是指什么?

    @zhouhu 25 lts 恐怕有点赶时间,紧凑头的改动还算比较大的,仅仅几个月的时间测试和观察,有点儿紧。
    msg7086
        88
    msg7086  
       14 小时 29 分钟前
    @Mark24 8 支持期非常长(因为自己就在用,而且估摸着还得再用一段时间)。
    7 已经过了支持期了,9 根本不是 lts ,11 间隔太长了而且升级没那么简单。
    11 和 8 之间有个很大的沟,是 mockito 那些全部不兼容了,从 8 升到 11 意味着重构或者重写所有的测试用例。隔壁组前后花了一两个月才转换完一半的测试,另一半本来是我们组负责,但根本腾不出时间来做,所以现在只能把所有测试全禁了然后硬上 17 ,等以后想开了(或者想不开了)再回来捡。
    takanashisakura
        89
    takanashisakura  
       12 小时 57 分钟前
    银行老项目 jdk8 ,谁敢动。今年新的项目倒是开始实验性使用 jdk17/21+springboot 了。
    seers
        90
    seers  
       12 小时 46 分钟前 via Android
    我司还有 1.6 的在跑,虽然已经过了项目维护期,但是客户还在用
    javak
        91
    javak  
       12 小时 44 分钟前 via iPhone
    我只想知道,springboot2.x 可以跑在 jdk25 上吗😅

    现在在 21 上跑的很好。25 也能跑的很好,马上就升
    oneisall8955
        92
    oneisall8955  
       7 小时 57 分钟前
    jdk17 准备下个月上生产
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1309 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:41 · PVG 07:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.