Standalone Nashorn is coming for Java 15+
Attila Szegedi
szegedia at gmail.com
Sun Oct 11 07:28:04 UTC 2020
Folks,
some good news for y'all (presumably you're on this mailing list because you are interested in Nashorn.)
Since Nashorn's removal from JDK starting with Java 15, numerous people have realized that they, in fact, rely on it. To remedy the situation, Nashorn will continue as a standalone project within the OpenJDK organization.
You might ask, "But isn't Nashorn officially dead?", to which the answer is: no, it isn’t. The project’s product is merely no longer shipped as part of the JDK project. The Nashorn project in OpenJDK organization is still live[1], along with all of its resources including the mailing list this message is posted on. It was merely not active for a while, until now.
What does this mean in practical terms? The following will happen or are happening:
* Project communication will continue on this mailing list (<nashorn-dev at openjdk.java.net>).
* A GitHub project openjdk/nashorn will be set up. It will be populated by a clone of the openjdk/jdk14u repo that has been filtered for Nashorn-only commits. (Thanks, git-filter-repo[2], you are awesome!) There will be no synchronization back to jdk14u afterwards, it won't act as an upstream. openjdk/nashorn proceeds independently from that point on.
* The project will change the module and package names as it can't keep living within the top-level "jdk." package. In accordance with other independently-developed OpenJDK projects, it will transition to module and package names within the "org.openjdk." package. Fortunately for Nashorn, it is mostly used through the "javax.script.*" APIs so people that use it through those APIs won't have to adapt their code. Creating the engine by name as described in Nashorn’s last (JDK 14) API docs[3] will continue to work. People that used to use the Nashorn-specific API (typically, AbstractJSObject and ScriptObjectMirror) will need to adapt their code for new package names, though.
* Project artifacts (in plain English: JAR file to be used with Maven etc.) will be published on SonaType under the "org.openjdk" organization, again similar to other independently-developed OpenJDK projects.
The goal for the initial release is to ship a standalone Nashorn with identical functionality to that in JDK 14, with the only changes being:
* reversing of deprecation and “scheduled for removal” notices,
* enacting the package and module name changes,
* replacing or removing dependencies on various jdk.internal.* packages since those are no longer exported from JDK modules to the Nashorn module.
It is possible for expediency that we will decide to ship Nashorn as a library first, and separately ship the initial version of the jjs shell sometime later.
I’m personally undertaking these initial tasks. I will let you know here on the list about the progress, and once the repo is set up the work will also start appearing on a branch.
There are some other aspects of the project that need to be worked out: contribution and review guidelines, publication location of the accompanying documentation (that will no longer be part of the JDK documentation) and so on. I will post discussion-initiating e-mails for these as well as time comes and will absolutely welcome feedback on them, just as I welcome feedback on this plan too.
Attila.
--
[1] https://openjdk.java.net/projects/nashorn/
[2] https://github.com/newren/git-filter-repo
[3] https://docs.oracle.com/en/java/javase/14/docs/api/jdk.scripting.nashorn/module-summary.html
More information about the nashorn-dev
mailing list