我正在編寫一個針對JVM的編譯器,它使用ASM庫生成類文件。 JVM類文件有一個版本號字段,我試圖弄清楚我應該放在那裏。要在JVM類文件中放入什麼版本號
一個明顯的可能性是,因爲我恰好在使用Java 1.7,所以將51放在與該版本對應的編號中。然而,就我所知儘管有人不應該能夠使用我的編譯器編寫針對Java 1.6,所以硬編碼版本號會破壞該用例。
是否存在一些最小/基準版本號,例如,您可以說「使用它是安全的,它標記了字節代碼格式或JVM語義中的最後一次實際更改並且之後的所有內容都將支持它」?
相反,也許最好的選擇是採取運行編譯器的JVM的版本號?如果是這樣,運行時可以訪問許多不同的Java版本屬性中的哪一個應該用於此目的?
JVM向下兼容。 1.7也會運行一個版本號小於51的字節碼。你應該問自己你需要的最小字節碼功能集是什麼,並使用相應的版本。 –