Posted on 7. Oktober 2011, 20:32 By malime
Die Einbettung von JavaScript oder Skriptsprachen ist mit Java 6 recht einfach geworden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | package de.malime.scripting; import java.util.ArrayList; import java.util.List; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class ScriptingTest { /** * @param args */ public static void main(String[] args) { ScriptEngineManager mgr = new ScriptEngineManager(); List<ScriptEngineFactory> factories = mgr.getEngineFactories(); for (ScriptEngineFactory factory : factories) { System.out.println("ScriptEngineFactory Info"); String engName = factory.getEngineName(); String engVersion = factory.getEngineVersion(); String langName = factory.getLanguageName(); String langVersion = factory.getLanguageVersion(); System.out.printf("\tScript Engine: %s (%s)\n", engName, engVersion); List<String> engNames = factory.getNames(); for (String name : engNames) { System.out.printf("\tEngine Alias: %s\n", name); } System.out.printf("\tLanguage: %s (%s)\n", langName, langVersion); } ScriptEngine jsEngine = mgr.getEngineByName("ECMAScript"); try { List<String> namesList = new ArrayList<String>(); namesList.add("Jill"); namesList.add("Bob"); namesList.add("Laureen"); namesList.add("Ed"); jsEngine.put("namesListKey", namesList); System.out.println("Executing in script environment..."); jsEngine.eval("var x;" + "var names = namesListKey.toArray();" + "for(x in names) {" + " println(names[x]);" + "}" + "namesListKey.add(\"Dana\");"); System.out.println("Executing in Java environment..."); for (String name : namesList) { System.out.println(name); } } catch (ScriptException ex) { ex.printStackTrace(); } } } |
No comments yet Categories: malime Schlagwörter: Java