何年にもわたって jvm バイトコード (またはクラス形式) 仕様で変更されたもののリストは、インターネットのどこかにありますか?
たとえば、クラス ファイル バージョン 49.0 および 51.0 以降、クラスに追加された新しい属性が多数あったことを私は知っています。また、そのldc*
命令は 49.0 以降、より多くの引数をサポートしています。そのような変更の完全なリストはありますか?
異なるバージョンの JVM 仕様を比較できます。
残念ながら、すべての違いをきれいにレイアウトしている場所を私は知りませんが、ここを見ればアイデアを得ることができます。バージョン 1.5 および 1.6 の場合、変更点は赤で強調表示されます。
追加された主なものは、Java 言語の新機能 (アノテーション、列挙型、内部クラス、ジェネリックなど) をサポートするためのオプションの属性だったと思います。51.0 はすべての invokedynamic 関連のものも追加します。50.0 は、51.0 で必須になった StackMapTable を追加します。また、50.0 では jsr/ret 命令が削除されました。
IIRCldc
は、50.0 以降の Class 定数と 51.0 以降の MethodType 定数をロードできます。