Zum Inhalt springen

BeanShell

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 26. April 2006 um 20:58 Uhr durch 82.141.250.13 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

BeanShell ist eine dynamische Skriptsprache für die Java-VM von Pat Niemeyer. Sie erlaubt es, nahezu unveränderten Java-Code durch einen Interpreter auszuführen. Wie bei Python oder Perl wird der Code dabei vorher in einen Abstract Syntax Tree (AST) übersetzt. BeanShell wird gerne als Sprache für Makros eingesetzt, beispielsweise im Texteditor jEdit.

Neben klassischer Java-Syntax bietet BeanShell einige der für Skriptsprachen typischen Vereinfachungen wie dynamische Typisierung statt statischer Typisierung, globale Variablen und Funktionen, (eingeschränkten) reflexiven Zugriff auf das Programm selbst und ähnliches. Die Syntax ist allerdings stark an die des originalen Java angelehnt, was es für Java-Programmierer leicht macht, zwischen beiden Sprachen zu wechseln oder zu übersetzen. Da BeanShell in der Lage ist, von bestehenden Java-Klassen zu erben oder beliebige Interfaces zu implementieren, lässt sie sich gut zusammen mit bestehenden Frameworks und Anwendungen einsetzen.

Eine Spezialität von BeanShell ist die Tatsache, dass Funktionen beziehungsweise Methoden selbst wieder Methoden enthalten können, und sich selbst als Closure über die Rückgabe von this zum Objekt erheben können. Eine weitere Besonderheit ist die zusätzlich zur klassenbasierten zur Verfügung stehende prototyp-basierte Objektorientierung. Durch Einführung dieser beiden Features ist beabsichtigt, bei entsprechender Entfernung von der klassischen Java-Syntax, die Produktivität gegenüber Java deutlich steigern.

Aktuell (28. Mai 2005) ist Version 2.0 beta 4, die Entwicklung geht relativ langsam voran, die Sprache ist daher stabil und ohne größere Fehler. Bisher unterstützt BeanShell nur wenige der syntaktischen Neuerungen in Java 1.5, die Entwickler arbeiten daran, volle Kompatibilität herzustellen.

Ähnliche Ansätze verfolgen die Skriptsprachen Groovy, Jacl für TCL, Rhino für JavaScript und Jython für Python.