这是我非常不理解的一件事,如果说老项目有历史包袱,那么新项目呢? 如果说 8 以上担心 费用问题,不是有 openjdk 吗?
如果说 你做不了主,那么项目 leader 为什么不愿意用新的呢?站在公司外的角度来看,项目 leader 也是 java 开发者之一,他不是另一个群体。
102
ClericPy 2022-10-29 10:54:21 +08:00
就像有的公司还在用 python2 一样, 会啥用啥吧. 对大部分打工仔来说, 写代码可能就是为了换一碗饭吃, 之前同事的意思是 jdk 8 够用, 没必要升级, 毕竟当年看的书都是那版本, 升级以后出了问题的额外加班成本公司是不报销的
(昨晚上升级 python3.11, 依赖得从头来一次, Windows 真各种坑爹编译问题, 准备写个 GUI 帮我去 lfd 上拉 whl 了) |
104
ClericPy 2022-10-29 11:23:51 +08:00
@ericguo 那些同事其实实力还是可以的, 但是他们业务很多总是被催的每周单休, 所以可能自己会用新版本, 但是写公司项目很少会没事找事吧, 怎么稳定怎么熟练怎么来
工作这些年渐渐也看开了, 企业的第一要务还是盈利 |
105
dayudayupao 2022-10-29 11:31:45 +08:00
@superrichman 你觉得就平时这些业务代码,能够遇上几个是新版本 jdk 才会导致的 bug
|
106
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 也有免费版版和付费版本 |
107
crownzzz 2022-10-29 11:49:19 +08:00 via iPhone
前段时间项目重构,我把 jdk 升到 11 ,然后小组长让降回 8…
|
108
appstore54321 2022-10-29 12:02:53 +08:00 via iPhone
1 谁升级,出了事故谁负责,有这时间我歇着不好吗
2 公司的服务怎么养关我屁事,我就挣死工资 3 需要提供升级好处的理由,为什么值得花时间升级 4 有的东西还真就只在 jdk8 工作 5 你还可以一开始就选 kotlin |
109
superrichman 2022-10-29 12:03:55 +08:00 via Android 1
@dayudayupao 你的项目里只有自己的代码?你不要用其它的库?你能保证那些库不会出问题?我用旧版本的是因为经过了时间的检验,这个版本组合经过多年验证没有问题,你用新版本出问题了怎么办?说不定某个库都不维护更新了,你还敢升级 jdk 吗?
小项目怎么折腾都无所谓,大项目影响到可用性和连续性就是致命的。 |
110
14104chk 2022-10-29 12:58:26 +08:00 1
我曾经遇到一个问题,刚出 JDK7 的时候,用 SQLServer 的官方驱动取出的时间就是和数据库的时间差整整 1 天,查了好久才确定是驱动和 JDK 不兼容的问题
这个问题还好,测试的时候就能发现,但是我想说的是,不要以为 JDK 向下兼容就万事大吉 |
111
FakNoCNName 2022-10-29 13:11:36 +08:00
拿我们来说,开发人员是乐意推动升级的,但是报上去领导不同意,每次新的开发周期我们都会尝试推动升级,到今年已经被领导连续拒绝不下 4 次了。
随后每次客户遇到问题找到大领导的时候,直属领导才会着急忙慌的让我们升级、重构。蛋疼! |
112
NXzCH8fP20468ML5 2022-10-29 13:20:45 +08:00
老应用升级是不可能升级的,但有情怀的架构师会推动新项目上 JDK11 。
不过新应用基本上都是年抛型,就导致技术资产很难沉淀下去。 而且根据某部门反馈 JDK11 比 JDK8 不稳定,这把其他开发部门吓到了,就只敢用 JDK11 开发对内服务了。 目前 JDK17 的升级看不上。ZGC 相对来说没用,吞吐量比延迟更重要。 现在大家现在都在等 JDK21 和 Spring boot 3 ,等虚拟线程和分代 ZGC 。 |
113
uni 2022-10-29 14:00:05 +08:00
我也一直很好奇这个问题,像前端的框架、基础设施,node ,python ,大家都在有条不紊地升级,java 碰到的升级的阻力理论上这些也应该都会碰到啊
|
114
guyeu 2022-10-29 14:15:47 +08:00
我司新立项的项目都是 17 了
|
115
a0210077 2022-10-29 14:16:33 +08:00
1 、我们很懒
2 、新项目我都是力推 17 的,LST 版本,而且已经出来一段时间,稳定下来了 3 、老项目没事不去动,虽说 JDK 大版本向下兼容性非常好,但不是说用 JAVA 写的所有库都能正常向上适配,需要对依赖的库进行全面检查,万一哪个库出现了骚操作编码就麻烦了。这样一来就需要对项目的所有内容进行测试,时间和人力成本少不了,项目越大成本越高 |
116
c6h6benzene 2022-10-29 15:24:37 +08:00 via iPhone
|
117
dayudayupao 2022-10-29 15:27:32 +08:00
@superrichman 嗯,你说的有道理,如果项目大了风险不好把控,小项目还好,就算有 bug 总能在特定时间内 hold 住
|
118
NXzCH8fP20468ML5 2022-10-29 15:30:33 +08:00 1
@uni 前端有是滚动升级,必须引入一个新包,最小 node14 ,这时候就得费时费力把所有不兼容的统统换掉,而且浏览器环境偶尔扔出一些错误照样跑,大不了多刷新几次,重试几次。
java 你懂的,几乎所有包都兼容 jdk8 ,根本没用升级动力,所以还得看 spring boot 3 。 而且前端也没好到那里去,vue1.x vue2.x angularjs1.x 还在看着呢。 |
119
NXzCH8fP20468ML5 2022-10-29 15:43:50 +08:00 1
@uni 突然想到一点也很重要,前端代码库普遍比较小(排除 node_modules 后),即使大项目也容易按照功能和路径进行拆分和升级。
但是像 python3 都出来十几年年了,各大发行版 Linux 和 macos 这几年才默认不自带 py2 。 另外基础设施是指 C++吗,照样升级不动,百度前几年 gcc 版本锁死 3.x ,这几年才升级上来,有 C++11 就谢天谢地了。 |
120
uni 2022-10-29 18:16:26 +08:00
@xxfye 基础设施指的是 npm 升级到 pnpm 这种,还有 webpack 升级到 vite
我觉得你说的有道理,java 在滚动升级这一块还得向 node 和 python 学一个( |
121
VERTU 2022-10-29 19:04:34 +08:00
公司项目的话一般会考虑 ROI 吧,如果升级后没有显著收益应该是不会有人愿意动一个如此"健壮"的系统
|
122
janus77 2022-10-29 20:29:47 +08:00
又不是不能用.jpg
|
123
pony2335 2022-10-29 20:41:02 +08:00
springboot 不支持
|
125
HB9527 2022-10-29 22:24:07 +08:00
升级 JDK 涨工资吗?
|
126
ikas 2022-10-29 22:54:01 +08:00
入职新公司半年,已经将 jdk 从 8 升级了 17..
如果你能决定技术栈..为啥都要在别人之后呢.. 很多人总有一堆理由.. 没意思.. |
127
zachlhb 2022-10-30 07:15:27 +08:00 via iPhone
Net core 不香吗,搞什么 java
|
128
cyndihuifei 2022-10-30 08:47:06 +08:00
其实真的只是不学习罢了,说公司说领导不让升级的人,估计自己的项目也不会想着要升级,没那么多借口
|
129
tlmn 2022-10-30 11:00:33 +08:00
升级是需要成本的,其它语言升级有的是官方推动,直接不给维护了,社区也开始用新版本后,旧版本才慢慢褪去。
但是你看社区里现在有多少用 JDK17 写的开源项目? |
130
seliote 2022-10-30 21:38:19 +08:00
来我们公司吧,全线上 17 了
|
131
winrar 2022-10-30 23:46:14 +08:00
平时上班已经够忙了,还给自己找事。
|
132
justRua 2022-10-31 09:45:54 +08:00
新项目可以直接用最新的,老项目真的没必要,jdk 模块化是有破坏性的,一些旧点版本的框架没有适配升级,不加--add-opens 根本跑不起来
|
133
cco 2022-10-31 10:21:09 +08:00
因为依赖问题啊,有些组件,中间件,模块就是不支持高版本 JDK ,经过大量的测试,也只是一部分升级到 JDK11 ,其他的高于 8 就报错,主要原因是依赖了其他公司的包、中间件等等,人家就是不支持 1.8 以上得。
另外一个问题就是,每次升级都要大量得测试,现在一个人干两个人的活,开发人员也没时间去干,其次,管理人员也不愿意徒增风险,除非不得不升级,不然想让他们升级,做梦吧。 |
134
yc8332 2022-10-31 11:48:21 +08:00
主要是没有理由去升级啊。。跑得好好的,为啥要给自己带来不确定的风险
|
135
Joker123456789 OP @singerll 对啊,新项目除了 装 JDK ,还有什么多余的工作量? 你不会是要把写代码这种通用的工作量 也算进去吧?
|
136
Anita720 2022-11-09 09:55:19 +08:00
@tanoak 没有呢,刚测试了下,mybatis-plus-boot-starter3.5.2,spring-boot-starter-parent2.7.4 ,jdk17.0.5 ,依旧报错
|
137
bishengyang 2022-11-12 02:05:04 +08:00
JDK9 引入了 JPMS ,造成了 breaking change 。
|
138
Aresxue 2022-11-14 10:43:59 +08:00
稍微大点的公司都是有基建的,很多都是基于 jdk8 的中间件去做二次封装和二次开发的,你让基建一下子全部适配高版本 jdk 几乎是一个不可能的事实,除非你要做一个独立性很强且足够简单的应用可以不依赖各种中间件和原有的登录、权限、账号体系,这样才算是真正的没有历史包袱的,否则上述每一个地方都会是拦路虎,到最后你可能会发现降级到 jdk8 是最佳方案。
|
140
lmshl 2023-01-14 20:20:12 +08:00
|
142
lmshl 2023-01-14 23:19:39 +08:00
@roundgis 有用过一段时间,后来没再采用,因为要给每个用到的库编写 reflection 和 proxy 表,太费精力了,也不可持续。
后来还撞到了 native image 编译器的 bug ,回退到 20.x 可以编译,升级到 21.x 编译就会异常终止。 |
144
yiyiniu 359 天前
这个工具可以一键切换不同 JDK ,还能自动配置环境变量。可以看下: https://www.v2ex.com/t/992876 https://i.postimg.cc/htnYGWkM/b1.png
|