Java Virtual Machine (JVM) Bytecode



Ähnliche Dokumente
J.5 Die Java Virtual Machine

Vorkurs C++ Programmierung

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

Objektorientierte Programmierung

Algorithmen und Datenstrukturen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Java: Vererbung. Teil 3: super()

Software Engineering Klassendiagramme Einführung

Java Kurs für Anfänger Einheit 5 Methoden

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Effiziente Java Programmierung

Einführung in die Java- Programmierung

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

C# im Vergleich zu Java

Programmieren in Java

6 Speicherorganisation

Objektorientierte Programmierung. Kapitel 12: Interfaces

Vorkurs Informatik WiSe 15/16

Vorlesung Informatik II

4. AuD Tafelübung T-C3

3 Objektorientierte Konzepte in Java

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Einführung in die Programmierung

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

Applet Firewall und Freigabe der Objekte

Programmierkurs Java

Modellierung und Programmierung 1

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

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

Vorlesung Programmieren

Einführung in die Programmierung

Einführung in die Java- Programmierung

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger

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

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Client-Server-Beziehungen

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Stapelverarbeitung Teil 1

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

Einführung in die Programmierung für Wirtschaftsinformatik

Dokumentenverwaltung. Copyright 2012 cobra computer s brainware GmbH

Java Einführung Collections

Grundlagen von Python

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

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

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Prinzipien Objektorientierter Programmierung

Software Engineering Klassendiagramme Assoziationen

How to do? Projekte - Zeiterfassung

Javakurs zu Informatik I. Henning Heitkötter

Professionelle Seminare im Bereich MS-Office

Studentische Lösung zum Übungsblatt Nr. 7

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

5. Abstrakte Klassen

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Applets I. Grundlagen der g Applet-Programmierung

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

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

Software Engineering Interaktionsdiagramme

5.2 Neue Projekte erstellen

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

BEISPIELKLAUSUR Softwareentwicklung:

ARAkoll 2013 Dokumentation. Datum:

Kleines Handbuch zur Fotogalerie der Pixel AG

Installation von MailON2!

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

Einführung in die Programmierung

Kapitel 6. Vererbung

Zugriff auf die Modul-EEPROMs

U08 Entwurfsmuster (II)

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

2. Programmierung in C

Java Einführung Methoden in Klassen

Anbindung des eibport an das Internet

Übungsblatt 3: Algorithmen in Java & Grammatiken

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Lehrer: Einschreibemethoden

Datensicherung. Mögliche Vorgehensweisen:

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

QuickInfo Dienstplanerstellungund Dienstplanänderung. Erstellung eines Dienstplan bzw. Arbeitszeitmodell

Stecken Sie Ihren USB Stick oder Ihre externe USB Festplatte in den USB Steckplatz des Sinus 154 DSL SE.

Programmierung für Mathematik (HS13)

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Kapitel 6. Vererbung

Typumwandlungen bei Referenztypen

Tagesprogramm

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Deklarationen in C. Prof. Dr. Margarita Esponda

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

Wirtschaftsinformatik I

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Transkript:

Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes, Speicherverwaltung Basis für Portabilität und Sicherheit ex. Spezifikation und verschiedene Implementierungen Bytecode Maschinensprache der JVM portables (HW- und BS-unabhängiges) Binärformat EinfProg 50

Aufbau der JVM Systemklassenlader Klassenlader Bytecode- Verifier Method Area (Klassen) Heap Stacks (1 pro Thread) Ausführungsmaschinen (1 pro Thread) Access Controller Betriebssystem EinfProg 51

Speicherbereiche Method Area enthält Programmcode, Konstanten, Klassenvariablen auf dem Stack werden bei jedem Methoden- bzw. Blockaufruf die lokalen Variablen abgelegt - werden am Ende der Methode vom Stack entfernt (LIFO) - enthält auch Verweis auf zugehörige Klasse (indirekt), Rücksprungadresse, Hilfsvariablen für Berechnungen der JVM auf dem Heap (Halde) werden Objekte, z.b. Arrays abgelegt - bei new sucht JVM Speicherplatz ausreichender Größe - Objekte existieren methodenübergreifend EinfProg 52

Rückblick: Call-by-Value formaler Parameter entspricht lokaler Variable, die mit Wert des aktuellen Parameters initialisiert wird Konsequenz: formaler Parameter darf verändert werden, aber Änderungen gehen bei Verlassen der Methode verloren public static void main(string[] args) { int i=1; m(i); Out.println(i); // liefert 1 static void m(int k) { ++k; Out.println(k); // liefert 2 Call-by-Value-Result (Ada): Methodenaufruf wie Call-by-Value, bei Verlassen Methode wird Wert zurückkopiert in aktuellen Parameter EinfProg 53

Call-by-Reference Parameterübergabe-Mechanismus, z.b. in Modula (nicht Java) formaler Parameter entspricht lokaler Variable, in der Adresse des aktuellen Parameters steht (muss Variable sein) jede Änderung der lokalen Variable verändert direkt den aktuellen Parameter public static void main(string[] args) { int i=1; m(i); Out.println(i); // liefert 2 static void m(var int k) { ++k; // verändert i Out.println(k); // liefert 2 EinfProg 54

Arrays als Parameter verwendet Call-by-Value, aber Effekt ähnelt Call-by-Reference aktueller / formaler Parameter = Verweis auf Array wird in lokaler Variable abgespeichert Änderungen dieser Variable ändern außen nichts Änderungen am Array selbst wirken auch außen public static void main(string[] args) { int [] a = new int[5]; m(a); Out.println(a[3]); // liefert 5 static void m(int[] b) { b[3] = 5; b = new int[10]; b[3] = 7; EinfProg 55

Zeiger vs. Verweise Zeiger (Pointer) = Adresse im Speicher Verweis (Referenz, Reference) = Erreichbarkeitsinformation C verwendet Zeiger Adressarithmetik möglich Java verwendet Verweise, z.b.: a Stack interne Tabelle Heap Konsequenz: Arrays können im Heap verschoben werden, ohne die Einträge auf dem Stack (beliebig viele) zu aktualisieren EinfProg 56

Garbage Collector niedrigpriorisierter Hintergrund-Thread zur automatischen Freigabe unerreichbarer Objekte (Arrays) Garbage Collector darf Objekte verschieben (hilft gegen Speicherfragmentierung) Objekt ist unerreichbar, wenn es keine Verweiskette von Stack (oder Method Area) zu Objekt mehr gibt Objekt kann unerreichbar werden durch - Verlassen eines Blocks Freigabe von lokalen Variablen - Zuweisungen: b = new int[10]; b = null; - Unerreichbarkeit eines Vorgängerobjekts (Liste) expliziter Aufruf durch System.gc(); EinfProg 57

Kommandozeilenparameter java MyProgramm hallo donnerstag 9 Betriebssystem ruft Java-Interpreter (java) auf und übergibt Parameter: MyProgramm hallo donnerstag 9 Java-Interpreter ruft main-methode auf und übergibt Parameter als Array: [ "hallo", "donnerstag", "9"] public static void main(string[] args) { Out.println(args[0] + " Heute ist " + args[1] + " der " + args[2] + "-te"); int i = Integer.parseInt(args[2]); Out.println(" und morgen der " + (i+1) + "-te"); EinfProg 58