百科问答小站 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中接口的多继承为什么对不同返回值,相同方法名和传入参数的相同方法报警? 
  学习java开发,应该重视哪些部分? 
  自学编程后,找工作简历该怎样写? 
  买了《阿里巴巴JAVA开发手册》的人,后悔了吗? 
  C#填了java哪些坑?java填了C++哪些坑?C++填了C哪些坑? 
  为什么 Google 要赔 Oracle 88 亿? 
  Java 中的多态是不是违背了里氏替换原则? 
  针对 log4j 此次漏洞,应该引起我们哪些警示?利用工具的同时我们是不是应该更注重基础原理? 
  如何有效的判断一个函数使用了传入参数中的哪些值? 
  大括号不换行的坏处有什么?为什么有人不换行? 

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





© 2024-09-19 - tinynew.org. All Rights Reserved.
© 2024-09-19 - tinynew.org. 保留所有权利