Thursday, October 18, 2007

Java 6 Scripting with Rhino

Java 6 introduces scripting capabilities for interpreted languages. This example accepts input from the console and evaluates it.
import java.util.List; 
import javax.script.*; 
import java.io.Console; 

public class Example { 
    void runInput() throws Exception { 
       ScriptEngineManager manager = new ScriptEngineManager(); 
       ScriptEngine engine = manager.getEngineByName( "rhino" ); 
       System.out.println( engine.eval( System.console().reader() ) ); 
    }

    void listScriptFactories() {
       ScriptEngineManager manager = new ScriptEngineManager(); 
       List<ScriptEngineFactory> factories = manager.getEngineFactories(); 
       for (ScriptEngineFactory factory : factories) 
          System.out.println( factory.getEngineName() ) ; 
    }

    public static void main(String[] args) throws Exception { 
       Example example = new Example(); 
       example.listScriptFactories(); 
       example.runInput();
 }
}
 
C:\src\java\scripting>javac Example.java
C:\src\java\scripting>java Example Mozilla Rhino var a=3; var b=10; a * (b - 1) ^Z 27.0 C:\src\java\scripting>