百科问答小站 logo
百科问答小站 font logo



为什么 Java/JDK 都快出 18 了,还有人用 1.8 呢? 第1页

  

user avatar   liu-lin-dong-18 网友的相关建议: 
      

以我曾在的公司为例吧。

我曾经把维护的一个祖传系统从JDK 1.6 升到了 1.7,后来又升到了 1.8,然后一直在 1.8 不动了。

公司在安全性方面有严格的规定,其中有一条就是如果使用的软件或组件官方不再宣布维护了,那么要么升级到官方维护的版本,要么使用新的替代产品。

Sun 或 Oracle 宣布不再支持 1.6 了,然后我们就升到了 1.7,宣布不再支持 1.7 了,我们就升到了 1.8。然而 1.8 到现在官方还是支持的,所以现在就变成了小版本升级,例如 1.8.211 不支持了,就升级到 1.8.311。为啥?这种小版本升级省时省力呗。在前两次大版本升级时都引发过一些问题,前车之鉴在那里呢。但那时升级是公司强制要求,锅不用自己背。而你要主动升级大版本,那不成主动背锅了嘛。

有人可能奇怪升级个JDK还能出 bug,我随便说几个例子吧。

一个是不知道哪一代留传下来的代码中循环一个 HashMap 执行一系列任务,见鬼的是这些任务的顺序还是有依赖关系的,如果顺序不对就会出错。原先运气好没事,升级了 JDK 后估计 hash-code 算法变了,顺序和以前不一样了,然后就出事了。挖了半天才从屎山中找到原因。

一个是以前 JRE 中包含一个功能,可以动态编译 Java 代码并加载,后来这个功能挪到 JDK 中去了,再后来干脆就没有了。这个可是真要了命了,为了修正这个问题整个组脱了一层皮。

甚至升级小版本都出现过 bug, 引用的某个组件 (这个组件还挂着 IBM 的名号) 要读当前 JRE 版本号, 这货居然用了个 byte[] 存版本号的每一部分, 结果当小版本号比 255 大时溢出了!! 让我莫名想到比尔盖茨那个经典1M天量内存的笑话。

另外有一个小知识,JDK 有 LTS (Long Time Support) 版本,8和11都是,而10、12等都不是,公司只会要求选择LTS版本。




  

相关话题

  Node.js 未来会超越 Java 吗? 
  除了跨平台和平台成本以外,Java 还有什么特性是 C# 不具备的? 
  为什么NodeJS领域那么多框架,而Java则可以SpringBoot一家独大? 
  为什么有的GIF图片只会播放一遍,而有的会重复播放? 
  低耦合或代码重复在该情况中该如何抉择? 
  如何去分析开源的代码,例如tomcat? 
  GitHub 上可供新手阅读和玩耍的 Java 项目有哪些? 
  Node.js 未来会超越 Java 吗? 
  程序员如何挽救一个失败的项目? 
  零基础如何自学编程? 

前一个讨论
如何评价叙利亚内战?这场内战的根本原因何在?
下一个讨论
真的拿境外诈骗犯一点办法都没有吗?





© 2025-04-13 - tinynew.org. All Rights Reserved.
© 2025-04-13 - tinynew.org. 保留所有权利