WikiDer > Bytecode

Bytecode

Bytecode ist eine Art Maschinensprache das ist das Ergebnis der (partiellen) Zusammenstellung eines Computerprogramms. Im Gegensatz zu "echter" Maschinensprache ist Bytecode nicht dazu geeignet, direkt auf einem Prozessor ausgeführt zu werden virtuelle Maschine (wie .GERADE Common Language Runtime (CLR) oder die Java virtuelle Maschine) oder später in "echte" Maschinensprache übersetzt.

Dieser Ansatz ermöglicht es, plattformunabhängige Programme zu schreiben: auf jedem Plattform für die eine virtuelle Maschine verfügbar ist, kann dann dasselbe Programm ausgeführt werden.

Vor- und Nachteile von Bytecode

Ein oft zitierter Nachteil von Bytecode besteht darin, dass er langsamer wäre als die Ausführung von Maschinencode; schließlich kann der Maschinencode direkt vom Prozessor ausgeführt werden. Wenn Bytecode 'interpretiert' wird, ist er tatsächlich langsamer (manchmal bis zu einem Faktor von 20) als Maschinencode. Würde man den Bytecode jedoch vorher in Maschinencode umwandeln, wäre das theoretisch genauso schnell. In dem Java virtuelle Maschine wird Just-in-Time-Zusammenstellung und Interpretation austauschbar (rechtzeitig zu den kritischen, häufig als Bytecode bezeichneten Stücken).

Neben der Plattformunabhängigkeit hat Bytecode den Vorteil, dass er grundsätzlich spezifisch für die darauf betriebene Hardware optimiert werden kann. Angenommen, ein in Maschinencode geschriebenes Programm wurde für einen bestimmten Prozessor mit einer schnellen Anweisung X erstellt (zum Beispiel IntelsSSEAnweisungen), können Prozessoren ohne diese Anweisung X das Programm nicht ausführen, und das Programm muss so kompiliert werden, dass die schnelle Anweisung X nicht existiert und durch eine Reihe langsamerer Anweisungen ersetzt wird, die auf allen Prozessoren funktionieren. Ein Compiler in einer virtuellen Maschine wäre nicht in der Lage, bis zur Kompilierung zu sehen, welche Befehle verfügbar sind, und den Bytecode automatisch in die schnellsten auf dem Prozessor verfügbaren Befehle umzuwandeln.

Siehe auch