接上篇
# 升级建议(重要)
从Java 11后Oracle不再单独发布JRE和Server JRE了,并统一JDK名称为:Oracle JDK。
另外Java 11及之后的版本,将不会再发布对32位操作系统支持的版本。
![b999663db3b50090a6a8bdc226e65e99.png](https://i-blog.csdnimg.cn/blog_migrate/bcf4348f31b236249fa5d51538f1fb22.jpeg)
# 新旧项目不同策略
新启的Java项目建议直接从Oracle JDK 11开始搭建,千万不要犹豫,因为技术都是越新越强的。Java8就像晚期的大众,而Java11却是新兴的特斯拉。
历史的项目如果只是维护的话,干脆就放着运行不要动好了,等哪天决定重构了再考虑升级到Java11。因为最大的问题不是自己公司开发的Code不能迁移到高版本,而是项目中引入的第三方Jar,这个东西搞起来十分头疼。
# JDK升级分析工具
升级最担心的就是被删除的模块!
推荐IBM公司Liberty团队提供了一个十分好用的检测Toolkit程序,可以扫描应用程序二进制文件(.war),发现的任何潜在的Java 11问题并生成Html报告。绝对的大利器,详细内容直接查看IBM官方介绍:Scanner Kit。
直接运行java -jar binaryAppScannerInstaller.jar
,按步骤安装有个lisence声明和目录指定,默认目录名wamt
。
![5737a673597c49dbe95f78bb6903175f.png](https://i-blog.csdnimg.cn/blog_migrate/08ec98984456ee652dc3979b22fa1e19.jpeg)
参考文档中会有使用详细介绍,也可以参考下面测试例子(扫描很慢,要些耐心等):
java -jar binaryAppScanner.jar Root.war --analyzeJavaSE --sourceJava=oracle8 --targetJava=java11 --output=./java11/RootReport.html
查看帮助命令:
java -jar binaryAppScanner.jar Root.war --help --all
![2474c9b51fbf9c38f3ace2a773f2903e.png](https://i-blog.csdnimg.cn/blog_migrate/0bd261f1ef3ad00390baae3d9c53ad59.jpeg)
报告结果如下:
![f4c37524ac604bbddc6a236d84afcfa7.png](https://i-blog.csdnimg.cn/blog_migrate/4164cb785b709d4d2681efc5046399c2.jpeg)
![efeba02f53150655ee1aedc700189eba.png](https://i-blog.csdnimg.cn/blog_migrate/93cd7e25dd060cbb405320a690171933.jpeg)
# JDK不同于OpenJDK
推荐Oracle JDK,因为更加稳定可靠。
- 只有Oracle JDK支持Solaris系统;
- 只有Oracle JDK才支持msi这样的安装程序;
- Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;
- OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是 OpenJDK的一个实现,并不是完全开源的;
- Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎相同,但建议您选择Oracle JDK,因为它经过了彻底的测试和稳定修复;
- 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;
- Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;
- Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。Oracle公司很善于打官司,所以这点很重要。
![e52fc381185534f175e717091d4c1b01.png](https://i-blog.csdnimg.cn/blog_migrate/17cdb830e9ef71f20d2fedad67fe9ef3.jpeg)
你会升级到JDK14吗?欢迎在留言区讨论。