Skip to content

Commit f377ea1

Browse files
committed
Nashorn js engine
1 parent 636c3c2 commit f377ea1

2 files changed

Lines changed: 60 additions & 0 deletions

File tree

src/java8_features/NashornJS.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package java8_features;
2+
3+
import javax.script.ScriptEngine;
4+
import javax.script.ScriptEngineManager;
5+
import javax.script.ScriptException;
6+
import java.io.FileInputStream;
7+
import java.io.FileNotFoundException;
8+
import java.io.InputStreamReader;
9+
import java.io.Reader;
10+
11+
/**
12+
* With Java 8, Nashorn, a much improved javascript engine is introduced,
13+
* to replace the existing Rhino. Nashorn provides 2 to 10 times better performance.
14+
* Created by nector on 28/02/17.
15+
*/
16+
public class NashornJS {
17+
18+
public static void main(String[] args) {
19+
20+
ScriptEngineManager manager = new ScriptEngineManager();
21+
ScriptEngine nashorn = manager.getEngineByName("nashorn");
22+
23+
String name = "Nector";
24+
Integer result = null;
25+
26+
try {
27+
// eval method executes the javascript code in brackets.
28+
nashorn.eval("print('" + name + "')");
29+
result = (Integer) nashorn.eval("10 + 2");
30+
} catch (ScriptException ex) {
31+
System.err.println("Error executing script: " + ex.getMessage());
32+
}
33+
34+
try {
35+
// Create a reader from an FileInputStream and execute its script
36+
Reader jsReader = new InputStreamReader(
37+
new FileInputStream("src/java8_features/TestScript.js"));
38+
nashorn.eval(jsReader);
39+
40+
} catch (ScriptException ex2) {
41+
System.err.println("Error executing script: " + ex2.getMessage());
42+
} catch (FileNotFoundException ex3) {
43+
System.err.println("Error finding file");
44+
}
45+
46+
System.out.println(result.toString());
47+
48+
}
49+
50+
}

src/java8_features/TestScript.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* Created by nector on 28/02/17.
3+
*/
4+
5+
a = 1
6+
b = 2
7+
c = 3
8+
9+
d = a + b + c
10+
print("The result is " + d)

0 commit comments

Comments
 (0)