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.
- 1. Jakie są różne sposoby obsługi wyliczeń na serwerze SQL?
- 2. Jakie funkcje są uważane za zaawansowane python?
- 3. Jakie są różne sposoby zastąpienia kursora?
- 4. Gdzie zaawansowane zasoby w Yii2 są zaawansowane?
- 5. Jakie są konwencje nazewnictwa w języku C#?
- 6. Jakie są wszystkie sposoby przechodzenia między drzewami katalogów?
- 7. Szyny - jakieś wymyślne sposoby obsługi 404?
- 8. Jakie są sposoby decydowania o prawdopodobieństwach w ukrytych modelach Markowa?
- 9. Jakie są alternatywne sposoby wyszukiwania next(). Next() w jquery
- 10. Jakie są najbardziej idiomatyczne sposoby łączenia tensorów w pochodni?
- 11. Jakie są sposoby unikania mutacji obiektu w Dart-lang?
- 12. Jakie są alternatywne sposoby modelowania relacji M: M w Cassandrze?
- 13. Jakie są/są sposoby (i) Scala implementacji tego Java "byte [] to Hex" class
- 14. Zaawansowane wielowątkowość - Java
- 15. Jakie są najważniejsze informacje o programowaniu Java?
- 16. Jakie są skuteczne sposoby debugowania zoptymalizowanego programu C/C++?
- 17. Jakie są najważniejsze biblioteki Java?
- 18. Jakie są różne sposoby, w jakie "to" może uciec w Javie?
- 19. Jakie są możliwe wektory ataku dla odbitych skryptów cross site?
- 20. Tworzenie identyfikatora GUID w języku Java
- 21. Jakie są najlepsze/popularne biblioteki do tworzenia aplikacji/skryptów CLI?
- 22. Jakie są alternatywy dla obsługi XML Schema 1.1 przez JAXB?
- 23. Jakie są zalety pliku obsługi ASHX w asp.net?
- 24. Jakie są dobre alternatywy dla komunikacji między lokalnymi programami w języku C++ i Java?
- 25. Jakie są obsługiwane operatory i polecenia w języku FQL?
- 26. Zaawansowane wyszukiwanie środowiska Java Eclipse
- 27. Jakie są dobre sposoby ustawiania ścieżki w obsługiwanym przez wiele systemów operacyjnych skrypcie Python
- 28. Wywoływanie skryptów Powershell z Java
- 29. Jakie samodzielne analizatory składni Java są dostępne?
- 30. Jakie są konwencje nazewnictwa plików Java .properties?
Należy zauważyć, że nie wszystkie statki Java 6 JVM z JavaScriptem - tylko napotkały IBM - taki, który tego nie zrobił. –