JAVA - KLASSENDATEIEN - PowerPoint PPT Presentation

About This Presentation
Title:

JAVA - KLASSENDATEIEN

Description:

JAVA - KLASSENDATEIEN Seminarvortrag von Studierach Beatrix – PowerPoint PPT presentation

Number of Views:27
Avg rating:3.0/5.0
Slides: 30
Provided by: Trix2
Category:

less

Transcript and Presenter's Notes

Title: JAVA - KLASSENDATEIEN


1
JAVA - KLASSENDATEIEN
  • Seminarvortrag von Studierach Beatrix

2
Überblick
  • Klassendatei
  • Spezielle Strings
  • Constant Pool
  • Attribute

3
Class-File
Java
Programm in Java
Compiler
class
files
Java
Programm in anderer Sprache
Compiler
class
files
Programm in Java
Compiler
Other binary format
4
Typen
  • 1. PRIMITIVE TYPEN
  • u1 ...1 unsigned byte
  • u2 ... 2 unsigned bytes
  • u4 ... 4 unsigned bytes
  • u8 ... 8 unsigned bytes
  • 2. TABELLENNAME

Big Endian
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 interfacesinterfaces_count
  • u2 fields_count
  • field_info fieldsfields_count
  • u2 methods_count
  • method_info methodsmethods_count
  • u2 attributes_count
  • attributte_info attributesattributes_count

Magic Number 0xCAFEBABE
6
Beispiele zur Version
  • JDK 1.0.2 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
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 interfacesinterfaces_count
  • u2 fields_count
  • field_info fields fields_count
  • u2 methods_count
  • method_info methodsmethods_count
  • u2 attributes_count
  • attributte_info attributesattributes_count

8
Constant Pool
Tag CONSTANT_Class
constant_pool Entry 1
name_index 7
constant_pool Entry 7
Tag CONSTANT_Utf8_info
length 3
bytes Act
this class
This_class 1
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 interfacesinterfaces_count
  • u2 fields_count
  • field_info fieldsfields_count
  • u2 methods_count
  • method_info methodsmethods_count
  • u2 attributes_count
  • attribute_info attributesattributes_count

10
Access_flags
Flag Name Bedeutung Verwendung
ACC_PUBLIC Zugriff ausserhalb des Package möglich Klasse, Interface
ACC_FINAL Keine Unterklassen erlaubt Klasse
ACC_SUPER Hat geerbte Methoden Klasse, Interface
ACC_INTERFACE Ist ein Interface Interface
ACC_ABSTRACT Ist Abstract und kann nicht instanziert werden Klasse, Interface
11
Überblick
  • Klassendatei ?
  • Spezielle Strings
  • Constant Pool
  • Attribute

12
Spezielle Strings
  • Fully qualified Names
  • Simple Names
  • Descriptors

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

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
Descriptors
FieldDescriptor FieldType ComponentType FieldType FieldType BaseType ObjectType ArrayType BaseType B C D F I J S Z ObjectType Lltclassnamegt ArrayType ComponentType MethodDesciptor ( ParameterDesciptor ) ReturnDesciptor ObjectType ArrayType ParameterDesciptor FieldType ReturnDesciptor FieldType V
16
Beispiele - Field Desciptor
  • int i ? I
  • long windingRoad ? J
  • java.lang.Object stuff ? Ljava/lang/Object

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/SrtingII)Z

18
Überblick
  • Klassendatei ?
  • Spezielle Strings ?
  • Constant Pool
  • Attribute

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
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
Constant_Class
  • CONSTANT_Class_info
  • U1 tag
  • U2 name_index

22
CONSTANT_NameAndType
  • CONSTANT_NameAndType_info
  • U1 tag
  • U2 name_index
  • U2 desciptor_index

23
CONSTANT_UTF8
  • CONSTANT_utf8_info
  • U1 tag
  • U2 length
  • U2 byteslength

24
Überblick
  • Klassendatei ?
  • Spezielle Strings ?
  • Constant Pool ?
  • Attribute

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

26
ConstantValue
  • ConstantValue_attribute
  • u2 attribute_name_index
  • u4 attribute_length
  • u2 constantvalue_index

27
Code
  • Code_attribute
  • u2 attribute_name_index
  • u4 attribute_length
  • u2 max_stack
  • u2 max_locals
  • u4 code_length
  • u1 codecode_ length
  • u2 exception table_length
  • u2 start_pc
  • u2 end_pc
  • u2 handler_pc
  • u2 catch_type
  • exception_tableexception_table_length
  • u2 attributes_count
  • attribute_info attributesattributes_count

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 name_index
  • u2 descriptor_index
  • u2 index
  • local_variable_tablelocal_variable_table_leng
    th

29
Danke für Ihre Aufmerksamkeit!
Write a Comment
User Comments (0)
About PowerShow.com