Standalone Nashorn 15.0 is out
mail.openjdk.java.net
mail.openjdk.java.net
Is this just for those who are stuck with Nashorn, or will there be new development?
GraalJS is ECMASCript 2020 compatible and is said to rival V8 on performance, so I would've thought it the obvious choice for new projects going forward.
https://github.com/graalvm/graaljs
Edit: found more info about this release in the initial announcement:
https://mail.openjdk.java.net/pipermail/nashorn-dev/2020-Oct...
> The preferred way to run GraalVM JavaScript is from a GraalVM. If you prefer running it on a stock JVM, please have a look at the documentation in RunOnJDK.md.
I'm running it on a stock OpenJDK JVM without any issue, just by including a Maven dependency. For best performance you should run it on GraalVM (where the Community Edition is based on OpenJDK).
https://github.com/graalvm/graaljs/blob/master/LICENSE
"The Universal Permissive License (UPL), Version 1.0"
And about the UPL:
https://tldrlegal.com/license/universal-permissive-license-1...
"... including an explicit patent grant, clear ability to relicense ..."
It depends, do you want support for your JVM? If so:
* Graal CE has no support
* Graal EE requires either running on Oracle Cloud or calling Oracle Sales for a custom quote. These are non-starters for many.
* JVMCI requires `-XX:+UnlockExperimentalVMOptions` which often voids support.
* I believe Mandrel is supported but requires RHEL
I remember it being a bit of a pig, both in memory consumption and CPU use, but I'm sure that was just relative to the black magic behind V8.
I did a bit comparison with V8 maybe 5+ years ago and at the time, it was about the same speed as V8, from what I could see in a few quick tests — after warmup a lot.
For us, the performance difference was an order of magnitude, to the point that we were too slow in cases for search engines. We were investigating building an external Node proxy instance to prerender pages.
I sincerely hope there's no flag or simple tweak we were missing. It's possible the instances were starved for memory, for instance.
Interesting
...and several orders of magnitude slower than the other alternative JavaScript engine, GraalJS, which they don't mention for some reason.
Using node/v8 requires another distributable and starting up a new process.
I used it to add Markdown to a Java app, because JS-based Markdown libraries were better than Java-based ones.
(more details in this comment: https://news.ycombinator.com/item?id=25248748 )
@cogman10
> > Using node/v8 requires another distributable and starting up a new process
Precisely
https://insightful.demo.talkyard.io/-17/i-can-no-longer-work...
Is uses Nashorn for server side rendering a React.js Single Page App, calling from Scala to Nashorn running React.js code in the same JVM. (I'm developing it. Hmm I should clean up that demo forum.)
Graal JS is much closer to being on par with modern JS engines. Nashorn is on par with JS engines from 10 years ago.