@Author Frank
@Date 2019-07-26
说明
JDK版本升级是Java开发人员一定会遇到的事情,为了保证生产环境的稳定,JDK升级需要多方面考虑,笔者从自身主导的多个系统的JDK升级情况出发,介绍下如何进行JDK升级。
环境:JDK1.7升级至JDK1.8;maven项目管理;Linux系统
步骤
1、思考为什么要升级JDK
2、目标版本的商业版权问题
3、项目代码变更
4、项目打包变更
5、项目部署变更
6、系统测试
笔者以实际项目为例,详细说明升级步骤:
1、为什么要升级JDK --- 需要你自己回答
2、目标版本的商业版权问题 --- 我们知道JDK已经开始进行商业授权,因此升级前需查看授权问题。
3、项目代码变更
1)项目采用maven管理,编译使用的是maven-compiler-plugin插件,需要将其中的编译环境配置设置为1.8
2)本地调试时需要更改IDE的编译环境、JRE运行时环境为1.8
4、项目打包变更
1)打包由CMO负责,有专门的打包服务器,需要通知CMO更换服务器JDK版本
5、项目部署变更
1)JDK更换为1.8
2)JVM启动脚本参数调整,适配1.8(比如1.8中使用元空间代替之前的永久代)
6、系统测试
1)版本包完成后,检查class文件的编译版本号是否是目标编译环境版本,比如,笔者的是1.8,其对应的主版本号是52
检查方法:挑选class文件(比如ABC.class),进入目录中,运行命令 javap -verbose ABC.class | grep "major version",会输出编译代码使用的编译环境版本,笔者的是1.8,因此输出 major version: 52
JDK版本与编译代码对应关系见附属信息。
2)启动应用后,检查应用使用的JDK版本,使用命令 lsof -p 应用进程号 | grep jdk 进行确认
3)全量测试,检查jar包冲突等问题(有些冲突在启动时可发现、有些只有在访问具体功能时加载到具体类时才会体现,因此需要全量测试)
附属
1、JDK版本与编译编号对应关系
Java SE 14 = 58 ,
Java SE 13 = 57 ,
Java SE 12 = 56 ,
Java SE 11 = 55 ,
Java SE 10 = 54 ,
Java SE 9 = 53 ,
Java SE 8 = 52 ,
Java SE 7 = 51 ,
Java SE 6.0 = 50 ,
Java SE 5.0 = 49 ,
JDK 1.4 = 48 ,
JDK 1.3 = 47 ,
JDK 1.2 = 46 ,
JDK 1.1 = 45 .
或查看此贴 https://en.wikipedia.org/wiki/Java_class_file
注意:个人原创,转载请说明出处