JDK版本与Class版本的对应关系对照表
先介绍2个概念:
JDK版本:即Java SE版本,比如:1.4、5.0、8、11等。
Class版本:即Class文件的编译版本,表示java文件编译时所采用的JDK版本号,此信息存在编译后生成的.class文件中。
如何查看版本号:
JDK版本:
在控制台中输入命令:java --version,可以得到类似如下的信息:
java 11.0.21 2023-10-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.21+9-LTS-193)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.21+9-LTS-193, mixed mode)
其中第一行中就可以看到JDK版本号为:11.0.21,主版本号为:11。
Class版本:
使用十六进制的方式打开.class文件,第5~8这4个字节表示Class版本,其中5、6字节表示次要版本号,7、8字节表示主要版本号。可以看到Class文件的前8个字节类似如下:
ca fe ba be 00 00 00 37
其中前4个字节:ca fe ba be为.class文件的特殊文件头,为固定值。
后4个字节:00 00 00 37表示Class版本号,此处的次要版本号为00 00,值为0;主要版本号为:00 37,此处为十六进制,将其转换为十进制后,即为:00 55。
JDK版本与Class版本的对应关系
JDK版本 | Class主版本 |
---|---|
1.0.2 | 45 |
1.1 | 45 |
1.2 | 46 |
1.3 | 47 |
1.4 | 48 |
5.0 | 49 |
6 | 50 |
7 | 51 |
8 | 52 |
9 | 53 |
10 | 54 |
11 | 55 |
12 | 56 |
13 | 57 |
14 | 58 |
15 | 59 |
16 | 60 |
17 | 61 |
18 | 62 |
19 | 63 |
20 | 64 |
21 | 65 |
22 | 66 |
23 | 67 |
24 | 68 |
此对照表来源于官方的:https://docs.oracle.com/javase/specs/jvms/se24/html/jvms-4.html#jvms-4.1