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/null

Anbei 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.