BeanShell
BeanShell är ett dynamiskt skriptspråk för Java - VM av Pat Niemeyer . Det gör att nästan oförändrad Java-kod kan köras av en tolk . Som med Python eller Perl översätts koden till ett abstrakt syntaxträd (AST) i förväg . BeanShell används ofta som ett språk för makron , till exempel i textredigeraren jEdit , i Apache JMeter och i Apache ANT .
Förutom klassisk Java-syntax erbjuder BeanShell några av de förenklingar som är typiska för skriptspråk som dynamisk skrivning istället för statisk skrivning , globala variabler och funktioner , (begränsad) reflexiv tillgång till själva programmet och liknande. Syntaxen liknar den ursprungliga Java, vilket gör det enkelt för Java-programmerare att växla mellan de två språken eller att översätta. Eftersom BeanShell kan ärva från befintliga Java- klasser eller implementera några gränssnitt kan den användas bra tillsammans med befintliga ramar och applikationer.
BeanShell utökar Java-syntaxen särskilt i följande två punkter, varigenom en högre produktivitet ska uppnås.
-
Metoder (funktioner) kan själva innehålla metoder och höja sig själva som tillslutning via återgången
thistill objektet . - Annan speciell funktion är prototype- baserat objektorientering som är tillgängligt utöver det klassbaserade en .
Koden överfördes till Apache Foundation, men nådde inte projektstatus där.
Från version 2.0b6 den 5 februari 2016 publicerades inga fler versioner. Språket är dock stabilt. Hittills stöder BeanShell endast ett fåtal av de syntaktiska innovationerna i Java 1.5.
En avknoppning med namnet BeanShell2 ägde rum i maj 2007 på Google Code . Projektet har släppt ett antal korrigeringar och förbättringar av BeanShell. Det finns ansträngningar att föra samman de två versionerna igen.
Alternativ till BeanShell är Groovy , Jacl för Tcl , Rhino för JavaScript , Jython för Python och JRuby för Ruby , varigenom Groovy, Jython och JRuby, till skillnad från BeanShell, båda är allmänna språk och skriptspråk. Liksom BeanShell är Groovy-syntaxen Java-kompatibel, men erbjuder också tillägg som stränginterpolering eller DSL- stöd.
webb-länkar
- Hemsida (engelska)
- Källkod på Github
- JSR 274 vill standardisera BeanShell
- BeanShell2 delades efter att arbetet med huvudprojektet stoppades, eller så stöder Beanshell2 endast läsåtkomst sedan Google Code
- JEP 222: jshell (engelska)