Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 JAVA - KLASSENDATEIEN Seminarvortrag von Studierach Beatrix.

Ähnliche Präsentationen


Präsentation zum Thema: "1 JAVA - KLASSENDATEIEN Seminarvortrag von Studierach Beatrix."—  Präsentation transkript:

1 1 JAVA - KLASSENDATEIEN Seminarvortrag von Studierach Beatrix

2 2 Überblick Klassendatei Spezielle Strings Constant Pool Attribute

3 3 Class-File Programm in Java Programm in anderer Sprache Programm in Java Compiler Java class files Java class files Other binary format

4 4 Typen 1. PRIMITIVE TYPEN: u1...1 unsigned byte u unsigned bytes u unsigned bytes u unsigned bytes 2. TABELLENNAME Big Endian

5 5 Klassendatei - Struktur ClassFile{ u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool [constant_pool_count-1]; u2 access_flags u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attributte_info attributes[attributes_count]; } Magic Number: 0xCAFEBABE

6 6 Beispiele zur Version JDK unterstützt Klassendatei- Formate der Versionen 45.0 bis 45.3 SDK 1.2 unterstützt Klassendatei- Formate der Versionen 45.0 bis 46.0 Versionsnummer: 45.3 Major version no. Minor version no.

7 7 Klassendatei - Struktur ClassFile{ u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool [constant_pool_count-1]; u2 access_flags u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields [fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attributte_info attributes[attributes_count]; }

8 8 Constant Pool Tag: CONSTANT_Class name_index: 7 Tag: CONSTANT_Utf8_info length: 3 This_class: 1 bytes: „Act“ constant_pool Entry #1 constant_pool Entry #7 this class

9 9 Klassendatei - Struktur ClassFile{ u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool [constant_pool_count-1]; u2 access_flags u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; }

10 10 Access_flags Flag NameBedeutungVerwendung ACC_PUBLIC Zugriff ausserhalb des Package möglich Klasse, Interface ACC_FINAL Keine Unterklassen erlaubt Klasse ACC_SUPER Hat geerbte MethodenKlasse, Interface ACC_INTERFACE Ist ein InterfaceInterface ACC_ABSTRACT Ist Abstract und kann nicht instanziert werden Klasse, Interface

11 11 Überblick Klassendatei Spezielle Strings Constant Pool Attribute

12 12 Spezielle Strings Fully qualified Names Simple Names Descriptors

13 13 Fully qualified names Source Code: – java.lang.Thread Class File: – java/lang/Thread

14 14 Simple names Constant Pool Eintrag der auf die Methode String toString() verweist: – „toString“ Constant Pool Eintrag der auf das Feld java.io.PrintStram out verweist: – „out“

15 15 Descriptors FieldDescriptor: FieldType ComponentType: FieldType FieldType: BaseType ObjectType ArrayType BaseType: B C D F I J S Z ObjectType: L ArrayType: [ ComponentType MethodDesciptor: ( ParameterDesciptor * ) ReturnDesciptor ObjectType ArrayType ParameterDesciptor: FieldType ReturnDesciptor: FieldType V

16 16 Beispiele - Field Desciptor int i;  I long [][] windingRoad;  [[J java.lang.Object[] stuff  [Ljava/lang/Object

17 17 Beispiel – MethodDescriptor int getSize;  ()I void main(String [] args);  ([Ljava/lang/String;)V boolean regionMatches(boolean ignoreCase, int toOffset, String other, int offset, int len);  (ZILjava/lang/Srting;II)Z

18 18 Überblick Klassendatei Spezielle Strings Constant Pool Attribute

19 19 Constant Pool – Allgemeines Format cp_ info { u1 tag; u1 info[]; } tag – Indikator für Typ des Eintrags info – Inhalt variert mit Wert des Tags

20 20 Constant Pool - Tag CONSTANT_Class CONSTANT_Fieldref CONSTANT_Methodref CONSTANT_InterfaceMethodref CONSTANT_String CONSTANT_Integer CONSTANT_Float CONSTANT_Long CONSTANT_Double CONSTANT_NameAndType CONSTANT_Utf8

21 21 Constant_Class CONSTANT_Class_info{ U1 tag; U2 name_index; }

22 22 CONSTANT_NameAndType CONSTANT_NameAndType_info{ U1 tag; U2 name_index; U2 desciptor_index; }

23 23 CONSTANT_UTF8 CONSTANT_utf8_info{ U1 tag; U2 length; U2 bytes[length]; }

24 24 Überblick Klassendatei Spezielle Strings Constant Pool Attribute

25 25 Attribute Code ConstantValue Deprecated Exceptions InnerClasses LineNumberTable LocalVariableTable SourceFile Synthetic

26 26 ConstantValue ConstantValue_attribute { u2 attribute_name_index; u4 attribute_length; u2 constantvalue_index; }

27 27 Code Code_attribute { u2 attribute_name_index; u4 attribute_length; u2 max_stack; u2 max_locals; u4 code_length; u1 code[code_ length] u2 exception table_length; { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]: }

28 28 LocalVariableTable LocalVariableTable _attribute { u2 attribute_name_index; u4 attribute_length; u2 local_variable_table_length; { u2 start_pc; u2 length; u2 name_index; u2 descriptor_index; u2 index; } local_variable_table[local_variable_table_length]: }

29 29 Danke für Ihre Aufmerksamkeit!


Herunterladen ppt "1 JAVA - KLASSENDATEIEN Seminarvortrag von Studierach Beatrix."

Ähnliche Präsentationen


Google-Anzeigen