Home General Staff Contact Partners Alumni Research Areas Projects Papers Books Reports Awards Teaching Lectures Exams B.Theses M.Theses PhD Theses Go Abroad Misc Talks Library Gallery Links Search Webmaster |
Ein Just-in-Time-Compiler für JavaThomas Kotzmann Java-Programme werden in der Regel in maschinenunabhängigen Bytecode übersetzt und von einem Interpreter ausgeführt. Da die Interpretation wesentlich langsamer ist als die Ausführung eines Maschinenprogramms, werden die Bytecodes jedoch oft unmittelbar vor ihrer Ausführung in Maschinencode übersetzt. Man nennt dies Just-in-Time-Compilation (JIT-Compilation). Thema dieser Diplomarbeit ist die Portierung eines existierenden JIT-Compilers für Java-Bytecodes, der von Sun Microsystems im Rahmen des HotSpot-Projekts entwickelt wurde. Der Compiler ist in C++ geschrieben und soll nach Java portiert werden. Eines der Ziele dieser Portierung ist ein Laufzeit-Vergleich zwischen der C++- und der Java-Version des Compilers. Der Ablauf der JIT-Compilation ist wie folgt: Das auszuführende Programm wird vom Interpreter geladen und gestartet. Während seiner Ausführung werden Zähler mitgeführt, die diejenigen Methoden ermitteln, welche am häufigsten aufgerufen werden oder Schleifen mit hohen Durchlaufzahlen enthalten. Diese "Hot Spot"-Methoden werden dem JIT-Compiler übergeben, der sie in Maschinencode übersetzt. Beim nächsten Aufruf einer solchen Methode wird sie dann nicht mehr interpretiert sondern in Maschinencode ausgeführt. Der jetzige Compiler ist in die Virtuelle Maschine (Interpreter, Garbage-Collector, Thread-System) von Java eingebettet und hat zahlreiche Schnittstellen zu ihr. Der neue Compiler soll von der Virtuellen Maschine entkoppelt sein und als eigenständiges Programm laufen. Die einzige Schnittstelle zur Umgebung soll der Bytecode und die Metainformation der zu übersetzenden Methode sein. Die Vorgehensweise bei der Portierung ist wie folgt:
Achten Sie bei der Portierung auf größtmögliche Effizienz Ihres Compilers. Verwenden Sie die gegenüber C++ verbesserten objektorientierten Eigenschaften von Java, versuchen Sie aber, die Architektur des ursprünglichen Compilers im wesentlichen beizubehalten. Betreuer: Prof. Dr. H. Mössenböck |