Linux-Magazin-Logo Die Zeitschrift für Linux-Professionals

Software entwickeln unter Linux

Alles neu und virtuell

Oliver Frommel

Moderne Programmiersprachen umfassen oft mehr als einen Compiler: Virtuelle Maschinen sollen Unabhängigkeit von der Maschine bringen. Doch die Technik allein löst nicht alle Probleme.

Inhalt

124 | Coffee-Shop
Das nächste JDK soll Java modernisieren. Ob das den Versionssprung von 1.4.2 auf 5.0 rechtfertigt, verrät ein Ausblick auf die nächste Java-Release.

128 | C-Entwicklung in Eclipse
Mit dem C-Development-Tool für Eclipse die Java-Plattform für C/C++-Entwicklung nutzen. Die neue Version im Test.

132 | Perl-Snapshot
Open-Office-Dokumente ändern oder neu erstellen klappt auch ohne Open Office: Das Perl-Modul »OpenOffice:: OO-Doc« versteht das XML-Dateiformat.

Nicht nur Java benutzt eine Virtual Machine. Perl 6 setzt auf Parrot[1], eine virtuelle Maschine, auf der auch andere Sprachen wie Python oder Ruby laufen sollen. Der sprachspezifische Interpreter erzeugt Assembler-artigen Zwischencode, den die VM interpretiert. Gleichzeitig bringt Perl 6 viele moderne und komplizierte Sprachkonstrukte mit.

Nicht so leicht zu überblicken ist das Mono-Projekt[2], das sich an das umfassende Framework Dotnet von Microsoft anlehnt. Im Mittelpunkt steht wieder eine Virtual Machine, die die Common Language Infrastructure (CLI) der ECMA implementiert und damit unterschiedliche Programmiersprachen integriert[3]. Mono bringt eine große Anzahl an APIs mit und spielt mittlerweile eine wesentliche Rolle in Novells Linux-Strategie.

VMs multilingual

Die Vorteile virtueller Maschinen sind bekannt: Sie sollen mehr Sicherheit bieten als kompilierte Programme, die direkt auf dem Prozessor ablaufen, und dafür sorgen, dass Code nicht mehr portiert werden muss. Nicht zuletzt sollen virtuelle Maschinen die üblichen Probleme des Speichermanagements bei C und C++ lösen, indem ihre Garbage Collectors sich darum kümmern.

Noch immer sind interpretierte Bytecodes deutlich langsamer als ihre kompilierten Konkurrenten. Da hilft schnellere Hardware wenig, denn davon profitieren beide Varianten gleichermaßen. Am Ende liegt das reine Compiler-Endprodukt wieder vorn. Um Java auf die Sprünge zu helfen, hat Sun in der bevorstehenden Version 5 einige Änderungen an der JVM vorgenommen (siehe Coffee-Shop auf den nächsten Seiten).

Mono tritt mit einem ähnlichen Anspruch wie Java an und zeigt dieselben Probleme. Eine Vielzahl an APIs abdecken und gleichzeitig moderne Programmiertechniken implementieren - das steigert die Komplexität eines solchen Framework enorm. Andererseits soll die virtuelle Maschine den Programmierer aus den Fesseln einer einzigen Sprache befreien. So gibt es mittlerweile sogar schon eine Mono-basierte Implementation der JVM.

Dass viele Linux-Entwickler Mono weiterhin mit Skepsis begegnen, hat wohl weniger technische Gründe, es liegt vor allem an den hartnäckigen Anti-Microsoft-Ressentiments. (fjl)

Programmierer-Software

Infos

[1] Parrot: [http://www.parrotcode.org]

[2] Mono: [http://www.mono-project.com]

[3] ECMA CLI: [http://www.ecma-international.org/publications/standards/Ecma-335.htm]