Einführung in die Systemprogrammierung

Werbung
Einführung in die Systemprogrammierung
Das Laufzeitsystem von Java
Prof. Dr. Christoph Reichenbach
Fachbereich 12 / Institut für Informatik
25. Juni 2015
Java: Die Sprache
I
I
I
I
Objektorientierte Sprache
Portabler Zwischencode (Java-Bytecode)
Initiales Design: James Gosling, Bill Joy, Guy Steele
Basiert ursprünglich auf C89 mit Ideen aus Self, Smalltalk
public class Zehn {
public static final void main( String [] args) {
for (int i = 1; i <= 10; i++) {
System .out. println (i);
}
}
}
Java: Übersetzung und Ausführung
Quellcode
.java
Java-Laufzeitsystem
javac
Bytecode
.class
java
Lader/Binder
(Classloader)
JIT-Übersetzer
Interpreter
Maschinencode
Java: Bytecode
public class Zehn
{
public static final void
main(String[] args) {
for (int i = 1;
i <= 10;
i++) {
System.out.println(i);
}
}
0:
1:
2:
3:
5:
8:
11:
12:
15:
18:
21:
iconst_1
istore_1
iload_1
bipush
if_icmpgt
getstatic
iload_1
invokevirtual
iinc
goto
return
10
21
#2
#3
1, 1
2
}
Konstantenliste
java/lang/System.out:Ljava/io/PrintStream;
java/io/PrintStream.println:(I)V
Java: Ausführung
I
I
Interpretierung ähnlich Python
Unterschied:
I
I
Stapelmaschine in Python speichert nur Objekte
(Zahlen werden zu Objekten konvertiert)
Stapelmaschine in Java speichert:
I
I
I
I
Objekte
Ganzzahlen
Fließkommazahlen
Übersetzung zur Laufzeit (JIT): anderes Modul
Steckbrief: Java
Java
Version:
Datum:
Quelle:
1.8.0u45 (Oracle)
2015-04-14
http://java.com (Oracle Inc.)
Laufzeitsystem
Zwischensprache:
In Datei (Java-Bytecode)
Ausführungsmodus: JIT (HotSpot)
Sprache
Sprachtyp:
Objektorientiert
Starke Typisierung: ja (statisch + dynamisch)
Sprachkonstrukte:
Klassen, Objekte, Dynamische Übersetzung,
Reflektion
Herunterladen