|
|
Software entwickeln unter LinuxAlles neu und virtuellOliver Frommel |
Inhalt |
124 | Coffee-Shop
128 | C-Entwicklung in Eclipse
132 | Perl-Snapshot |
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.
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)
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] |