查看编译class文件时,使用的JDK版本(只能查看到大版本)

本文介绍如何通过解析Java字节码来识别编译时所使用的JDK版本,提供了两种实用的方法:使用十六进制查看器和javap工具。通过观察字节码文件的头部信息和使用javap的详细输出选项,可以准确地确定Java应用程序的编译环境。
该文章已生成可运行项目,

■本地JDK

■查看方式1

以十六进行形式打开文件

format-hex ./HelloWorld.class

===

CA FE BA BE 00 00 00 34 00 1D 0A 00 06 00 0F 09

===

HEX十进制jdk
2E46jdk1.2
2F47jdk1.3
3048jdk1.4
3149jdk1.5
3250jdk1.6
3351jdk1.7
3452jdk1.8
3553jdk9
3654jdk10
3755jdk11
3856jdk12
3957jdk13

===

公开大版本名称Major版本号内部版本号格式时间
Java8(1.8)52(0x34)1.8.0_XXX1.8.0_3012014年3月
Java953(0x35)9.0.X9.0.4 
Java1054(0x36)10.0.X10.0.2 
Java11(LTS)55(0x37)11.0.X11.0.12 
Java1256(0x38)12.0.X12.0.2 
Java1357(0x39)13.0.X13.0.2 
Java1458(0x3A)14.0.X14.0.2 
Java1559(0x3B)15.0.X15.0.2 
Java1660(0x3C)16.0.X16.0.2 
Java17(LTS)61(0x3D)17.0.X17.0.3 2021年9月
Java1862(0x3E)18.0.X18.0.2 
Java1963(0x3F)19.0.X19.0.1 
Java2064(0x40)20.0.X20.0.12023年3月
Java21(LTS)65(0x41)21.0.X21.0.02023年9月
Java2266(0x42)20.1.X22.x.x2024年3月
Java2367(0x44)21.1.X23.x.x2025年9月
Java2468(0x45)20.1.X24.x.x2024年3月

===

Java Downloads | Oracle

 (LTS) 表示这是一个“长期支持版本”(Long-Term Support)

2023年5月查看记录

===

  1. JDK 1.0 - 1996年1月
    (首个正式版本,代号Oak)

  2. JDK 1.1 - 1997年2月
    (引入内部类、JDBC、RMI等)

  3. J2SE 1.2 - 1998年12月
    (更名为Java 2 Platform,引入集合框架、JIT编译器等)

  4. J2SE 1.3 - 2000年5月
    (HotSpot JVM成为默认,引入JNDI、JavaSound)

  5. J2SE 1.4 - 2002年2月
    (引入NIO、正则表达式、XML处理等)

  6. J2SE 5.0 - 2004年9月
    (重大更新:泛型、注解、枚举、自动装箱/拆箱等)

  7. Java SE 6 - 2006年12月
    (Sun移交OpenJDK,改进脚本引擎、JAX-WS等)

  8. Java SE 7 - 2011年7月
    (Oracle收购Sun后首个版本,引入try-with-resources、NIO.2等)

  9. Java SE 8 - 2014年3月
    (里程碑版本:Lambda表达式、Stream API、新的日期时间API)

  10. Java SE 9 - 2017年9月
    (模块化系统JPMS、JShell等)

  11. Java SE 10 - 2018年3月
    (局部变量类型推断 var,短期支持版本)

  12. Java SE 11 - 2018年9月
    (首个长期支持版本 LTS,移除Java EE模块,引入HTTP Client)

  13. Java SE 12 - 2019年3月
    (Switch表达式预览,短期支持版本)

  14. Java SE 13 - 2019年9月
    (文本块预览,短期支持版本)

  15. Java SE 14 - 2020年3月
    (Records预览、Pattern Matching for instanceof)

  16. Java SE 15 - 2020年9月
    (Sealed Classes预览,短期支持版本)

  17. Java SE 16 - 2021年3月
    (Records、Pattern Matching正式化,短期支持版本)

  18. Java SE 17 - 2021年9月
    (LTS版本,Sealed Classes正式化,恢复严格封装)

  19. Java SE 18 - 2022年3月
    (UTF-8默认编码、简单Web服务器等,短期支持版本)

  20. Java SE 19 - 2022年9月
    (虚拟线程预览、结构化并发等,短期支持版本)

  21. Java SE 20 - 2023年3月
    (Scoped Values预览,短期支持版本)

  22. Java SE 21 - 2023年9月
    (LTS版本,虚拟线程正式化,分代ZGC等)

===

■查看方式2

javap -v XXX.class

javap -v HelloWorld.class

major 显示为52 (是十进制)

===

PS C:\test\myJava> javap -v HelloWorld.class                                                                            Classfile /C:/test/myJava/HelloWorld.class
  Last modified 2018-11-18; size 430 bytes
  MD5 checksum 19f3d94a06c6349d050673c6dabd9616
  Compiled from "HelloWorld.java"
class HelloWorld
  minor version: 0
  major version: 52
  flags: ACC_SUPER
Constant pool:
   #1 = Methodref          #6.#15         // java/lang/Object."<init>":()V
   #2 = Fieldref           #16.#17        // java/lang/System.out:Ljava/io/PrintStream;

===

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值