Änderungen am Class Dateiformat durch Java 5

Aus Eniak

Wechseln zu: Navigation, Suche

Java ist ja nicht nur eine Programmiersprache, sondern bringt auch eine virtuelle Maschine mit sich. Seit Java 5 gibt es aber eine Reihe von Erweiterungen. Dazu gehören unter Anderem Generics und Annotations.

Die Beschreibungen von Generics und Annotations beziehen sich - verständlicher Weise - oft auf die Programmiersprache selber. Doch was hat sich aus Sicht der virtuellen Maschine getan? Was wurde an der Struktur der Class Dateien geändert? Generics und Annotations können beide über die Reflection API zur Laufzeit ausgewertet werden. Das bedeutet, dass sie in den Class Dateien enthalten sein müssen.

Wenn man nach den Java Spezifikationen sucht, so kommt man recht schnell zur Java Language Specification. Diese definiert jedoch nicht die Struktur der Class Dateien. Sucht man weiter so kommt man zu der Java Virtual Machine Specification. Diese liegt zurzeit in der zweiten Edition vor.

Doch wenn man sich dort das Kapitel The class File Format anschaut, dann findet man nichts über Annotations oder Generics.

Was nun? Es existiert eine Changes for JDK 1.5 Seite, welche auf das das interessante Dokument namens revisions to "The class File Format" verlinkt. Hier ist nun alles erklärt. Die Änderungen sind mit einem schwarzen Balken auf der linken Seite gekennzeichnet.

Noch besser sind die Zusammenhänge jedoch in der ASM User Guide erklärt. In Kapitel 4 Seite 67 sind sogar Beispiele für die Signatur von Generics enthalten.

Persönliche Werkzeuge