2012-01-09 21 views
5

Mam mały program, w którym użytkownik może wprowadzić fragment "prawdziwego" kodu Java w polu tekstowym, a następnie wykonać kod w celu wykonania prostych testów systemu. Ten program powstał przed wiekami, a teraz jestem ciekawy, czy są jakieś nowe, fantazyjne sposoby wykorzystania platformy java, aby osiągnąć to samo (np. Poprzez wprowadzenie użytkownika do Groovy w obszarze tekstowym lub obsługę kilku skryptów Języki). Zaciekawiło mnie, gdy czytałem o java 7, który obsługuje dynamicznie wpisywane skrypty na wirtualnej maszynie.Jakie są teraz zaawansowane sposoby obsługi skryptów w języku Java?

Odpowiedz

3

Możesz użyć obsługi JavaScript zintegrowanej z Javy 6: Creating meta language with Java, patrz także ScriptEngineFactory.

Również struktura wiosna ma Dynamic language support.

Należy pamiętać, że dynamiczne wsparcie dla języka JVM 7 (przez invokedynamic) jest tutaj nieistotne. Jest przeznaczony głównie dla języków dynamicznych skompilowanych do kodu bajtowego JVM (jak JRuby lub Groovy).

+1

Należy zauważyć, że nie wszystkie statki Java 6 JVM z JavaScriptem - tylko napotkały IBM - taki, który tego nie zrobił. –

2

ScriptEngineManager został wprowadzony w java 1.6. Jest to wersja dobrego starego projektu Jakarta BSF, który wciąż istnieje. Oba obsługują różne języki skryptowe, w tym Groovy. Wbudowany ScriptEngineManager obsługuje tylko JavaScript, ale uważam, że możesz również dodać interpreter Groovy.

1

Oprócz obsługi skryptów dodanych w nowszych wersjach Javy, można użyć opcji Bean Shell, która może być używana nawet w starszych wersjach Java, takich jak 1.5. Korzystanie Bean Shell można po prostu zrobić:

// assuming you have Java code in a string called script, you can do 
Object result = new bsh.Interpreter().eval(script); 
// now result object will have the result of your Java code contained in string script 

Bean Shell to jest w pełni kompatybilny Java silnik skryptowy dla skryptów oceny i jest używany przez Apache, Sun, Bea w wielu swoich produktach.

Powiązane problemy