有两个Java 8 downloads on the Oracle page。
release notes of 152注意到151上的两件事:
后者似乎更像是一条注释"这是一个错误,但未在8中修复;它将在Java 9"中修复。所以这也适用于版本151,即使它没有被提及。
我对前者不确定。为什么这不是151?我发现这非常令人沮丧。两个版本没有明确指示哪一个是更好的"或者"首选"适用于大多数开发人员的版本。
因此我的问题是:在生产中使用152还是151更好?是否有我可以或应该使用的指标来决定?
答案 0 :(得分:53)
一般的想法是
来自官方Oracle CPU and PSU Releases Explained
从Java SE 7 Update 71(Java SE 7u71)的发布开始 2014年10月,Oracle将发布重要补丁更新(CPU) 与Java SE 7相应的补丁集更新(PSU)相同。
我应该选择哪个Java版本:CPU还是PSU? Oracle 强烈建议所有Java SE用户升级到最新的CPU 可用于发布系列的发行版。大多数用户应该选择 CPU发布。
用户只应使用相应的PSU版本 如上所述,受该版本中修复的其他错误之一的影响 在发行说明中。
随后的CPU版本将包含来自的所有修复程序 目前的PSU。出于这个原因,组织应该测试当前 PSU在他们的环境中预期包含这些修复 在下一个CPU中。
Java CPU和PSU版本之间有什么区别? Java SE 重要补丁更新(CPU)包含对安全漏洞的修复 和关键错误修复。 Oracle强烈建议所有Java SE 用户在可用时升级到最新的CPU版本。 Java SE CPU版本是奇数版本(即7u71,7u65 - 见 更多关于Java SE版本编号方案的内容。)
Java SE补丁集更新(PSU)包含的所有修复程序 相应的CPU,以及其他非关键修复程序。 Java PSU 只有在受到其中一个影响的情况下才能使用 该版本中修复了其他错误。发行说明呼唤了 Java SE PSU版本中提供的其他修补程序。
PSU版本为组织和开发人员提供访问权限 除了包含在关键修复程序中的非关键修复程序 相应的CPU。
同时阅读 What's the difference between odd and even Java updates?
要查找公开错误修复的完整列表,您需要打开发行说明底部的Bug修复页面。
因此,PSU(8u152)中有238个错误修复(不仅仅是BigInteger性能改进)。在下一个CPU版本中,您很可能无论如何都会获得大部分内容。因此,建议尽可能快地更新到8u151并测试/调整代码以便与8u152进行比较。如果你真的需要一些错误修正,你可以更新到8u152。
答案 1 :(得分:6)
每个Oracle下载页面
Java SE 8u151包含重要的错误修复。 Oracle强烈建议所有Java SE 8用户升级到此版本。 Java SE 8u152是一个补丁集更新,包括所有8u151以及其他功能(在发行说明中有描述)。
这对于实际目的来说意味着如果你依赖于为你的应用程序说jdk8u144,你可以升级到151并且不会有任何破坏。
但是如果您要升级并且不特别关心152中包含的增强功能,您可以继续。
如果您的应用程序依赖BigInteger,例如在某些财务应用程序中,这可能是一个大问题,可能需要进行一定程度的集成测试。
答案 2 :(得分:3)
我有两个理由喜欢8u151:
当我要求它检查更新时,Windows的桌面Java更新程序更新为8u151。我将其解释为“Oracle认为这是大多数人想要/应该拥有的版本”。
BigInteger的性能改进似乎是151和152之间的唯一区别。如果这个改变经过充分测试并准备好进行生产,那么Oracle会将其改为151以避免混淆。他们没有。
答案 3 :(得分:3)
一般来说,我认为应该根据Oracle CPU and PSU Releases Explained页面(上面引用的)在CPU或PSU之间进行选择。
如果您有关键Java应用程序 1 ,最初选择PSU上的CPU。 CPU升级破坏您的应用程序的风险较小。
然后您应该计划很快升级到PSU 。原因是下一个CPU版本很可能包含此PSU中的增强功能。如果您在此升级周期中跳过PSU,则在下一个(强制)CPU之前,您将推迟查找/修复任何意外损坏。你无法预测这是否会导致问题。
否则,如果您需要列出PSU的增强功能,请选择CPU上的PSU。
如果上述情况都不适用,那么您所选择的并不重要。
请注意,如果您没有支持合同,这就是图片。如果您有支持合同,可能其他选项;例如支付Oracle为您提供自定义安全补丁,这些补丁可能会让您无限期地推迟安装增强功能。
另请注意,这是一个理想化的决策过程。在实践中,软件/ devops工程师通常必须在没有资源的情况下平衡竞争风险和时间表。
关于Oracle无法为您提供明确建议的主题......
他们无法确定BigInteger
性能升级是否会破坏您的代码。
他们确实知道编译器修复可以改变某些人的行为' (破碎的)代码。但是没有简单的方法来识别破碎的代码先验。
在这两种情况下,他们都不知道PSU的变化是否会影响你。该信息在发行说明中供您自行决定。他们还没有为您提供明确的决策树......但考虑到变更的性质,最实用的方法是“尝试”#34;。
这也解释了为什么"地球上最知识渊博的人群 2 " 也无法给出明确的建议。没有确定的答案。
1 - 严重可能意味着安全至关重要,安全至关重要,对您的组织业务至关重要,对您的客户至关重要。商业。你的电话。
2 - 拉另一个:它已经响起了!