Laufzeitverhalten und Portierungsaspekte der Java Virtual Machine (JVM) und ausgewählter Java-Bibliotheken Marc Schanne Eine Studienarbeit am Institut für Programmstrukturen und Datenorganisation Betreuer: Dr. Michael Philippsen (IPD), Ralf J. Schäfer (Siemens AG, München) Universität Karlsruhe 26. Februar 1997 Zusammenfassung Die Programmiersprache Java von Sun Microsystems hat innerhalb kürzester Zeit die schön geordnete Welt der Softwareentwicklung durcheinander geworfen. Objektorientiert, sicher, robust und portabel, soll das Java-System die Entwicklungsplattform der Zukunft sein. Eine Komponente des Java-Systems ist die Java Virtual Machine (JVM), die Spezifikation für eine abstrakte stack- basierte Maschinenstruktur. Diese Arbeit stellt das Modell der JVM vor und untersucht und vergleicht die Möglichkeiten und Grenzen von JVM auf verschieden Plattformen. Das Laufzeitverhalten unterschiedlicher JVM- Implementierungen wird anhand einer Sammlung von Testprogrammen gemessen und verglichen. Zusätzlich sind Konzepte wie Just-in-Time-Übersetzung oder die Verwendung von Native-Routinen zur beschleunigten Ausführung von Programmen Inhalt der Überlegungen. In einem zweiten Teil wird das Abstract Window Toolkit (der JDK 1.0.2) als größte Java Bibliothek betrachtet und Möglichkeiten der Portierung auf andere Hardwareplattform und Betriebssystem untersucht. Quem in ipsa re trepidare nolueris, ante rem exercas - Seneca Inhaltsverzeichnis 1 Einleitung 1.1 Java-Benchmarks 1.1.1 Beispiele im WWW 1.1.2 Möglichkeiten und Grenzen 1.2 Just in Time-Compiler (JITC) 1.3 Laufzeitintensive Anwendungen 2 Das Java-System 2.1 Die Programmiersprache 2.2 Die Java Virtual Machine 2.3 Die Kernbibliotheken 2.4 Die Implementierung 2.5 JDK 1.0.x 3 Laufzeitverhalten verschiedener JVM 3.1 Allgemeine Überlegungen 3.2 Benchmark-Programme 3.3 Überlegungen zur Programmiersprache Java 3.4 Test-Bedingungen 3.4.1 Die drei Testplattformen 3.4.2 Sonstige Festlegungen 3.5 Ergebnisse 3.6 Ergebnisse von CaffeineMark 4 Laufzeitverbesserungen 4.1 Natives 4.2 JIT/Ahead-of-Time-(Re)Compiler 4.3 Andere Hardware 4.3.1 Teilauslagerung 4.3.2 Vollimplementierung 5 Portierung von Bibliotheken 5.1 Abstract Window Toolkit 5.1.1 java.awt 5.1.2 java.awt.peer 5.1.3 sun.awt.win32 5.1.4 Alternativen 5.2 Weiterführendes 6 Zusammenfassung und Ausblick A Programme B Meßwerte der Benchmarks C Verwendete Abkürzungen Literaturverzeichnis Die Studienarbeit ist auch als Postscript-Fassung, mit allen Bildern und Grafiken, und als einfache ASCII-Datei erhältlich. Alle Benchmark-Programme sind auch als Java-Quellcode verfügbar. ---------------------------------------------------------------- [home] [research] [guestbook] [contact] (c) SM