这是我非常不理解的一件事,如果说老项目有历史包袱,那么新项目呢? 如果说 8 以上担心 费用问题,不是有 openjdk 吗?
如果说 你做不了主,那么项目 leader 为什么不愿意用新的呢?站在公司外的角度来看,项目 leader 也是 java 开发者之一,他不是另一个群体。
1
redvoilin 2022-10-28 10:36:57 +08:00
因为为公司打工要考虑收益和风险,正在用的成熟技术如果可以完成需求,不用付出额外成本,风险还小,试问有多少人有动力升级
|
2
neochen13 2022-10-28 10:37:44 +08:00
新项目一般基于 11 了吧……
|
3
xiangyuecn 2022-10-28 10:38:36 +08:00
只要人和代码一个能 run 就行,什么最新版不最新版,不重要
|
4
RRyo 2022-10-28 10:40:01 +08:00 19
前排提醒 https://v2ex.com/t/852381
====↓赛博自由搏击战开始↓==== |
5
Ufo666 2022-10-28 10:40:39 +08:00
学习成本,线上环境变更,旧项目不全兼容...懒得折腾,就用 v8 喽
|
6
superrichman 2022-10-28 10:42:59 +08:00
新版本 => 新功能 => 测试少 => 潜在问题多 => 新问题很可能连解决办法都没有。
生产环境出了这种问题怎么办?等死吗? |
7
ghost024 2022-10-28 10:45:05 +08:00 1
他们技术选型的时候主要是害怕如果是最新的 jdk 的话,周围的生态没有跟进,所以就用 java8 了
|
8
Kaiv2 2022-10-28 10:51:24 +08:00
依赖的包没有升级,除非不用
|
9
dwlovelife 2022-10-28 10:51:27 +08:00
两个原因吧
|
10
dwlovelife 2022-10-28 10:52:44 +08:00
1. 大部分老项目是基于 JAVA8 的,依赖太多不容易进行版本升级
2. 大部分人不是那么热爱学习的,特别是所谓的领导,java8 以上的新特性又不会升上去干嘛呢? |
11
bk201 2022-10-28 10:53:06 +08:00 2
升级你总归要带来收益,解决实际问题。你要是升级带来问题,不知道解决什么问题,你升个啥玩意?手贱?
|
12
coala 2022-10-28 10:54:09 +08:00
当你引入一个 xx 驱动包.jar 只写了支持 jdk8 是, 用着 11 的我内心是坎坷着硬上的.
|
13
Joker123456789 OP 都在说生态问题,但是 JDK 不是向下兼容的吗? 难道是 17 开始已经变了?
|
14
Joker123456789 OP @bk201 我说了那么多场景,你就只盯着老项目升级。
|
15
lakehylia 2022-10-28 11:00:01 +08:00
新项目也不会是全新的项目啊,一般都会用下公司里面现成的组件,比如登录 /会员等等。
|
16
lsry 2022-10-28 11:00:29 +08:00
這不單單是個 jdk 的問題,還依賴有其他框架,尤其是某些内部自研框架,完全跟 8 綁定,升級 jdk 會導致一堆的不兼容問題。
|
17
Jwyt 2022-10-28 11:02:21 +08:00
@Joker123456789 升级 jdk 还是需要项目驱动,我们组很多就升到 11 了,因为底层有几个开源的依赖必须要 jdk11 以上
|
18
lisongeee 2022-10-28 11:03:45 +08:00
如果 java 像 js 一样有 babel/esbuild 这类转译工具,也可以在 java8 上使用部分的 最新 java 特性
|
19
66beta 2022-10-28 11:04:11 +08:00
除了问题,谁担责?
|
20
lmshl 2022-10-28 11:06:44 +08:00 5
我 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) |
21
yaphets666 2022-10-28 11:10:18 +08:00
开发软件是用来赚钱的,单纯的技术和开发没有意义。
|
22
HENQIGUAI 2022-10-28 11:11:23 +08:00
因为服务器掌握在运维手里,运维不升。。小小开发只能自己玩玩 demo.
|
23
fwrq41251 2022-10-28 11:16:24 +08:00
谁升级谁爽,java 现在 6 个月一个版本,每次升级到 lts 版本即可
|
25
jfj8848 2022-10-28 11:17:27 +08:00
如果不是安全问题或大的功能依赖问题,为什么要升级呢
|
26
dcsuibian 2022-10-28 11:17:44 +08:00
由俭入奢易,由奢入简难。尝试了新功能和新语法糖后,做项目的时候仍然要用老 JDK 。还不如先别试新的。
如果我是一个项目负责人:我会推荐用 Java11 ,不是 8 ,但也不是 17 。 首先出于稳定性考虑,只考虑 LTS 版,8 太旧、17 太新,11 正好。 另一方面是兼容性,虽然我觉得 Java 的向后兼容做得非常好,但偶尔还是会有问题,比如之前发现 11->13 时,nashron 就没了。 最重要的是从众,反正肯定有人会去尝鲜,等别人把坑都踩了,自己再上去不香么。 |
28
123zouwen 2022-10-28 11:19:14 +08:00 via iPhone 1
我们早就是 17 了。从 8 到 11 到 17 还是老项目逐步升级的。
升级 jdk 不只是版本的升级,还得思路代码写法升级。 有多少人用着 jdk8 ,写着 jdk6 的代码? |
29
chenPiMeiHaoChi 2022-10-28 11:19:47 +08:00
你们打 jdk17 的镜像的基础依赖是啥?
|
30
liuzhaowei55 2022-10-28 11:22:14 +08:00 via iPhone
22 楼老哥说的才是真相,整个技术沉淀都是 8 ,往上升意味着整个工具链的升级改造,小公司自己搞搞就上了,大公司只能 cto 层面战略推进了
|
31
cmax 2022-10-28 11:22:23 +08:00
直接升级可能遇到兼容问题,不过可以借助 EMT4J 这个工具减少一些的麻烦,https://zhuanlan.zhihu.com/p/549842999
|
32
Anita720 2022-10-28 11:26:00 +08:00
JDK17 现在使用 mybatis plus 的问题还没有修复吧,https://gitee.com/baomidou/mybatis-plus/issues/I5RH1Z ,现在只能使用 QueryWrapper 或者降低 JDK 版本
|
33
superchijinpeng 2022-10-28 11:27:08 +08:00
不是绝对,我司包括底层大数据服务都升级到了 17
|
34
yeyang5211 2022-10-28 11:30:57 +08:00
升级不加薪 , 不升级也不降薪. 升级平白加了工作,到点下班不香吗?
|
35
feelinglucky 2022-10-28 11:32:52 +08:00 8
我说句不好听的,国内大部分 Java 开发人员可能脸 lambda 都写不明白
|
36
yazinnnn 2022-10-28 11:34:20 +08:00
快进到为什么 java 后端不愿意学 kotlin
|
37
yifangtongxing28 2022-10-28 11:36:09 +08:00
leader 的汇报 ppt 里,jdk8 到 jdk19 没任何意义
|
38
EIJAM 2022-10-28 12:17:21 +08:00 via iPhone
Java 项目 ≈ 企业级。既然是企业级项目了,又不是自身兴趣好爱,那当然是稳定,能跑就行
|
39
Jooooooooo 2022-10-28 12:19:38 +08:00
我们就是用新项目从 7 升到了 8.
|
40
fox0001 2022-10-28 12:42:31 +08:00 via Android
我们新项目用 17
|
41
IvanLi127 2022-10-28 12:55:14 +08:00 via Android
想升级的已经把 java 淘汰了。
|
42
wu67 2022-10-28 13:07:40 +08:00
点进来我就大概猜到评论风向了. 后端仔就整天各种理由不升级. 前端仔就整天各种理由造轮子升级. hhhhhh
典型的依赖项不多的、官方提供各种基础工具各种包的, 就死活不升级. 依赖项多的, npm package 一大坨, 恨不得天天升级看能不能整点新花样. |
43
liununu 2022-10-28 13:22:31 +08:00
@feelinglucky #35 赞同,作业面试过的开发,要是能熟悉写好 Java 8 ( LocalDate / Instant / Lambda 之类的)都算是亮点了
|
44
gaifanking 2022-10-28 14:00:19 +08:00
@IvanLi127 赞同,有升级那个功夫搞搞 kotlin golang 等等岂不是更香。
|
45
to2false 2022-10-28 14:10:16 +08:00
因为他们熟悉古早版本,希望他们坚持加油,这样其他语言才能百花齐放
|
46
PythonYXY 2022-10-28 14:19:12 +08:00
用更加新的 JDK 版本能带来业务价值吗?能让自己升值加薪吗?不能的话为什么要做吃力不讨好的工作。
|
47
tonyli 2022-10-28 14:24:33 +08:00
就很简单的问题,利益,风险和价值;用新版本有啥好处,装逼?别提什么推动创新发展,那其实并不是大多数人要考虑的
|
48
leeg810312 2022-10-28 14:41:23 +08:00 1
.net 项目都升级到 6 了,Java 新项目现在还是大量 8 和少量 11 ,要说生态,其他语言平台没有生态要考虑吗?就没有见过这么不思进取的行业生态,平常总说技术更新快,要不断学习进步,但到了这方面就一致赖在旧版本上,11/17 都是 LTS 也不用,我看说到底就是懒惰。
|
49
blessingsi 2022-10-28 15:01:42 +08:00
我认同的理由:依赖的第二方包只支持到 java8 ,更高的版本需要付出很大成本处理这些依赖。
我不认同的理由:没收益,从标准库新 api 到新 gc ,对性能和开发体验绝对都有提升;有风险,11 GA 已经四年了,升级指南一大堆,从 spring 到 idea ,大把项目和工具在用,自己的项目没那么特殊只能跑在 jav8. 从 8 升 11 再升 17 ,一定比直接从 8 升 21 来的简单。迟迟不升级,说明技术负责人认为自己的公司活不到需要升级的那一天,否则只是给未来的自己挖更大的坑罢了。 |
50
ciki 2022-10-28 15:06:06 +08:00
升级带来一系列未知问题,要是出了严重 bug ,锅还得你背
|
51
hankli 2022-10-28 15:13:06 +08:00
个人用 17 巴适滴很
|
52
fanxasy 2022-10-28 15:33:32 +08:00
为什么就是没有人愿意用 kotlin?
这是我非常不理解的一件事,如果说老项目有历史包袱,那么新项目呢? 而且不存在费用问题 如果说 你做不了主,那么项目 leader 为什么不愿意用新的呢?站在公司外的角度来看,项目 leader 也是 jvm 开发者之一,他不是另一个群体。 |
53
elissa2333 2022-10-28 15:41:04 +08:00
koltin +1
|
54
salasoyo 2022-10-28 15:41:09 +08:00
公司的标准选型就是 jdk_1.8_202 ,其它属于红线~~
|
55
exploreexe 2022-10-28 15:53:45 +08:00
没事非要给自己添加工作量干嘛,早点下班不好么
|
56
Joker123456789 OP @fanxasy 那你一直用 jdk8 吧
|
57
Joker123456789 OP @PythonYXY 你手机的应用商店,提示 app 有更新,你也不更新吗? 这怎么能叫吃力不讨好? 哪里吃力了? 安装 17 比安装 8 步骤更繁琐吗?
|
58
rehoni 2022-10-28 16:25:53 +08:00
为什么新项目就可以用新 jdk ,公司开发不都有脚手架吗?升级脚手架工程量就太大了,虽然我也想用新 jdk
|
59
charlie21 2022-10-28 16:35:33 +08:00 via iPhone
如果是前端娱乐圈,人们即将分分钟把不兼容 jdk 11 的包升级为兼容 jdk 11 的包,顺便纳入自己名下,方便跳槽时候为自己增加谈判筹码
node js 一直是用最新版本,从没听说过哪个 npm 包只兼容老版本 node 导致人们只用老版本 node 的,没听说过。人们会把不兼容的包分分钟埋了: 埋了晓得吗,把只兼容老版本 sdk 的第三方包给埋了 |
60
xz410236056 2022-10-28 16:42:21 +08:00
能决定的人不写代码,或者抱着毕业那几年学到的知识打算用一辈子。你观察一下他们还学习新知识吗
|
61
xz410236056 2022-10-28 16:42:52 +08:00
@jfj8848 #25 新 API 首先是方便开发者啊
|
62
allgy 2022-10-28 16:55:00 +08:00
学 GO 吧,升级版本只需三步:1.下载.tar.gz 压缩包 2.解压 3 替换原来的 bin 文件 完成
|
63
jinsongzhao 2022-10-28 16:58:52 +08:00
幸好没升级到新的,最近半年好多客户都忙着给 java 程序打补丁,唯独我 java8 和 log4j1.x 不用!不过经过这一轮超级漏洞,估计 java 会有个可靠的新版本了吧
|
64
clf 2022-10-28 17:38:38 +08:00
JDK11 没啥大坑了。但 JDK17 还有些小坑呀。虽然我们下一个 JDK 版本应该就是 17 了,但升级也不会这么快。
openjdk11 是免费的,但更新频繁,会引入很多实验性功能。 oraclejdk11 是收费的,更新的东西都是经过大量测试的,有商业支持,大部分企业选择使用 oraclejdk8 就是因为它免费且稳定。 同样的,直到 jdk17 ,oraclejdk17 又免费了,还是长期支持版本。另外就是配合的生态 SpringBoot 等的下一个大版本也是 jdk17 ,所以……比如上面说的 kotlin ,项目部分内容已经使用 kt 了,但 kt 目前和 jdk17 一起用会有很多坑,和 jdk8/11 使用基本没坑。 |
65
twofox 2022-10-28 17:40:16 +08:00
我们的技术总监说了,主要是怕出了 bug ,不好排查,大家都不懂。
|
66
wetalk 2022-10-28 17:46:26 +08:00
就跟为啥不用 windows11 一个道理
|
67
Joker123456789 OP @wetalk 问题是 现在 大部分人都在 win10 ,而不是 xp 啊。 如果都在用 JDK11 而不是 8 ,我也就没啥疑问了
|
68
NoString 2022-10-28 18:00:24 +08:00
SLA 的问题,做工程不能只看技术优势啊,比如一个庞大的游戏后端,代码很烂但是不影响给公司每天带来百万收入,那请使用新技术的意义在哪里?如果持续的迭代升级能吃下新来的增量,服务自然会从原始的单体服务演变到集群再到拥抱云原生 ServiceMesh 、一体化的 CICD ,如果只从技术角度出发答案肯定是升级,但是公司既然是公司,是以盈利为最终目的的,不是以使用最新技术为目的的,因地制宜就好了 8 没那么糟糕,17 也不是那么万能(公司核心项目都是 2020 的时候使用 jdk11 )
|
69
mcluyu 2022-10-28 18:01:16 +08:00 1
说明了一个问题, 任何个人团体没有压力, 没人逼着是永远不会往前走的。。。
你看前端有各种浏览器新版本逼着, 客户端有 iOS 只能升不能降的系统版本逼着,就连 Windows , 新的硬件很难装上老旧的系统。 而 Java 后端。。没有限制,系统更新影响不到,机器升级硬件影响不到,没有驱动力。 |
70
zeroday 2022-10-28 18:22:04 +08:00
升级了花了时间精力,冒着被故障的风险,然后最后被问一句:你觉得你这么做对业务有什么价值?
|
71
singerll 2022-10-28 18:28:47 +08:00
1 、“其他语言难道没这些问题??? 为什么他们就能一直用最新的呢?”,我不知道你是怎么得出的这个结论,至少 python 表示不服。
2 、“还有说工作量的,安装 JDK17 比安装 8 步骤更繁琐吗?”,合着 java 开发的工作就只有安装 jdk 了吗??? |
72
pengtdyd 2022-10-28 18:48:02 +08:00
《不要用新版本,老版本稳定》这句话应该很多人都听过,现在用 JDK 1.5 的人估计还大有人在
|
73
albert0yyyy 2022-10-28 18:50:57 +08:00
先问是不是,再问为什么。这么问,感觉就像是引战。
|
74
stevefan1999 2022-10-28 19:26:52 +08:00 via Android
因爲人都是傻逼 不想冒風險
|
75
Wien 2022-10-28 19:59:25 +08:00
很简单,升级需要有利益驱动。如果你说能提升 20%的计算性能,那还有点吸引力。否则我花时间去做一个没有收益的事情,为啥呢?
|
76
kangu 2022-10-28 20:10:12 +08:00
应该反向思考一下,8 之后的版本究竟又带来了什么,需要去冒着不确定的风险来升级?
|
77
SekiBetu 2022-10-28 20:10:13 +08:00 1
初级码农太多了,导致你作为高级的,不敢去升级,因为一升级,那群人就摆烂,说不会解决兼容问题,看着你了
|
78
SekiBetu 2022-10-28 20:12:57 +08:00
oracle 为了这帮坐着轮椅的初级码农,推出了 DLC ,叫做 Java SE Subscription Enterprise Performance Pack (Enterprise Performance Pack) 这个版本是花钱和 oracle 订阅的,他会给你提供一个特殊的 jdk 版本,其中只包含 8 的特性,但是会加上 8 到 17 的所有性能提升
|
79
kaneg 2022-10-28 20:16:18 +08:00
想升级的人没有权利,有权升的又没有动力。
|
80
Chad0000 2022-10-28 20:18:09 +08:00 via iPhone
.net 阵营的路过:不是 lts 的我都积极升级(几乎啥也不需要改)。马上出 7 了,基本上改个版本号即可,继续跟进。
|
81
Aloento 2022-10-28 20:22:23 +08:00
@Chad0000 同 .NET 阵营,最喜欢干的事情就是更新 .NET 环境,我们都是直接用的 preview (感觉预览版比正式版好使)
|
82
voidmnwzp 2022-10-28 21:03:03 +08:00 via iPhone
更新点不痛不痒 没有革命性的特性推出 不知道 17 的虚拟线程会不会成为更新契机
|
84
securityCoding 2022-10-28 21:51:03 +08:00
太菜吧,我们组内 go 的版本一个比一个新 233
|
85
yxisenx 2022-10-28 22:26:09 +08:00
要成本啊, 还要担风险
|
86
wdlth 2022-10-28 22:30:43 +08:00
我们是有用 Java 11 和 17 的,性能提升 15-20%吧,还有更完善的 aarch64 支持。
|
87
axuhongbo 2022-10-28 22:42:26 +08:00
升级过一次 java window 系统直接崩了
|
88
catteroLo 2022-10-28 23:13:02 +08:00
别说 JDK 了,V 站关闭 Windows 系统更新都一抓一大把
|
89
duckrxy 2022-10-29 00:19:50 +08:00 3
你得看公司的性质。如果是个技术驱动的创业型公司,没什么包袱,或者是 MS 这类必须在技术上做 leading 的公司,自然愿意采用新的技术,别说 Java17 了,连 dotnet core, rust 都敢推。我上一家公司就是这样,包袱小,团队小,我可以精心去招对新技术有热情和想法的人,连 kotlin 都能上。
后来去了一家业务驱动的公司,就是以满足业务上的需求且稳定为第一要务,生产上的任何扰动都会造成难以预料的损失,别说用新的 Java 了,你就是改一行代码说不定上下游都受影响,甚至为了修复安全漏洞升级依赖包版本都需要花不少人天去解决冲突问题,这些花销都是要被业务盯的,你要是技术负责人说我要用 JAVA17 ,下一个问题就是,用这个能带来什么收益?我要投入多少资源?市场上容易招人吗?直接就给顶回来 所以这个事情不是一个应然的问题,而是一个实然的问题,公司不同,取向不同,选择自然不同 |
90
deef 2022-10-29 01:06:04 +08:00
升级又不能加薪,重复造轮子才是王道。新项目基于 8 的一大堆,没任何理由升级。
|
91
sleepybear1113 2022-10-29 01:31:27 +08:00
那天公司从 0 开新项目,我提议直接用 Java 11 ,都没敢说 17 。主管说,11 有什么特别的点,去值得特别去升级吗,8 已经成熟了,如果因为 11 有什么问题,投入产出不值。但是同意了我们把 Maven 换成了 Gradle 。但是我自己是从 17 出来之后,就自己全部的项目,升级到 17 ,甚至有些上 Spring Boot 3.0.0 预览版。除了一个绑定 Windows 平台的 x86 的 Java 项目必须用 Java 8 32 位。不过写 17 的确,有些地方有一点点的语法糖,写起来方便。由于是个人项目,没有体会到多少和 8 的差距。
|
92
wiix 2022-10-29 06:48:17 +08:00
谁说没人,公司的项目依赖能用新的稳定版绝对不用旧的,中途升级依赖,只要看了官方合并文档也几乎不会有问题。
说实话大部分人写出来的那些个糟 B 代码,不配谈稳定! |
93
wangsd 2022-10-29 08:26:36 +08:00
现在的产品一开始是基于 JDK11 构建的,那会大概是 2020 年,等要发布了,结果公司运维告知我们公司的 DevOps 环境只能支持到 JDK8 ,结果我们只能退回到 8.
|
94
L4Linux 2022-10-29 09:13:11 +08:00 via Android
Oracle 搞了个项目,你们不愿意升级到 JDK17 ,那就偷偷把 JDK8 的 JVM 换成 JDK17 的。
|
95
dbpe 2022-10-29 09:16:50 +08:00
因为“稳定”嘛,然后大部分人也懒得管这个破事。。。
java 真就成也稳定。。败也“稳定”了 |
96
Dlin 2022-10-29 09:23:19 +08:00
1 、因为你只是帮老板打工的
2 、因为你不愿花精力学习 3 、因为你团队其他人不愿意 4 、因为你技术领导只是个半罐水 |
97
kalman03 2022-10-29 09:32:37 +08:00
好吧,在升级的过程中,有困惑吗?工具大法来解决:www.mvncenter.com ad.
|
98
bthulu 2022-10-29 10:02:00 +08:00
升级? 升级对业务有用吗, 能提升业绩吗? 不能, 不能你升个锤子.
|
99
xuanbg 2022-10-29 10:10:26 +08:00
怎么没有在用?我这边项目已经开始逐步从 8 升级 17 了。
|
100
wetalk 2022-10-29 10:31:37 +08:00
@Joker123456789 我认为 JDK8 的地位对标 W10 ,她两几乎同年正式发布,像 JDK11 ,我更愿意把他当成昙花一现的 W8.1
|