我读过“
JDKs are usually forward-compatible,and JREs are usually backward-compatible”.
Java开发人员在他们的应用程序中做了什么样的版本检查?
你是否每次发布升级JDK?
如何最大限度地减少版本之间的不兼容性?
解决方法
对我们有效的策略是预先确定我们将支持哪些版本的JRE.我们通过考虑用户使用的平台,我们想要使用的特定JRE的版本特定功能以及JRE版本的发布日期来实现这一点.所有这些都是在与我们的客户支持部门密切协商下完成的. (当然,在其他条件相同的情况下,我们更喜欢新版本,因为它们往往具有错误修复,优化,安全更新等)
然后,这成为我们QA流程的输入.我们的测试工作必须涵盖我们支持的所有JRE版本.
最后,我们使用在部署应用程序时在JNLP文件中指定特定JRE版本的功能,以确保尝试使用不受支持的版本运行我们的应用程序的客户获得“快速失败”的体验(有关如何使用的有用信息)获得正确的JRE版本),而不是在路上的神秘失败.
我们做的最大限度地减少不兼容性的一件事是避免使用未记录的API(sun.misc等).
从代码中明确检查JRE的当前版本应该仅被视为解决特定JRE版本中的已知错误的最后手段.如果在此过程中尽早发现此类错误,我们更倾向于从支持的版本列表中删除该JRE版本.