J.5 Die Java Virtual Machine



Ähnliche Dokumente
Java Virtual Machine (JVM) Bytecode

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung in die Java- Programmierung

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Vorlesung Informatik II

MCRServlet Table of contents

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Programmierung in C. Grundlagen. Stefan Kallerhoff

Java Einführung Programmcode

Einführung in die Programmierung

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Zugriff auf die Modul-EEPROMs

Zählen von Objekten einer bestimmten Klasse

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

ObjectBridge Java Edition

C# im Vergleich zu Java

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Objektorientierte Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einführung in die Programmierung

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Java Kurs für Anfänger Einheit 5 Methoden

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

4D Server v12 64-bit Version BETA VERSION

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Praktikum: Einstieg: Arbeitsplatz, JCreator

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Prodanet ProductManager WinEdition

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Übungsblatt 3: Algorithmen in Java & Grammatiken

Java: Vererbung. Teil 3: super()

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

SAPGUI-Installation. Windows Bit-Edition auf x64 (AMD) und Intel EM64T (nur die Editionen

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Anzeige von eingescannten Rechnungen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Der lokale und verteilte Fall

Javakurs zu Informatik I. Henning Heitkötter

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Innere Klassen in Java

Zusammenführen mehrerer Dokumente zu einem PDF In drei Abschnitten erstellen Sie ein Dokument aus mehreren Einzeldokumenten:

Internet Explorer Version 6

Screening for Illustrator. Benutzerhandbuch

Modellierung und Programmierung 1

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Serienbrief mit Word erstellen

Anleitung zur Erstellung einer Gefährdungsbeurteilung

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Zahlensysteme: Oktal- und Hexadezimalsystem

Einstellen der Makrosicherheit in Microsoft Word

Computeranwendung und Programmierung (CuP)

TYPO3 Tipps und Tricks

Drucken aus der Anwendung

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Grundlagen der Theoretischen Informatik, SoSe 2008

Cisco AnyConnect VPN Client - Anleitung für Windows7

Anleitung zum LPI ATP Portal

XTAPIClient Fachliche Dokumentation

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Bedienungsanleitung zum Anlageinventar in der Buchhaltung Gültig ab Version 3.9, November 2009

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Delegatesund Ereignisse

Dokumentation zur Verschlüsselung von Dateien und Mails

Objektorientierte Programmierung. Kapitel 12: Interfaces

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Kursangebot gesammelt einlesen

Testen mit JUnit. Motivation

Typumwandlungen bei Referenztypen

Algorithmen und Datenstrukturen

2015 conject all rights reserved

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Computergruppe Heimerdingen Basiskurs. Karlheinz Wanja & Richard Zeitler

egovernment für das Open Source CMS Contao

Nutzung von GiS BasePac 8 im Netzwerk

1. Schritt: Export Datei im Fidelio erstellen

Dokumentenarchivierung mit SelectLine-Produkten

Wir machen neue Politik für Baden-Württemberg

Zwischenablage (Bilder, Texte,...)

Applications Applets (eingeschränkte Rechte)

Transkript:

Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class class C.class D.java Java Virtual Machine (JVM) (- Interpretierer) aus Informatik I! 22 Prof. Dr. Rainer Manthey Informatik II 2

JVM: Übersicht in diesem Abschnitt: genaueres Kennenlernen der Java Virtual Machine als Beispiel für einen Interpretierer einer höheren Programmiersprache, der kompilierten Zwischencode verarbeitet und damit quasi wie ein Laufzeitsystem arbeitet. JVM kann sogar - zur Performanzsteigerung - selbst wieder mittels eines Compilers auf einer bestimmten Maschine implementiert werden (oder sogar direkt als Maschinensprache eines speziellen Prozessors dienen). Mittlerweile ist die JVM von verschiedensten Herstellern und für verschiedenste Plattformen erhältlich. Die Java Virtual Machine ist somit zum einen ein theoretisches Konzept als Vorlage für alle Java- Realisierungen als spezifische Realisierung dieses Konzepts eine konkrete Maschine für ein spezifisches Programm eine konkrete Instanz dieser Maschine 22 Prof. Dr. Rainer Manthey Informatik II JVM: Interne Struktur Zwischencode-Fragmente des Java Compilers Speicherplatz für die Programmbearbeitung eigentliches Laufzeitsystem 22 Prof. Dr. Rainer Manthey Informatik II 4

Runtime Data Area: Method Area und Heap Method Area für jede Klasse Programmcode Konstanten Klassenvariablen Heap (dt.: "Halde") für jedes Objekt Instanzvariablen Referenz auf zug. Klasse von allen Threads der JVM gemeinsam genutzt Objekte auf dem Heap werden nie explizit entfernt. Objekte, die nicht Ziel einer Referenz sind, werden bei Bedarf automatisch entfernt ("garbage collection"). 22 Prof. Dr. Rainer Manthey Informatik II 5 Kellerspeicher: Prinzip Die Werte der lokalen Variablen und der aktuellen Parameter werden für jeden Methodenaufruf in einem eigenen virtuellen Speicherbereich abgelegt: Methodenrahmen ("method frame") Alle Methodenrahmen eines Threads werden in einem diesem Thread zugeordneten Teil des Speichers gemäß dem Kellerprinzip verwaltet: Kellerspeicher engl.: "stack" Kellerprinzip: Füge neue Einträge stets "oben", d.h. "über" allen alten Einträgen ein: -Operation ("to ": schieben) Nur der jeweils oberste Eintrag kann dem Speicher entnommen werden: -Operation ("to out": hervorschießen) Die Rahmen in einem Stack sind untereinander durch Zeiger verkettet, die der Aufrufreihenfolge der Methoden entsprechen. 22 Prof. Dr. Rainer Manthey Informatik II 6

Kellerprinzip (2) ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 22 Prof. Dr. Rainer Manthey Informatik II 7 Kellerprinzip () 4 ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 4 22 Prof. Dr. Rainer Manthey Informatik II 8

Kellerprinzip (4) ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 4 22 Prof. Dr. Rainer Manthey Informatik II 9 Kellerprinzip (5) 7 ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 7 22 Prof. Dr. Rainer Manthey Informatik II

Kellerprinzip (6) ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 7 22 Prof. Dr. Rainer Manthey Informatik II Kellerprinzip (7) ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 22 Prof. Dr. Rainer Manthey Informatik II 2

Kellerprinzip (8) ein kleines "Kellerprogramm":. 2. 4. 4. 7 5. 6. 22 Prof. Dr. Rainer Manthey Informatik II Runtime Data Area: Stacks Jeder Thread erhält ein eigenes Programmzähler-Register, einen eigenen Stack (für lokale Variablen und Operanden) und ggf. einen eigenen Stack für Methoden in externen Sprachen ("native methods"). current frame Zu jedem Zeitpunkt ist genau eine Methode aktiv, zu der genau ein aktueller Speicherrahmen ("current frame") gehört. 22 Prof. Dr. Rainer Manthey Informatik II 4

Stack Frames Jeder Speicherrahmen (stack frame) für einen Methodenaufruf wird beim Aufruf der Methode erzeugt beim Verlassen der Methode wieder zerstört mit dem Speicherrahmen der direkt aufrufenden Methode verkettet. Aufbau eines Stack Frames: 2 Array von Zellen für Werte lokaler Variablen... Operandenstack 22 Prof. Dr. Rainer Manthey Informatik II 5 Interne Datentypen der JVM Für jeden Typ gibt es spezielle instruktionen, die durch den ersten Buchstaben des jeweiligen Typs unterschieden werden: f, d, i, l usw. (byte, short, char, boolean werden in int konvertiert) 22 Prof. Dr. Rainer Manthey Informatik II 6

Instruktionen der JVM sind genau ein Byte lang: Der ist unabhängig vom verwendeten Betriebssystem und vom verwendeten Rechner: "plattformunabhängig" Die -Technik wurde bereits seit den 97er Jahren eingesetzt, um Programme leichter portierbar zu machen (z.b. für LISP und Prolog) Der der JVM ähnelt in seiner Struktur Maschinen- bzw. (in der -Version) Assemblersprache. wird durch einen -Interpreter ausgeführt, der in der JVM die Rolle eines Laufzeitsystems spielt. -Programme sind sehr kompakt und eignen sich daher gut für die Übertragung übers Netz ( => Applets). Die JVM kennt insgesamt 255 verschiedene -Instruktionen. 22 Prof. Dr. Rainer Manthey Informatik II 7 (2) einige Beispiele für typische -Instruktionstypen: iconst_<i> "Push" int-konstante i auf den Stack! iload_<n> "Push" Inhalt der lokalen Variablen mit n auf den Stack! istore_<n> "Pop" oberstes Stackelement in die lokale Variable mit n! iinc <n> <i> Inkrementiere Variable mit n um i! (-Byte-Befehl) Multipliziere die beiden obersten Stackwerte (und "" sie dann). Lege Resultat oben auf den Stack! goto <offset> Addiere offset (mit Vorzeichen, 2 Byte lang) zur Adresse des goto-befehls und springe dorthin! 22 Prof. Dr. Rainer Manthey Informatik II 8

JVM: Beispiel Sourcecode public static void domathforever( ) { int i = ; for (;;) { i += ; i *= 2; } } relative Zeilennummer Beispiel für JVM-Code 4 6 5 ff Java-Compiler 7 iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 9 JVM: Beispiel 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 2

JVM: Beispiel 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 2 JVM: Beispiel 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 22

JVM: Beispiel 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 2 JVM: Beispiel 2 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 24

JVM: Beispiel 2 2 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 25 JVM: Beispiel 2 4 6 5 ff iconst_ iinc iload_ 2 22 Prof. Dr. Rainer Manthey Informatik II 26

JVM: Beispiel 2 und so weiter... 4 6 5 ff iconst_ iinc iload_ 22 Prof. Dr. Rainer Manthey Informatik II 27 Bücher zur Java Virtual Machine Tim Lindholm, Frank Yellin: "The Java TM Virtual Machine Specification" 2 nd edition, Microsoft Press Bill Venners: "Inside the Java 2 Virtual Machine" McGraw Hill, 998 22 Prof. Dr. Rainer Manthey Informatik II 28

JVM im Internet Webquellen zur JVM: "offizielle" JVM-Spezifikation von Sun als Download: http://java.sun.com/docs/books/vmspec/ Kapitel 5 des Buches "Inside the Java Virtual Machine": http://www.artima.com/insidejvm/ed2/ch5javavirtualmachine.html ausserdem: Kap. 2. und 8 im Java-Buch von Goll u.a. 22 Prof. Dr. Rainer Manthey Informatik II 29