Showing posts with label nashorn JavaScript Engine. Show all posts
Showing posts with label nashorn JavaScript Engine. Show all posts

Tuesday, May 6, 2014

List available ScriptEngine

The following program list ScriptEngine(s) available in your system.
package javalistscript;

import java.util.List;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;

/**
 *
 * @web java-buddy.blogspot.com
 */
public class JavaListScript {

    public static void main(String[] args) {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        List<ScriptEngineFactory> listScriptEngineFactory =
                scriptEngineManager.getEngineFactories();
        for(ScriptEngineFactory factory : listScriptEngineFactory){
            System.out.println("ScriptEngine: " + factory.getScriptEngine());
            System.out.println("EngineName: " + factory.getEngineName());
            System.out.println("EngineVersion: " + factory.getEngineVersion());
            System.out.println("LanguageName: " + factory.getLanguageName());
            System.out.println("LanguageVersion: " + factory.getLanguageVersion());
            
            List<String> listExtensions = factory.getExtensions();
            for(String ext : listExtensions){
                System.out.println("Extension: " + ext);
            }
            
            List<String> listMimeTypes = factory.getMimeTypes();
            for(String mimeType : listMimeTypes){
                System.out.println("MimeType: " + mimeType);
            }
        }
    }
    
}



Tuesday, April 8, 2014

nashorn JavaScript exercise, call Java method from JavaScript

This example show how to call Java javaStaticMethod() in "javatestnashornjavascript.JavaTestNashornJavascript" class.

JavaTestNashornJavascript.java
package javatestnashornjavascript;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * @web http://java-buddy.blogspot.com/
 */
public class JavaTestNashornJavascript {
    
    final String myJavascript = "<path to myjavascript.js>";
    
    JavaTestNashornJavascript(){
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");

        try {
            FileReader fileReader = new FileReader(myJavascript);
            nashorn.eval(fileReader);

            Invocable invocable = (Invocable) nashorn;

            Object jsResult = invocable.invokeFunction(
                    "javascriptFunction", "Java-Buddy");
            System.out.println("result returned to Java from JavaScript: " + jsResult);

        } catch (FileNotFoundException 
                | ScriptException 
                | NoSuchMethodException ex) {
            Logger.getLogger(JavaTestNashornJavascript
                    .class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static String javaStaticMethod(String para){
        System.out.println("javaStaticMethod("+para+") called");
        String rev = new StringBuilder(para).reverse().toString();
        return rev;
    };

    public static void main(String[] args) throws URISyntaxException {
        
        JavaTestNashornJavascript javaTestNashornJavascript = 
                new JavaTestNashornJavascript();

    }

}


myjavascript.js
var javascriptFunction = function(para){
    
    print("para passed from Java to JavaScript: " + para);
    
    var myClass = Java.type("javatestnashornjavascript.JavaTestNashornJavascript");
    var revPara = myClass.javaStaticMethod(para);
    
    return "Hello " + revPara;
};



Monday, April 7, 2014

nashorn JavaScript exercise, call JavaScript function from Java

Example to call function and get result in Javascript, from Java code:

JavaTestNashornJavascript.java
package javatestnashornjavascript;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * @web http://java-buddy.blogspot.com/
 */
public class JavaTestNashornJavascript {
    
    final String myJavascript = "<path to myjavascript.js>";
    
    JavaTestNashornJavascript(){
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");

        try {
            FileReader fileReader = new FileReader(myJavascript);
            nashorn.eval(fileReader);

            Invocable invocable = (Invocable) nashorn;

            Object jsResult = invocable.invokeFunction(
                    "javascriptFunction", "Java-Buddy");
            System.out.println("result returned to Java from JavaScript: " + jsResult);

        } catch (FileNotFoundException 
                | ScriptException 
                | NoSuchMethodException ex) {
            Logger.getLogger(JavaTestNashornJavascript
                    .class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String[] args) throws URISyntaxException {
        
        JavaTestNashornJavascript javaTestNashornJavascript = 
                new JavaTestNashornJavascript();

    }

}


myjavascript.js
var javascriptFunction = function(para){
    print("para passed from Java to JavaScript: " + para);
    return "Hello " + para;
}



more nashorn JavaScript exercise:


Hello from java-buddy, with nashorn JavaScript Engine.

JDK 8 introduces a new Nashorn JavaScript engine written in Java, which is an implementation of the ECMAScript Edition 5.1 Language Specification. Know more by reading Java Platform, Standard Edition Nashorn User's Guide.

it's a simple example to print hello message using "nashorn" ScriptEngine.



package javatestnashornjavascript;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * @web http://java-buddy.blogspot.com/
 */
public class JavaTestNashornJavascript {

    public static void main(String[] args) {
        
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
        
        try {
            nashorn.eval(
                "print('Hello from java-buddy, with nashorn JavaScript Engine.');");
        } catch (ScriptException ex) {
            Logger.getLogger(JavaTestNashornJavascript.class
                    .getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
}


more nashorn JavaScript exercise: