Mhm da gibts mehrere Gründe:
1.) Ein Java Byte Code ist ja nicht direkt ausführbar. Das heißt die jvm muss
die Instruktion die im Bytecode steht erst interpretieren und danach
ausführen. Wenn du jetzt z.B. einen loop hast wird das so oft passieren
wie der loop durchlaufen wird. Im Gegensatz zu einem Binärprogramm
so wie es ein c++ Compiler generiert werden die dortigen Instruktionen
direkt ausgeführt und sie muessen nicht erst interpretiert werden
Ein Vorteil der Java Methode ist resultierend aus der Verwendung der jvm
die Plattforunabhängigkeit des Bytecodes (Write once, run everywhere)
Ein Nachteil is natürlich das die Performance drunter zu leiden hat (mögliche
Abhilfe wären die Verwenung eines Java Just in Time Compilers)
2.) Dein kompilierter Bytcode läuft in einer Sandbox (die jvm). Diese
überprüft während der Laufzeit die Gültigkeit deiner Instruktionen ( Bsp:
Überprüfung auf Nullreferenzen, etc) und generiert bei Fehlern
demetsprechende Exceptions und bricht den Programmlauf ab
Das schlägt sich natürlich auch auf die Performance nieder, schützt deine
Anwendung aber z.B. vor nicht berechtigten Speicherbeschreibungen bzw
zugriffen...
Das kannst du eigentlich alles in dem Link auch lesen.
Gruß
RedWing