Hauptseite | Deutsche Enzyklopädie

Bytecode

In der Informatik ist Bytecode eine Sammlung von Befehlen für eine virtuelle Maschine. Bei Compilierung eines Quelltextes mancher Programmiersprachen oder Umgebungen, wie z. B. Java, wird nicht direkt Maschinencode sondern ein Zwischenprodukt, der Bytecode erstellt. Dieser Code ist in der Regel maschinenunabhängig und im Vergleich zum Quelltext und zu Maschinencode oft relativ kompakt.

Die virtuelle Maschine, im Falle von Java die Java Virtual Machine (JVM), führt dann dieses Zwischenergebnis aus, indem sie den Bytecode in Maschinencode, für den jeweiligen Prozessor, zur Laufzeit übersetzt. Dabei ist zu beachten, dass die Virtual Machine für jede Rechnerplattform, auf der das Kompilat laufen soll, bereits vorliegen muss.

Java ist heute nur eines der prominentesten Beispiele für eine Bytecode-basierte Programmiersprache. Andere Sprachen, die Bytecodes verwenden, sind zum Beispiel C# und Perl.

Die Ausführung von Bytecode durch das Programm, das die virtuelle Maschine repräsentiert, kostet Zeit. Spezielle Just-In-Time-Compiler (JIT-Compiler) übersetzen Bytecode-Stücke einmal während der Programmausführung in entsprechende Maschinencodestücke und führen diese dann aus. Dadurch lassen sich die Ausführungszeiten, jedoch nicht die Startzeiten, oft in den Bereich von vorübersetztem Maschinencode drücken.


Ein anderer Aspekt: Einen Interpreter kann man, abstrakt betrachtet, zu einem "bedingten indirekten Sprung" vereinfachen, wobei moderne Interpretersprachen erst durch mehrfach indirekte Verknüpfungen implementierbar sind. Es sind also, vergleichsweise zum Mehrpass-Compiler, Mehrpass-Interpreter.

Wenn man nun einen Teil der indirekten Verknüpfungen nicht erst zur Laufzeit auflöst, sondern schon vorher, findet definitionsgemäß eine Kompilation statt. Der so entstandene Code, ist kein Quellcode mehr, aber auch noch kein Maschinencode. Er muß noch von einer, nun einfacheren und damit auch schnelleren virtuellen Maschine zur Laufzeit interpretiert werden.

Geschichtliches und Hintergründe

Martin Richards entwickelte in den späten 60er Jahren für seine Programmiersprache BCPL, den Vorläufer von C und C++, einen Zwischencode namens O-Code (O für Objektcode), der den eigentlichen Compiler maschinenunabhängig machte. Dies ermöglichte die leichte Portierung dieses Compilers auf unterschiedliche Prozessoren. Der O-Code konnte dann interpretiert oder in maschinenspezifischen Code übersetzt werden.

Die UCSD Pascal Umgebungen aus den späten 70er Jahren verwendeten p-Code. Der Versuch, vollständig portable Computerprogramme auf Basis eines interpretierten Bytecodes zu ermöglichen, scheiterte jedoch weitgehend aufgrund der fehlenden Geschwindigkeit der damaligen Computersysteme - man konnte und wollte sich zu dieser Zeit Verlangsamung durch die zusätzliche Indirektion nicht leisten.

Viele interpretierte Sprachen verwenden auch intern Bytecode, das bedeutet, dass der Bytecode an sich unsichtbar für den Programmierer und Endbenutzer gehalten wird und automatisch als Zwischenschritt der Interpretation des Programmes erzeugt wird. Beispiele für aktuelle Sprachen, die zu diesem Trick greifen sind Perl, PHP und Python.

Auch dieses Verfahren ist sehr alt: frühe BASIC-Versionen der 80er Jahre verwendeten anstelle der Schlüsselwörter Bytes, so genannte Tokenss, um die Ausführung ihrer Programme zu beschleunigen und den Programmtext in einer kompakteren Form abzuspeichern. Der restliche Text - zum Beispiel Variable, mathematische Ausdrücke und Zeichenketten - wurde jedoch unverändert gespeichert. Bei Ausgabe durch den LIST-Befehl wurden die Tokens wieder in lesbare Schlüsselwörter umgewandelt.

Weblinks



Limit search to: Body and Title Deutsche Seiten Path

Websites for Bytecode
Showing page 1 (1 - 10 of 57 hits) Next »
Growing article, with links to many related topics. [Wikipedia, open content, GNU FDL] Growing article, with links to many related topics. [Wikipedia, open content, GNU FDL]
... classes to generate, read, write, and print Java bytecode (.class) files. Part of the Kawa project. [Open ... classes to generate, read, write, and print Java bytecode (.class) files. Part of the Kawa project. [Open ...
... Java language is compiled into a platform independent bytecode format. Much of the information contained in the original source code remains in the bytecode, thus decompilation is easy. We will examine how ... Java language is compiled into a platform independent bytecode format. Much of the information contained in the original source code remains in the bytecode, thus decompilation is easy. We will examine how ...
La société de services informatiques est spécialisée dans les infrastructures IT et internet. Ses solutions sont basées sur des logiciels libres. Ecublens. La société de services informatiques est spécialisée dans les infrastructures IT et internet. Ses solutions sont basées sur des logiciels libres ...
A Bytecode Obfuscator with third-generation control-flow transformations. [Open source] A Bytecode Obfuscator with third-generation control-flow transformations. [Open ...
... generator, and provides an object-model for ActionScript bytecode. Java library that interfaces with the JavaSWF2 Flash ... generator, and provides an object-model for ActionScript bytecode.
... interactive development environment, supports multiple views per object, bytecode VM; was user programming environment of EO communicator ... interactive development environment, supports multiple views per object, bytecode VM; was user programming environment of EO communicator ...
... based on, integrated with, Java (compiler emits Java bytecode); features of functional programming, implements state-of-art ... based on, integrated with, Java (compiler emits Java bytecode); features of functional programming, implements state-of-art ...
Portable compiler that translates Oberon-2 into bytecode. This implementation is in use at Oxford on ... information. Portable compiler that translates Oberon-2 into bytecode. This implementation is in use at Oxford on ...
SML to Java bytecode compiler, based on Persimmon's MLj. SML to Java bytecode compiler, based on Persimmon's MLj.

Next »

Help build the largest human-edited directory on the web.
Submit a Site - Open Directory Project - Become an Editor
Free thumbnail preview by Thumbshots.org

Search for products at amazon.com:
Search:
Keywords:
amazon.com books on 'Bytecode':
Search at Google.com:
Google
WebCalSky.com Enzyklopädie

Suchresultate aus unserem günstigen CalSky-Shop