JDK-8236933 : JEP 372: Remove the Nashorn JavaScript Engine
  • Type: JEP
  • Component: core-libs
  • Sub-Component: jdk.nashorn
  • Priority: P3
  • Status: Closed
  • Resolution: Delivered
  • Fix Versions: 15
  • Submitted: 2020-01-10
  • Updated: 2020-12-15
  • Resolved: 2020-05-26
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Sub Tasks
JDK-8243497 :  

Remove the Nashorn JavaScript script engine and APIs, and the `jjs`
tool. The engine, the APIs, and the tool were
[deprecated for removal in Java 11](http://openjdk.java.net/jeps/335) with the
express intent to remove them in a future release.


The Nashorn JavaScript engine was first incorporated into JDK 8 via
[JEP 174](http://openjdk.java.net/jeps/174) as a replacement for the Rhino
scripting engine.  When it was released, it was a complete implementation of
the ECMAScript-262 5.1 standard.

With the rapid pace at which ECMAScript language constructs, along with APIs,
are adapted and modified, we have found Nashorn challenging to maintain.


This removal does not affect, in any way, the `javax.script` API.


Two [JDK modules](http://openjdk.java.net/jeps/200#Design-principles) will be
permanently removed:

- `jdk.scripting.nashorn` -- contains the `jdk.nashorn.api.scripting` and 
  `jdk.nashorn.api.tree` packages.

- `jdk.scripting.nashorn.shell` -- contains the `jjs` tool.

Risks and Assumptions

We assume that developers who rely on Nashorn have had enough notice of its
proposed removal to make alternative arrangements. The deprecation-for-removal
of Nashorn in JDK 11 was confirmed in June 2018, causing the proposed removal
to be flagged at every use of the `jdk.nashorn.*` API and the `jjs` tool in JDK
11, 12, and 13. During this period, no set of credible developers expressed a
clear desire to maintain Nashorn in JDK 14 and beyond.

Reviewed as well.