Lesbare Javaprogramme werden in einem ersten Schritt vom "javac" Programm in einen maschinenunabhängigen Code ".class" übersetzt. Dieser Code kann auch über ein Netzwerk verteilt werden. Bei der Ausführung dieses Codes nach dem Herunterladen gibt es nun zwei Möglichkeiten: Interpretierte Ausführung oder Compilierung des maschinenunabhängigen Codes in maschinenabhängigen Code (Just In Time -Compilierung (JIT)).
Ein einfaches CPU-intensives Bubble-Sort-Testprogramm kann als Beispiel für den Vergleich mit anderen Programmiersprachen dienen.
Auf einem Linux PC mit 133 MHz Pentiuum brauchen verschiedene Bubblesortprogramme folgende Zeiten:
C++ voll optimiert 0.08 user time g++ -O2 -o bubblesort_g++_O2 bubblesort.cc;time ./bubblesort_g++_O2 1000 > /dev/null C++ nicht optimiert 0.32 user time g++ -g -o bubblesort_g++ bubblesort.cc;time ./bubblesort_g++ 1000 > /dev/null Java nach C übersetzt 0.34 user time toba -C bubblesort.java;cc -O2 -o bubblesort_toba bubblesort.c /usr/local/lib/libtoba.so;time ./bubblesort_toba 1000 >/dev/null Java JIT 0.62 user time javac bubblesort.java;time kaffe bubblesort 1000 > /dev/null Java interpretiert 6.49 user time javac bubblesort.java;time java bubblesort 1000 > /dev/null awk 111.05 user time time gawk -v numbers_to_sort=1000 -f bubblesort.awk > /dev/nullAnbei die Quellprogramme für den Test
bubblesort.java
bubblesort.cc
bubblesort.awk
Bewertung
Verglichen mit der ziemlich langsamen Scriptsprache awk ist "java" kein langsamer Interpreter.
Es liegen allerdings immer noch Welten zwischen dem "java" Interpreter und voll optimiertem C++ Code
Java JIT ist deutlich schneller als interpretiertes Java.
Nach C übersetzter Javacode ist noch ein bisschen schneller, hat allerdings den Nachteil, daß er nicht übers Internet verteilt werden kann.
Man muß allerdings berücksichtigen, daß sich die hier benutzten
Java JIT "kaffe" und "toba" java nach C Übersetzer immer noch in der
Entwicklungsphase befinden. Vielleicht werden sie später noch schneller.
Andererseits sind sie nur auf einigen Architekturen mit allen Features
voll implantiert.