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
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).
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.
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.
Należy zauważyć, że nie wszystkie statki Java 6 JVM z JavaScriptem - tylko napotkały IBM - taki, który tego nie zrobił. –