/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!" );
    }
  }
}