Ewaluacja skryptu ze stringu (JSR-223, Groovy Script)
Aby ewaluować skrypt używamy metody Object eval(String script)
klasy SriptEngine
.
Nasz projekt wygląda tak:
Klasa E02_EvalScriptFromString1.java
package jsr223groovy; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class E02_EvalScriptFromString1 { public static void main(String[] args) { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("Groovy"); String script = "println('Cześć! Jestem Groovy! Uczę się polskiego: ąćęłńóśźż')"; try { se.eval(script); } catch (ScriptException e) { e.printStackTrace(); } } }
Ewaluujemy skrypt mieszczący się w jednym wierszu. Zwróćmy uwagę, że został użyty ś
średnik, któryPo uruchomieniu klasy na konsoli zobaczymy:
Cześć! Jestem Groovy! Uczę się polskiego: ąćęłńóśźż
Klasa E02_EvalScriptFromString2.java
package jsr223groovy; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class E02_EvalScriptFromString2 { public static void main(String[] args) { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("Groovy"); String script ="int power(int n) { 2**n }; println \"2^6==${power(6)}\""; try { se.eval(script); } catch (ScriptException e) { e.printStackTrace(); } } }
Ewaluujemy skrypt, który mieści się jednej linii, ale zawiera więcej niż jedno polecenie. Zwróćmy uwagę, że musieliśmy użyć średnika, który w Groovy jest uważany za element nadmiarowy. Po uruchomieniu zobaczymy na konsoli:
2^6==64
Klasa module-info.java
module jsr223groovy { requires org.apache.groovy; requires java.scripting; requires java.sql; }