以二进制打开字节码文件:
如上图中第5-8标识(圈起来的)的即字节码版本号
十六进制: 34
= 十进制: 52
= jdk 8
Java字节码文件版本号 | JDK版本 | 产品版本号 |
---|---|---|
· | 1.0.x | Java 1.0.x |
45 | 1.1.x | Java 1.1.x |
46 | 1.2.x | Java 1.2.x |
47 | 1.3.x | Java 1.3.x |
48 | 1.4.x | Java Java 2 Platform, Standard Edition (J2SE) 1.4.x |
49 | 5.x | Java 2 Platform, Standard Edition (J2SE) 5.0 |
50 | 6.x | Java 2 Platform, Standard Edition (J2SE) 6.0 |
51 | 7.x | Java SE 7 |
52 | 8.x | Java SE 8 |
53 | 8.x | Java SE 9 |
54 | 8.x | Java SE 10 |
55 | 8.x | Java SE 11 |
56 | 8.x | Java SE 12 |
57 | 8.x | Java SE 13 |
58 | 8.x | Java SE 14 |
59 | 8.x | Java SE 15 |
60 | 8.x | Java SE 16 |
61 | 8.x | Java SE 17 |
62 | 8.x | Java SE 18 |
Java SE 15版:
https://docs.oracle.com/en/java/javase/15/docs/specs/class-file-format.html
Java SE 14版:
https://docs.oracle.com/en/java/javase/14/docs/specs/class-file-format.html
Java SE 13版:
https://docs.oracle.com/en/java/javase/13/docs/specs/class-file-format.html
Java SE 12版:
https://docs.oracle.com/en/java/javase/12/docs/specs/class-file-format.html
Java SE 11版:
https://docs.oracle.com/en/java/javase/11/docs/specs/class-file-format.html
Java SE 10版:
https://docs.oracle.com/javase/specs/jvms/se10/html/jvms-4.html
Java SE 9版:
https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html
Java SE 8版:
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html
这些文档提供了Java字节码格式的详细描述,包括字节码文件结构、常量池、指令集、异常处理、调试信息和属性等方面的内容。如果你需要深入了解Java字节码的内部结构和工作原理,这些文档将会非常有用。
一种说法1.0没有引入字节码版本号(个人觉得不靠谱),从1.1 开始引入版本号45,之后每各版本标识不同的字节码格式(每个新版本的JDK都引入了一种新的字节码格式),随着版本递增。
关于这个说法,有找到依据的欢迎补充~