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

2022-10-28 10:33:42 +08:00
 Joker123456789

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

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

16148 次点击
所在节点    Java
144 条回复
seakingii
2022-10-29 10:43:53 +08:00
@Aloento 同.NET 阵营,我用.NET 7 好久了(还不是正式版本)
ClericPy
2022-10-29 10:54:21 +08:00
就像有的公司还在用 python2 一样, 会啥用啥吧. 对大部分打工仔来说, 写代码可能就是为了换一碗饭吃, 之前同事的意思是 jdk 8 够用, 没必要升级, 毕竟当年看的书都是那版本, 升级以后出了问题的额外加班成本公司是不报销的

(昨晚上升级 python3.11, 依赖得从头来一次, Windows 真各种坑爹编译问题, 准备写个 GUI 帮我去 lfd 上拉 whl 了)
ericguo
2022-10-29 11:13:17 +08:00
@ClericPy 你同事说的没错,所幸的是你总算跳出来变成前同事了。
ClericPy
2022-10-29 11:23:51 +08:00
@ericguo 那些同事其实实力还是可以的, 但是他们业务很多总是被催的每周单休, 所以可能自己会用新版本, 但是写公司项目很少会没事找事吧, 怎么稳定怎么熟练怎么来

工作这些年渐渐也看开了, 企业的第一要务还是盈利
dayudayupao
2022-10-29 11:31:45 +08:00
@superrichman 你觉得就平时这些业务代码,能够遇上几个是新版本 jdk 才会导致的 bug
charlie21
2022-10-29 11:47:12 +08:00
一个 10 名 ~ 50 名 C# .NET 开发者的公司如果要商用 .NET SDK 那么每年开销就是零元

如果使用 java , 看看 oracle jdk store 告诉你商用授权一年需要多少钱

https://shop.oracle.com

每人每年 300 USD , 假设你公司有 10 名 ~ 50 名 java 软件工程师,则每年在 oracle jdk 方面的开销是 3000 USD ~ 1.5 万 USD (如果这是正确的计算方式),也就是 2.1 万 ~ 10.5 万元

---

oracle jdk 8 最后一个免费版本是 8u202 (最后一个免费版),下载地址是

https://www.oracle.com/au/java/technologies/javase/javase8-archive-downloads.html Java SE 8 Archive Downloads (JDK 8u202 and earlier) 在 2019 年 4 月 16 日发布的 oracle jdk 8u211 / 8u212 ,或者之后发布的新版本,就需要给 Oracle 交钱了。虽然它们依然是 jdk 8 ,即 从付费角度而言 oracle jdk 8 也有免费版版和付费版本
crownzzz
2022-10-29 11:49:19 +08:00
前段时间项目重构,我把 jdk 升到 11 ,然后小组长让降回 8…
appstore54321
2022-10-29 12:02:53 +08:00
1 谁升级,出了事故谁负责,有这时间我歇着不好吗
2 公司的服务怎么养关我屁事,我就挣死工资
3 需要提供升级好处的理由,为什么值得花时间升级
4 有的东西还真就只在 jdk8 工作
5 你还可以一开始就选 kotlin
superrichman
2022-10-29 12:03:55 +08:00
@dayudayupao 你的项目里只有自己的代码?你不要用其它的库?你能保证那些库不会出问题?我用旧版本的是因为经过了时间的检验,这个版本组合经过多年验证没有问题,你用新版本出问题了怎么办?说不定某个库都不维护更新了,你还敢升级 jdk 吗?

小项目怎么折腾都无所谓,大项目影响到可用性和连续性就是致命的。
14104chk
2022-10-29 12:58:26 +08:00
我曾经遇到一个问题,刚出 JDK7 的时候,用 SQLServer 的官方驱动取出的时间就是和数据库的时间差整整 1 天,查了好久才确定是驱动和 JDK 不兼容的问题
这个问题还好,测试的时候就能发现,但是我想说的是,不要以为 JDK 向下兼容就万事大吉
FakNoCNName
2022-10-29 13:11:36 +08:00
拿我们来说,开发人员是乐意推动升级的,但是报上去领导不同意,每次新的开发周期我们都会尝试推动升级,到今年已经被领导连续拒绝不下 4 次了。

随后每次客户遇到问题找到大领导的时候,直属领导才会着急忙慌的让我们升级、重构。蛋疼!
xxfye
2022-10-29 13:20:45 +08:00
老应用升级是不可能升级的,但有情怀的架构师会推动新项目上 JDK11 。
不过新应用基本上都是年抛型,就导致技术资产很难沉淀下去。
而且根据某部门反馈 JDK11 比 JDK8 不稳定,这把其他开发部门吓到了,就只敢用 JDK11 开发对内服务了。
目前 JDK17 的升级看不上。ZGC 相对来说没用,吞吐量比延迟更重要。
现在大家现在都在等 JDK21 和 Spring boot 3 ,等虚拟线程和分代 ZGC 。
uni
2022-10-29 14:00:05 +08:00
我也一直很好奇这个问题,像前端的框架、基础设施,node ,python ,大家都在有条不紊地升级,java 碰到的升级的阻力理论上这些也应该都会碰到啊
guyeu
2022-10-29 14:15:47 +08:00
我司新立项的项目都是 17 了
a0210077
2022-10-29 14:16:33 +08:00
1 、我们很懒
2 、新项目我都是力推 17 的,LST 版本,而且已经出来一段时间,稳定下来了
3 、老项目没事不去动,虽说 JDK 大版本向下兼容性非常好,但不是说用 JAVA 写的所有库都能正常向上适配,需要对依赖的库进行全面检查,万一哪个库出现了骚操作编码就麻烦了。这样一来就需要对项目的所有内容进行测试,时间和人力成本少不了,项目越大成本越高
c6h6benzene
2022-10-29 15:24:37 +08:00
dayudayupao
2022-10-29 15:27:32 +08:00
@superrichman 嗯,你说的有道理,如果项目大了风险不好把控,小项目还好,就算有 bug 总能在特定时间内 hold 住
xxfye
2022-10-29 15:30:33 +08:00
@uni 前端有是滚动升级,必须引入一个新包,最小 node14 ,这时候就得费时费力把所有不兼容的统统换掉,而且浏览器环境偶尔扔出一些错误照样跑,大不了多刷新几次,重试几次。
java 你懂的,几乎所有包都兼容 jdk8 ,根本没用升级动力,所以还得看 spring boot 3 。
而且前端也没好到那里去,vue1.x vue2.x angularjs1.x 还在看着呢。
xxfye
2022-10-29 15:43:50 +08:00
@uni 突然想到一点也很重要,前端代码库普遍比较小(排除 node_modules 后),即使大项目也容易按照功能和路径进行拆分和升级。
但是像 python3 都出来十几年年了,各大发行版 Linux 和 macos 这几年才默认不自带 py2 。
另外基础设施是指 C++吗,照样升级不动,百度前几年 gcc 版本锁死 3.x ,这几年才升级上来,有 C++11 就谢天谢地了。
uni
2022-10-29 18:16:26 +08:00
@xxfye 基础设施指的是 npm 升级到 pnpm 这种,还有 webpack 升级到 vite
我觉得你说的有道理,java 在滚动升级这一块还得向 node 和 python 学一个(

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/890606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX