| 

.NET C# Java Javascript Exception

0
Eher eine theoretische Frage:

  • Enthält der Java Bytecode Typinformationen?
  • Wie sieht es bei Generics aus?

Danke
03.01.2011
kirt 502 2 7
2 Antworten
0
Java-Bytecode enthält mehr Typinformationen als der Interpreter eigentlich benötigt, beispielsweise Symboltabellen. Dadurch kann zur Laufzeit sichergestellt werden, dass Java-Objekte und -Daten nicht unbemerkt manipuliert werden.

Vor und nach der Ausführung eines Java-Programms hat jeder Wert in dem Stackbereich und jede Variable einen bestimmten Typ. Man nennt dies den Typzustand der Ausführungsumgebung. Dieser Typzustand ist statistisch zu überwachen und kann dafür verwendet werden, Pfadangaben und Verzweigungen eines Programms zu verfolgen. Außerdem kann mithilfe der zusätzlichen Typeninformationen ein spezieller Java-Mechanismus aktiv werden, der Verifier genannt wird.

Quelle: http://www.informit.de/books/java2_komp/data/kap15.htm
Absatz: 14.1.4 Verifizierung des Bytecodes

Ich kenn mich mit Java nicht so gut aus aber wenn ich das richtig deute würde ich sagen, das das auch auf Generics zutrifft.
04.01.2011
Floyd 14,6k 3 9
3
Man sollte unterscheiden zwischen dem Bytecode und dem Inhalt einer .class-Datei. Der Bytecode ist eigentlich nur die Befehlsfolge, aus der eine Methode aufgebaut ist. Die Class-Datei als ganzes enthält neben dem Bytecode aber auch Informationen über die Typen der Konstanten, Klassen- und Instanzvariablen, und lokaler Variablen von Methoden. Genaueres dazu steht hier: The class File Format

Informationen über die Typparameter von Generics sind aber in der Class-Datei nicht mehr vorhanden. Die Überprüfung der Gültigkeit von Zuweisungen, die auf den Typparametern von Generics basieren, finden ausschließlich zu Compilezeit statt. (Darum ist es auch nicht möglich, zur Laufzeit den Typparameter einer generischen Klasse zu bestimmen).

Weitere Informationen über die - nicht ganz so einfach zu erfassende - Verbindung zwischen dem Umgang mit Typen in der Java Virtual Machine und Typen in der Sprache Java finden sich im Abschnitt zu den Java-Sprachkonzepten in der Java Virtual Machine und den Typspezifischen Kapiteln 4 und 5 der Java Language Specification.
10.01.2011
Marco13 286 1 2

Stelle deine Java-Frage jetzt!