Bytecode

Bytecode bezeichnet einen Zwischencode, der bei der Compilierung einer Programmiersprache entsteht. Damit wird der Quelltext eines Programmes nicht direkt in eine maschinenlesbare Form transformiert. Der Bytecode ist somit maschinenunabhängig und es entsteht eine kompaktere Darstellung vom ursprünglichen Quelltext. Die endgültige Ausführung des Bytecodes wird dann durch eine von der Rechnerplattform abhängige virtuelle Maschine realisiert.


Die Idee der Transformation eines Quelltextes in einen Zwischencode entstand bereits in den 60er und 70er Jahren. Ausgangspunkte der damaligen Überlegungen waren, den eigentlichen Compiler unabhängig von der jeweiligen Rechnerplattform zu machen sowie portable Computerprogramme auf Basis eines Zwischencodes zu generieren. Die Programmiersprache Basic Combined Programming Language (BCPL) als Vorläufer der Programmiersprachen C und C++ ist eine Entwicklung aus dieser Zeit, welche die Methodik des Zwischencodes nutzte. Auch aufgrund der damals jedoch fehlenden Performance von Rechnersystemen wurden diese Ansätze jedoch nicht weiter verfolgt.

Ausführung des Bytecode durch Bytecode-Interpreter

Der Bytecode wird ausgeführt, indem ein spezieller Bytecode-Interpretierer eine virtuelle Maschine emuliert. Deren Anweisungen werden, aufgrund dessen diese in 8 Bit kodiert sind, Bytecodes genannt. Ein Nachteil dieser Emulation einer virtuellen Maschine ist je nach dessen Performance die Verlängerung der Laufzeit des Programms. Diesem Nachteil der Bytecode-Methodik versucht man durch JIT-Compiler (Just-In-Time-Compiler) zu begegnen, die entsprechende Sequenzen von Bytecodes in einem Vorgang übersetzen und anschließend sofort ausführen. Ein Vorteil von Bytecodes ist deren Portabilität im Hinblick auf verschiedene Plattformen. Dazu muss jeweils nur ein entsprechender Bytecode-Interpretierer installiert sein. Die Bytecode-Technik ermöglicht neben dem geringen Speicherbedarf auch durch die Emulation eine generelle Kontrolle während der Ausführung des Programms. Dabei kann der Zustand der virtuellen Maschine dynamisch verfolgt werden. Ebenso ist die Codegenerierung aufgrund der Tatsache, dass maschinenunabhängige und der Quellsprache angepasste Code-Sequenzen erzeugt werden, vereinfacht. Damit muss im Übersetzungsprozess nicht auf die Eigenarten eines bestimmten Prozessors Bezug genommen werden, und diese Phase beschleunigt sich somit erheblich.

Bytecode und Programmiersprachen

Die im Zusammenhang mit Bytecode am häufigsten genannte Programmiersprache ist Java. Dort ist es die Java Virtual Machine (JVM), welche den Bytecode in eine maschinenlesbare Form transformiert. In jedem Fall ist wiederum zu beachten, dass die JVM spezifisch für jede unterschiedliche System-Plattform vorhanden sein muss. Doch es gibt durchaus noch andere Beispiele für Programmier- oder auch Scriptsprachen die Bytecode verwenden. Andere Sprachen, die die Bytecode-Technik verwenden sind C-Sharp (C#) und PERL. Weiterhin sind zu nennen: Python, Prolog, Tel und Visual Basic. Auch die Programmiersprachen Lisp, die Markup Language (ML) und Pascal nutzen Bytecode als Basis ihrer Implementierungen.

Zusammenfassend kann festgehalten werden, dass Bytecodes als Zwischencode eine elegante Technik für die Realisierung von Software sind. Der offensichtliche Nachteil der höheren Laufzeit steht Vorteilen wie die einfache Portabilität von Software oder deren optimierter Speicherbedarf gegenüber. Durch performante Bytecode-Interpretierer oder JIT-Compiler wird versucht, einen gewissen Ausgleich an Laufzeit zu realisieren.

Informationen zum Artikel
Deutsch: Bytecode
Englisch: bytecode
Veröffentlicht: 01.11.2013
Wörter: 471
Tags: #Java
Links: Anweisung, Auszeichnungssprache, BCPL (basic combined programming language), Bit (binary digit), C++