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

为什么就是没有人愿意升级到最新的 JDK?

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

    这是我非常不理解的一件事,如果说老项目有历史包袱,那么新项目呢? 如果说 8 以上担心 费用问题,不是有 openjdk 吗?

    如果说 你做不了主,那么项目 leader 为什么不愿意用新的呢?站在公司外的角度来看,项目 leader 也是 java 开发者之一,他不是另一个群体。

    第 1 条附言  ·  99 天前
    都在拿生态说事,我也是醉了,其他语言难道没这些问题??? 为什么他们就能一直用最新的呢? 而且 JDK 是向下兼容的。

    而且整个生态 都不升级,恰恰就是问题所在,这也是我发这个疑问的原因, 如果只是你不升级,那百分百是你个人的问题,谁会管你啊?

    还有说工作量的,安装 JDK17 比安装 8 步骤更繁琐吗?

    还有说利益的,lambda 又带来了什么利益?? 你们为什么一个个的 升级到 8 了? 怎么不停留在 6 ?
    143 条回复    2023-01-14 23:52:40 +08:00
    1  2  
    redvoilin
        1
    redvoilin  
       100 天前
    因为为公司打工要考虑收益和风险,正在用的成熟技术如果可以完成需求,不用付出额外成本,风险还小,试问有多少人有动力升级
    neochen13
        2
    neochen13  
       100 天前
    新项目一般基于 11 了吧……
    xiangyuecn
        3
    xiangyuecn  
       100 天前
    只要人和代码一个能 run 就行,什么最新版不最新版,不重要
    RRyo
        4
    RRyo  
       100 天前   ❤️ 19
    前排提醒 https://v2ex.com/t/852381
    ====↓赛博自由搏击战开始↓====
    Ufo666
        5
    Ufo666  
       100 天前
    学习成本,线上环境变更,旧项目不全兼容...懒得折腾,就用 v8 喽
    superrichman
        6
    superrichman  
       100 天前
    新版本 => 新功能 => 测试少 => 潜在问题多 => 新问题很可能连解决办法都没有。
    生产环境出了这种问题怎么办?等死吗?
    ghost024
        7
    ghost024  
       100 天前   ❤️ 1
    他们技术选型的时候主要是害怕如果是最新的 jdk 的话,周围的生态没有跟进,所以就用 java8 了
    Kaiv2
        8
    Kaiv2  
       100 天前
    依赖的包没有升级,除非不用
    dwlovelife
        9
    dwlovelife  
       100 天前
    两个原因吧
    dwlovelife
        10
    dwlovelife  
       100 天前
    1. 大部分老项目是基于 JAVA8 的,依赖太多不容易进行版本升级
    2. 大部分人不是那么热爱学习的,特别是所谓的领导,java8 以上的新特性又不会升上去干嘛呢?
    bk201
        11
    bk201  
       100 天前   ❤️ 2
    升级你总归要带来收益,解决实际问题。你要是升级带来问题,不知道解决什么问题,你升个啥玩意?手贱?
    coala
        12
    coala  
       100 天前
    当你引入一个 xx 驱动包.jar 只写了支持 jdk8 是, 用着 11 的我内心是坎坷着硬上的.
    Joker123456789
        13
    Joker123456789  
    OP
       100 天前
    都在说生态问题,但是 JDK 不是向下兼容的吗? 难道是 17 开始已经变了?
    Joker123456789
        14
    Joker123456789  
    OP
       100 天前
    @bk201 我说了那么多场景,你就只盯着老项目升级。
    lakehylia
        15
    lakehylia  
       100 天前
    新项目也不会是全新的项目啊,一般都会用下公司里面现成的组件,比如登录 /会员等等。
    lsry
        16
    lsry  
       100 天前
    這不單單是個 jdk 的問題,還依賴有其他框架,尤其是某些内部自研框架,完全跟 8 綁定,升級 jdk 會導致一堆的不兼容問題。
    Jwyt
        17
    Jwyt  
       100 天前
    @Joker123456789 升级 jdk 还是需要项目驱动,我们组很多就升到 11 了,因为底层有几个开源的依赖必须要 jdk11 以上
    lisongeee
        18
    lisongeee  
       100 天前
    如果 java 像 js 一样有 babel/esbuild 这类转译工具,也可以在 java8 上使用部分的 最新 java 特性
    66beta
        19
    66beta  
       100 天前
    除了问题,谁担责?
    lmshl
        20
    lmshl  
       100 天前   ❤️ 4
    我 17 都上生产两年了 ZGC 和 GraalVM 都分别用过,别人爱升不升,别来烦我就行

    ----------
    java --version
    openjdk 17.0.4 2022-07-19
    OpenJDK Runtime Environment GraalVM CE 22.2.0 (build 17.0.4+8-jvmci-22.2-b06)
    OpenJDK 64-Bit Server VM GraalVM CE 22.2.0 (build 17.0.4+8-jvmci-22.2-b06, mixed mode, sharing)
    yaphets666
        21
    yaphets666  
       100 天前
    开发软件是用来赚钱的,单纯的技术和开发没有意义。
    HENQIGUAI
        22
    HENQIGUAI  
       100 天前
    因为服务器掌握在运维手里,运维不升。。小小开发只能自己玩玩 demo.
    fwrq41251
        23
    fwrq41251  
       100 天前
    谁升级谁爽,java 现在 6 个月一个版本,每次升级到 lts 版本即可
    nekoneko
        24
    nekoneko  
       100 天前
    @coala #12 反编译, 把它不兼容的地方重写了就行
    jfj8848
        25
    jfj8848  
       100 天前
    如果不是安全问题或大的功能依赖问题,为什么要升级呢
    dcsuibian
        26
    dcsuibian  
       100 天前
    由俭入奢易,由奢入简难。尝试了新功能和新语法糖后,做项目的时候仍然要用老 JDK 。还不如先别试新的。

    如果我是一个项目负责人:我会推荐用 Java11 ,不是 8 ,但也不是 17 。
    首先出于稳定性考虑,只考虑 LTS 版,8 太旧、17 太新,11 正好。
    另一方面是兼容性,虽然我觉得 Java 的向后兼容做得非常好,但偶尔还是会有问题,比如之前发现 11->13 时,nashron 就没了。
    最重要的是从众,反正肯定有人会去尝鲜,等别人把坑都踩了,自己再上去不香么。
    nekoneko
        27
    nekoneko  
       100 天前
    @fwrq41251 #23 自己玩 17 确实很爽
    123zouwen
        28
    123zouwen  
       100 天前 via iPhone   ❤️ 1
    我们早就是 17 了。从 8 到 11 到 17 还是老项目逐步升级的。

    升级 jdk 不只是版本的升级,还得思路代码写法升级。

    有多少人用着 jdk8 ,写着 jdk6 的代码?
    chenPiMeiHaoChi
        29
    chenPiMeiHaoChi  
       100 天前
    你们打 jdk17 的镜像的基础依赖是啥?
    liuzhaowei55
        30
    liuzhaowei55  
       100 天前 via iPhone
    22 楼老哥说的才是真相,整个技术沉淀都是 8 ,往上升意味着整个工具链的升级改造,小公司自己搞搞就上了,大公司只能 cto 层面战略推进了
    cmax
        31
    cmax  
       100 天前
    直接升级可能遇到兼容问题,不过可以借助 EMT4J 这个工具减少一些的麻烦,https://zhuanlan.zhihu.com/p/549842999
    Anita720
        32
    Anita720  
       100 天前
    JDK17 现在使用 mybatis plus 的问题还没有修复吧,https://gitee.com/baomidou/mybatis-plus/issues/I5RH1Z ,现在只能使用 QueryWrapper 或者降低 JDK 版本
    superchijinpeng
        33
    superchijinpeng  
       100 天前
    不是绝对,我司包括底层大数据服务都升级到了 17
    yeyang5211
        34
    yeyang5211  
       100 天前
    升级不加薪 , 不升级也不降薪. 升级平白加了工作,到点下班不香吗?
    feelinglucky
        35
    feelinglucky  
       100 天前   ❤️ 8
    我说句不好听的,国内大部分 Java 开发人员可能脸 lambda 都写不明白
    yazinnnn
        36
    yazinnnn  
       100 天前
    快进到为什么 java 后端不愿意学 kotlin
    yifangtongxing28
        37
    yifangtongxing28  
       100 天前
    leader 的汇报 ppt 里,jdk8 到 jdk19 没任何意义
    EIJAM
        38
    EIJAM  
       100 天前 via iPhone
    Java 项目 ≈ 企业级。既然是企业级项目了,又不是自身兴趣好爱,那当然是稳定,能跑就行
    Jooooooooo
        39
    Jooooooooo  
       100 天前
    我们就是用新项目从 7 升到了 8.
    fox0001
        40
    fox0001  
       100 天前 via Android
    我们新项目用 17
    IvanLi127
        41
    IvanLi127  
       100 天前 via Android
    想升级的已经把 java 淘汰了。
    wu67
        42
    wu67  
       99 天前
    点进来我就大概猜到评论风向了. 后端仔就整天各种理由不升级. 前端仔就整天各种理由造轮子升级. hhhhhh

    典型的依赖项不多的、官方提供各种基础工具各种包的, 就死活不升级. 依赖项多的, npm package 一大坨, 恨不得天天升级看能不能整点新花样.
    liununu
        43
    liununu  
       99 天前
    @feelinglucky #35 赞同,作业面试过的开发,要是能熟悉写好 Java 8 ( LocalDate / Instant / Lambda 之类的)都算是亮点了
    gaifanking
        44
    gaifanking  
       99 天前
    @IvanLi127 赞同,有升级那个功夫搞搞 kotlin golang 等等岂不是更香。
    to2false
        45
    to2false  
       99 天前
    因为他们熟悉古早版本,希望他们坚持加油,这样其他语言才能百花齐放
    PythonYXY
        46
    PythonYXY  
       99 天前
    用更加新的 JDK 版本能带来业务价值吗?能让自己升值加薪吗?不能的话为什么要做吃力不讨好的工作。
    tonyli
        47
    tonyli  
       99 天前
    就很简单的问题,利益,风险和价值;用新版本有啥好处,装逼?别提什么推动创新发展,那其实并不是大多数人要考虑的
    leeg810312
        48
    leeg810312  
       99 天前   ❤️ 1
    .net 项目都升级到 6 了,Java 新项目现在还是大量 8 和少量 11 ,要说生态,其他语言平台没有生态要考虑吗?就没有见过这么不思进取的行业生态,平常总说技术更新快,要不断学习进步,但到了这方面就一致赖在旧版本上,11/17 都是 LTS 也不用,我看说到底就是懒惰。
    blessingsi
        49
    blessingsi  
       99 天前
    我认同的理由:依赖的第二方包只支持到 java8 ,更高的版本需要付出很大成本处理这些依赖。

    我不认同的理由:没收益,从标准库新 api 到新 gc ,对性能和开发体验绝对都有提升;有风险,11 GA 已经四年了,升级指南一大堆,从 spring 到 idea ,大把项目和工具在用,自己的项目没那么特殊只能跑在 jav8.

    从 8 升 11 再升 17 ,一定比直接从 8 升 21 来的简单。迟迟不升级,说明技术负责人认为自己的公司活不到需要升级的那一天,否则只是给未来的自己挖更大的坑罢了。
    ciki
        50
    ciki  
       99 天前
    升级带来一系列未知问题,要是出了严重 bug ,锅还得你背
    hankli
        51
    hankli  
       99 天前
    个人用 17 巴适滴很
    fanxasy
        52
    fanxasy  
       99 天前
    为什么就是没有人愿意用 kotlin?

    这是我非常不理解的一件事,如果说老项目有历史包袱,那么新项目呢? 而且不存在费用问题

    如果说 你做不了主,那么项目 leader 为什么不愿意用新的呢?站在公司外的角度来看,项目 leader 也是 jvm 开发者之一,他不是另一个群体。
    elissa2333
        53
    elissa2333  
       99 天前
    koltin +1
    salasoyo
        54
    salasoyo  
       99 天前
    公司的标准选型就是 jdk_1.8_202 ,其它属于红线~~
    exploreexe
        55
    exploreexe  
       99 天前
    没事非要给自己添加工作量干嘛,早点下班不好么
    Joker123456789
        56
    Joker123456789  
    OP
       99 天前
    @fanxasy 那你一直用 jdk8 吧
    Joker123456789
        57
    Joker123456789  
    OP
       99 天前
    @PythonYXY 你手机的应用商店,提示 app 有更新,你也不更新吗? 这怎么能叫吃力不讨好? 哪里吃力了? 安装 17 比安装 8 步骤更繁琐吗?
    rehoni
        58
    rehoni  
       99 天前
    为什么新项目就可以用新 jdk ,公司开发不都有脚手架吗?升级脚手架工程量就太大了,虽然我也想用新 jdk
    charlie21
        59
    charlie21  
       99 天前 via iPhone
    如果是前端娱乐圈,人们即将分分钟把不兼容 jdk 11 的包升级为兼容 jdk 11 的包,顺便纳入自己名下,方便跳槽时候为自己增加谈判筹码

    node js 一直是用最新版本,从没听说过哪个 npm 包只兼容老版本 node 导致人们只用老版本 node 的,没听说过。人们会把不兼容的包分分钟埋了:

    埋了晓得吗,把只兼容老版本 sdk 的第三方包给埋了
    xz410236056
        60
    xz410236056  
       99 天前
    能决定的人不写代码,或者抱着毕业那几年学到的知识打算用一辈子。你观察一下他们还学习新知识吗
    xz410236056
        61
    xz410236056  
       99 天前
    @jfj8848 #25 新 API 首先是方便开发者啊
    allgy
        62
    allgy  
       99 天前
    学 GO 吧,升级版本只需三步:1.下载.tar.gz 压缩包 2.解压 3 替换原来的 bin 文件 完成
    jinsongzhao
        63
    jinsongzhao  
       99 天前
    幸好没升级到新的,最近半年好多客户都忙着给 java 程序打补丁,唯独我 java8 和 log4j1.x 不用!不过经过这一轮超级漏洞,估计 java 会有个可靠的新版本了吧
    clf
        64
    clf  
       99 天前
    JDK11 没啥大坑了。但 JDK17 还有些小坑呀。虽然我们下一个 JDK 版本应该就是 17 了,但升级也不会这么快。

    openjdk11 是免费的,但更新频繁,会引入很多实验性功能。

    oraclejdk11 是收费的,更新的东西都是经过大量测试的,有商业支持,大部分企业选择使用 oraclejdk8 就是因为它免费且稳定。

    同样的,直到 jdk17 ,oraclejdk17 又免费了,还是长期支持版本。另外就是配合的生态 SpringBoot 等的下一个大版本也是 jdk17 ,所以……比如上面说的 kotlin ,项目部分内容已经使用 kt 了,但 kt 目前和 jdk17 一起用会有很多坑,和 jdk8/11 使用基本没坑。
    twofox
        65
    twofox  
       99 天前
    我们的技术总监说了,主要是怕出了 bug ,不好排查,大家都不懂。
    wetalk
        66
    wetalk  
       99 天前
    就跟为啥不用 windows11 一个道理
    Joker123456789
        67
    Joker123456789  
    OP
       99 天前
    @wetalk 问题是 现在 大部分人都在 win10 ,而不是 xp 啊。 如果都在用 JDK11 而不是 8 ,我也就没啥疑问了
    NoString
        68
    NoString  
       99 天前
    SLA 的问题,做工程不能只看技术优势啊,比如一个庞大的游戏后端,代码很烂但是不影响给公司每天带来百万收入,那请使用新技术的意义在哪里?如果持续的迭代升级能吃下新来的增量,服务自然会从原始的单体服务演变到集群再到拥抱云原生 ServiceMesh 、一体化的 CICD ,如果只从技术角度出发答案肯定是升级,但是公司既然是公司,是以盈利为最终目的的,不是以使用最新技术为目的的,因地制宜就好了 8 没那么糟糕,17 也不是那么万能(公司核心项目都是 2020 的时候使用 jdk11 )
    mcluyu
        69
    mcluyu  
       99 天前   ❤️ 1
    说明了一个问题, 任何个人团体没有压力, 没人逼着是永远不会往前走的。。。
    你看前端有各种浏览器新版本逼着, 客户端有 iOS 只能升不能降的系统版本逼着,就连 Windows , 新的硬件很难装上老旧的系统。
    而 Java 后端。。没有限制,系统更新影响不到,机器升级硬件影响不到,没有驱动力。
    zeroday
        70
    zeroday  
       99 天前
    升级了花了时间精力,冒着被故障的风险,然后最后被问一句:你觉得你这么做对业务有什么价值?
    singerll
        71
    singerll  
       99 天前
    1 、“其他语言难道没这些问题??? 为什么他们就能一直用最新的呢?”,我不知道你是怎么得出的这个结论,至少 python 表示不服。
    2 、“还有说工作量的,安装 JDK17 比安装 8 步骤更繁琐吗?”,合着 java 开发的工作就只有安装 jdk 了吗???
    pengtdyd
        72
    pengtdyd  
       99 天前
    《不要用新版本,老版本稳定》这句话应该很多人都听过,现在用 JDK 1.5 的人估计还大有人在
    albert0yyyy
        73
    albert0yyyy  
       99 天前
    先问是不是,再问为什么。这么问,感觉就像是引战。
    stevefan1999
        74
    stevefan1999  
       99 天前 via Android
    因爲人都是傻逼 不想冒風險
    Wien
        75
    Wien  
       99 天前
    很简单,升级需要有利益驱动。如果你说能提升 20%的计算性能,那还有点吸引力。否则我花时间去做一个没有收益的事情,为啥呢?
    kangu
        76
    kangu  
       99 天前
    应该反向思考一下,8 之后的版本究竟又带来了什么,需要去冒着不确定的风险来升级?
    SekiBetu
        77
    SekiBetu  
       99 天前   ❤️ 1
    初级码农太多了,导致你作为高级的,不敢去升级,因为一升级,那群人就摆烂,说不会解决兼容问题,看着你了
    SekiBetu
        78
    SekiBetu  
       99 天前
    oracle 为了这帮坐着轮椅的初级码农,推出了 DLC ,叫做 Java SE Subscription Enterprise Performance Pack (Enterprise Performance Pack) 这个版本是花钱和 oracle 订阅的,他会给你提供一个特殊的 jdk 版本,其中只包含 8 的特性,但是会加上 8 到 17 的所有性能提升
    kaneg
        79
    kaneg  
       99 天前
    想升级的人没有权利,有权升的又没有动力。
    Chad0000
        80
    Chad0000  
       99 天前 via iPhone
    .net 阵营的路过:不是 lts 的我都积极升级(几乎啥也不需要改)。马上出 7 了,基本上改个版本号即可,继续跟进。
    Aloento
        81
    Aloento  
       99 天前
    @Chad0000 同 .NET 阵营,最喜欢干的事情就是更新 .NET 环境,我们都是直接用的 preview (感觉预览版比正式版好使)
    voidmnwzp
        82
    voidmnwzp  
       99 天前 via iPhone
    更新点不痛不痒 没有革命性的特性推出 不知道 17 的虚拟线程会不会成为更新契机
    hingbong
        83
    hingbong  
       99 天前 via Android
    @voidmnwzp 17 没这个
    securityCoding
        84
    securityCoding  
       99 天前
    太菜吧,我们组内 go 的版本一个比一个新 233
    yxisenx
        85
    yxisenx  
       99 天前
    要成本啊, 还要担风险
    wdlth
        86
    wdlth  
       99 天前
    我们是有用 Java 11 和 17 的,性能提升 15-20%吧,还有更完善的 aarch64 支持。
    axuhongbo
        87
    axuhongbo  
       99 天前
    升级过一次 java window 系统直接崩了
    catteroLo
        88
    catteroLo  
       99 天前
    别说 JDK 了,V 站关闭 Windows 系统更新都一抓一大把
    duckrxy
        89
    duckrxy  
       99 天前   ❤️ 3
    你得看公司的性质。如果是个技术驱动的创业型公司,没什么包袱,或者是 MS 这类必须在技术上做 leading 的公司,自然愿意采用新的技术,别说 Java17 了,连 dotnet core, rust 都敢推。我上一家公司就是这样,包袱小,团队小,我可以精心去招对新技术有热情和想法的人,连 kotlin 都能上。
    后来去了一家业务驱动的公司,就是以满足业务上的需求且稳定为第一要务,生产上的任何扰动都会造成难以预料的损失,别说用新的 Java 了,你就是改一行代码说不定上下游都受影响,甚至为了修复安全漏洞升级依赖包版本都需要花不少人天去解决冲突问题,这些花销都是要被业务盯的,你要是技术负责人说我要用 JAVA17 ,下一个问题就是,用这个能带来什么收益?我要投入多少资源?市场上容易招人吗?直接就给顶回来
    所以这个事情不是一个应然的问题,而是一个实然的问题,公司不同,取向不同,选择自然不同
    deef
        90
    deef  
       99 天前
    升级又不能加薪,重复造轮子才是王道。新项目基于 8 的一大堆,没任何理由升级。
    sleepybear1113
        91
    sleepybear1113  
       99 天前
    那天公司从 0 开新项目,我提议直接用 Java 11 ,都没敢说 17 。主管说,11 有什么特别的点,去值得特别去升级吗,8 已经成熟了,如果因为 11 有什么问题,投入产出不值。但是同意了我们把 Maven 换成了 Gradle 。但是我自己是从 17 出来之后,就自己全部的项目,升级到 17 ,甚至有些上 Spring Boot 3.0.0 预览版。除了一个绑定 Windows 平台的 x86 的 Java 项目必须用 Java 8 32 位。不过写 17 的确,有些地方有一点点的语法糖,写起来方便。由于是个人项目,没有体会到多少和 8 的差距。
    wiix
        92
    wiix  
       99 天前
    谁说没人,公司的项目依赖能用新的稳定版绝对不用旧的,中途升级依赖,只要看了官方合并文档也几乎不会有问题。
    说实话大部分人写出来的那些个糟 B 代码,不配谈稳定!
    wangsd
        93
    wangsd  
       99 天前
    现在的产品一开始是基于 JDK11 构建的,那会大概是 2020 年,等要发布了,结果公司运维告知我们公司的 DevOps 环境只能支持到 JDK8 ,结果我们只能退回到 8.
    L4Linux
        94
    L4Linux  
       99 天前 via Android
    Oracle 搞了个项目,你们不愿意升级到 JDK17 ,那就偷偷把 JDK8 的 JVM 换成 JDK17 的。
    dbpe
        95
    dbpe  
       99 天前
    因为“稳定”嘛,然后大部分人也懒得管这个破事。。。


    java 真就成也稳定。。败也“稳定”了
    Dlin
        96
    Dlin  
       99 天前
    1 、因为你只是帮老板打工的
    2 、因为你不愿花精力学习
    3 、因为你团队其他人不愿意
    4 、因为你技术领导只是个半罐水
    kalman03
        97
    kalman03  
       99 天前
    好吧,在升级的过程中,有困惑吗?工具大法来解决:www.mvncenter.com ad.
    bthulu
        98
    bthulu  
       99 天前
    升级? 升级对业务有用吗, 能提升业绩吗? 不能, 不能你升个锤子.
    xuanbg
        99
    xuanbg  
       99 天前
    怎么没有在用?我这边项目已经开始逐步从 8 升级 17 了。
    wetalk
        100
    wetalk  
       99 天前
    @Joker123456789 我认为 JDK8 的地位对标 W10 ,她两几乎同年正式发布,像 JDK11 ,我更愿意把他当成昙花一现的 W8.1
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1369 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 914ms · UTC 05:00 · PVG 13:00 · LAX 21:00 · JFK 00:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.