百科问答小站 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、JavaScript、PHP、Python、Ruby 这些语言分别主要用来开发什么? 
  我发现设计模式一个很奇妙的情况,不知各位知友遇过没? 
  网站如何升级成https的? 
  代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分? 
  如果加班是自愿的,你们会为了钱加班吗? 
  如何看待代码中的中文变量名? 
  既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么? 

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





© 2024-12-26 - tinynew.org. All Rights Reserved.
© 2024-12-26 - tinynew.org. 保留所有权利