## page was renamed from rhino = rhino = Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users. It is embedded in J2SE 6 as the default Java scripting engine. [[https://developer.mozilla.org/en-US/docs/Rhino]] == Invoke JavaScript from Java example == {{{#!highlight javascript // /tmp/test.js function isOdd(number) { if(number % 2){ return false; } else{ return true; } }; }}} {{{#!highlight java import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.FileNotFoundException; import java.io.FileReader; public class JSTest { /** * @param args */ public static void main(String[] args) { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("ECMAScript"); FileReader fr = null; String path = "/tmp/test.js"; try { fr = new FileReader(path); } catch (FileNotFoundException e) { System.out.println(String.format("File %s not found", path)); } if (fr != null) { try { engine.eval(fr); if (engine instanceof Invocable) { Invocable iv = (Invocable) engine; try { System.out.println(iv.invokeFunction("isOdd", new Integer(4))); System.out.println(iv.invokeFunction("isOdd", new Integer(5))); } catch (NoSuchMethodException ex) { ex.printStackTrace(); } catch (ScriptException ex) { ex.printStackTrace(); } } } catch (ScriptException ex) { ex.printStackTrace(); } } } } }}} == switch case example == * rhino -modules . -require test.js * require with just console needs the '''-modules .''' argument * uses CommonJS (-require) http://wiki.commonjs.org/wiki/Modules/1.1 * http://wiki.commonjs.org/wiki/Modules '''test.js''' {{{#!highlight javascript dict = require('./xyz/modulex.js'); console = require('asd/console.js'); var caseA = ["a","e","i","o","u"]; var caseB = ["b","c","d","f","g"]; var caseC = ["h","j","k","l","m"]; var caseD = ["n","p","q","r","s","t","v","w","x","y","z"]; function check_if(string){ var letter = string[0]; if( caseA.indexOf(letter) >=0) return "A"; if( caseB.indexOf(letter) >=0) return "B"; if( caseC.indexOf(letter) >=0) return "C"; if( caseD.indexOf(letter) >=0) return "D"; } function check_case2(string){ var letter = string[0]; switch(true){ case caseA.indexOf(letter) >=0: return "A"; case caseB.indexOf(letter) >=0: return "B"; case caseC.indexOf(letter) >=0: return "C"; case caseD.indexOf(letter) >=0: return "D" ; } } function check_case(string){ var letter = string[0]; switch(letter){ case "a": case "e": case "i": case "o": case "u": return "A"; case "b": case "c": case "d": case "f": case "g": return "B"; case "h": case "j": case "k": case "l": case "m": return "C"; default: return "D"; } } console.log( check_if("adfgt") ); console.log( check_if("fdfgt") ); console.log( check_if("kdfgt") ); console.log( check_if("wdfgt") ); console.log("####"); console.log( check_case("adfgt") ); console.log( check_case("fdfgt") ); console.log( check_case("kdfgt") ); console.log( check_case("wdfgt") ); console.log("####"); console.log( check_case2("adfgt") ); console.log( check_case2("fdfgt") ); console.log( check_case2("kdfgt") ); console.log( check_case2("wdfgt") ); console.log("####"); console.log( JSON.stringify(dict) ); dict.info( dict.a ); }}} '''xyz/modulex.js''' {{{#!highlight javascript function console(){} console.info = function(message){ print(message); }; exports.info = console.info; exports.a = 1; exports.b = 2; exports.c = 3; }}} '''asd/console.js''' {{{#!highlight javascript exports.log = function(message){ print(message); };; }}}