百科问答小站 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版本。




  

相关话题

  大龄门外汉如何进入软件开发行业? 
  为什么说 Java 比 C / C++ 慢? 
  Java bean 是个什么概念? 
  Spring Boot 是否很难用?为什么? 
  如何通俗地解释 C、C++、C#、Java、JavaScript、HTML、Python的用处? 
  每天学自学 3~4 小时 java ,一年后能到什么程度? 
  做开发你遇到最无理的需求是什么? 
  逃逸分析为何不能在编译期进行? 
  Java的语法规则是怎么传播开来的?(如若回答,请看完补充说明)? 
  做一个网页才几千,为什么程序员工资上万? 

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





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利