/home/wpollock1/public_html/AJava/JavaScriptDemo.java
// JavaScriptDemo - This console app evaluates any valid JavaScript
// expression passed in as command line arguments. This show how to
// invoke an external (scripting) language; currently, only JavaScript
// is included in the JRE.
//
// Written 10/2012 by Wayne Pollock, Tampa Florida USA, from code
// posted on comp.lang.java.programmer netnews group on 10/15/12, by
// John B. Matthews, in thread "Re: Operation in String to Double conversion".
//
// Examples: java JavaScriptDemo "2 + 3 * Math.pow(4, 2)"
// java JavaScriptDemo "new Date().toUTCString()"
// java JavaScriptDemo "'Hello, ' + 'World!'"
import java.util.*;
import javax.script.*;
public class JavaScriptDemo {
public static void main ( String [] args ) {
// If no arguments, print brief usage message:
if ( args == null || args.length == 0 ) {
System.out.println( "Usage: java JavaScriptDemo"
+ " \"some_JavaScript_expression\"" );
return;
}
ScriptEngineManager mgr = new ScriptEngineManager();
/*
// List all available scripting engines:
List<ScriptEngineFactory> factories = mgr.getEngineFactories();
for ( ScriptEngineFactory sef : factories ) {
System.out.println( sef );
}
*/
// Select an available JavaScript Engine by extension:
ScriptEngine engine = mgr.getEngineByExtension( "js" );
// Concatenate command line args into a string, using space as separator:
StringBuilder sb = new StringBuilder();
for ( String s : args ) {
sb.append( s ).append( ' ' );
}
String expression = sb.toString();
// Evaluate the (hopefully legal) JavaScript expression:
try {
System.out.println( engine.eval( expression ) );
} catch ( ScriptException ex ) {
System.err.println( "Invalid JavaScript expression!" );
}
}
}