Last Updated : 12 Jul, 2025
Nashorn: Nashorn is a
JavaScript enginewhich is introduced in JDK 8. With the help of Nashorn, we can execute JavaScript code at
Java Virtual Machine. Nashorn is introduced in JDK 8 to replace existing JavaScript engine i.e. Rhino. Nashorn is far better than Rhino in term of performance. The uses of invoking dynamic feature, conversion of JavaScript code into the bytecode directly into the memory etc makes the Nashorn more famous in JDK 8. We can execute JavaScript code by using the command-line tool and by embedding the JavaScript code into Java source code.
Executing JavaScript code by using console:For Nashorn engine, Java 8 introduced one new command-line tool i.e.
jjs. We have to follow the below steps to execute JavaScript code through the console:
var gfg= function(){
print("Welcome to Geeksforgeeks!!!");
};
gfg();
Welcome to Geeksforgeeks!!!
We can execute JavaScript file by embedding JavaScript file into Java code with the help of
ScriptEngineclass. ScriptEngine class is introduced in JDK 6. By the help of the ScriptEngine class, we can create a JavaScript engine and with the JavaScript engine, we can execute the javaScript file.
Example 1: Java
// Program to illustrate embedding
// of JavaScript file into Java code
import javax.script.*;
import java.io.*;
public class Geeksforgeeks {
public static void main(String[] args)
throws Exception
{
// Here we are generating Nashorn JavaScript Engine
ScriptEngine ee = new ScriptEngineManager()
.getEngineByName("Nashorn");
// Reading JavaScript file create in first approach
ee.eval(new FileReader("geeks.js"));
}
}
Output:
Welcome to Geeksforgeeks!!!Example 2: Java
// Program to illustrate embedding
// of JavaScript code into Java code
import javax.script.*;
import java.io.*;
public class Geeksforgeeks {
public static void main(String[] args)
throws Exception
{
// Here we are generating Nashorn JavaScript Engine
ScriptEngine ee = new ScriptEngineManager()
.getEngineByName("Nashorn");
// Instead of reading JavaScript code from a file.
// We can directly paste the JavaScript
// code inside Java Code
ee.eval("print('Welcome to Geeksforgeeks!!!"
+ " Executing JavaScript code with the"
+ " help of Nashorn engine');");
}
}
Output:
Welcome to Geeksforgeeks!!! Executing JavaScript code with the help of Nashorn engine
Apart from above,
with the help of Nashorn JavaScript Engine, we can perform multiple operations like:
// JavaScript file name with geeks.js
print("Welcome to Geeksforgeeks!!! Mr. "+name);
Example 2: Java code providing name variable to the JS file Java
// Program to illustrate passing of variable
// from java code to javascript file
import javax.script.*;
import java.io.*;
public class Geeksforgeeks {
public static void main(String[] args)
throws Exception
{
ScriptEngine ee
= new ScriptEngineManager()
.getEngineByName("Nashorn");
Bindings bind
= ee.getBindings(
ScriptContext.ENGINE_SCOPE);
bind.put("name", "Bishal Kumar Dubey");
ee.eval(new FileReader("geeks.js"));
}
}
Output:
Welcome to Geeksforgeeks!!! Mr. Bishal Kumar Dubey
// JavaScript file name with geeks.js
var func1 = function(){
print("Simple JavaScript function!!!");
}
var func2 = function(reader){
print("Hello "+reader);
}
Java
// Program to illustrate calling of
// JavaScript function from Java code
import javax.script.*;
import java.io.*;
public class Geeksforgeeks {
public static void main(String[] args)
throws Exception
{
ScriptEngine ee
= new ScriptEngineManager()
.getEngineByName("Nashorn");
ee.eval(new FileReader("geeks.js"));
Invocable invocable = (Invocable)ee;
// Here we are calling func1
invocable.invokeFunction("func1");
// Here we are calling func2
// as well as passing argument
invocable.invokeFunction("func2",
"Bishal Kumar Dubey");
}
}
Output:
Simple JavaScript function!!! Hello Bishal Kumar Dubey
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4