我正在编写一个针对 JVM 的编译器,使用 ASM 库生成类文件。JVM 类文件有一个版本号字段,我正在尝试找出我应该放在那里的内容。
一个明显的可能性是,因为我碰巧使用的是 Java 1.7,所以将 51 放入该版本对应的数字。然而,据我所知,没有理由不能使用我的编译器来编写以 Java 1.6 为目标的程序,因此对版本号进行硬编码会破坏该用例。
是否有一些最小/基线版本号,以便您可以说“使用它是安全的,它标志着字节码格式或 JVM 语义的最后一次实际更改,之后的一切都将支持它”?
相反,也许最好的选择是获取编译器正在运行的 JVM 的版本号?如果是这样,在运行时可访问的许多不同 Java 版本属性中的哪一个应该用于此目的?