20 comments

[ 5.2 ms ] story [ 361 ms ] thread
With Java 9, Java finally supports HiDPI on Linux and Windows. MacOS has had HiDPI support since Java 7u40. On Linux it also adds GTK support.
On Linux it also adds GTK support.

Too late to edit: I meant GTK3 support. It supported GTK2 just fine even before JDK 9.

Android Studio 2.3 and the corresponding gradle versions embedded in android projects throw a hissy-fit on this java version. Android studio refuses to select the jdk9 directory (says "Please use JDK 8 or newer"), and gradlew quickly fails with "Parsing the SDK, no caching allowed, Failed to notify project evaluation listener, javax/xml/bind/annotation/XmlSchema"...?
I was pretty excited about AOT compilation⁰, but it seems it doesn't support dynamically generated classes and bytecode i.e.: lambdas and invokedynamic.

⓪ - http://openjdk.java.net/jeps/295

It is work in progress, the Java 10 dev branch already has much better support, including macOS and Windows, according to the Java Languages Summit 2017 talks.

In any case, the other JDK vendors with AOT support are still around.

Are there any free JVMs with AOT besides Eclipse/IBM OpenJ9 (of which I've only learned a couple of days ago)?
Really? Reading the document I felt AOT was too much pain for too little gain.

This might benefit IDEs with slightly less startup time but with SSDs even that's questionable. And who besides IDE authors is writing desktop apps in Java anyways?

It might also be useful for scripts and small CLI utilities where interactive invocation is a lot nicer with short startup times.
I'd write desktop apps in Java if AOT was available. I'd much prefer Java with JavaFX/Swing/SWT to C++ with QT for cross platform desktop apps. Maybe we'd see Java used for cross platform desktop apps more, instead of the usual Electron app.
The main benefactor of AOT will be the JVM itself - part of the reason for its sluggish startup time is having to interpret and then JIT a bunch of core libraries.
Will JVM ever play with the browser again? https://twitter.com/globalmaxima/status/908089963752808448

It would be great if Oracle licensed & worked to get bytecode into chromium and Microsoft did likewise with cil. It will take wasm 10 years to mature anywhere near those two. It'd be nice to not have to wait.

Even if Oracle were willing to relicense the JVM under more permissive terms, I very much doubt Google/Chromium would agree to include a JVM in Chrome. The experience with applets has been the JVM is difficult to secure for untrusted code execution due to its broad API surface. (Maybe running an untrusted JVM in a sandbox would help with that.) Putting that aside, the JVM is just such a massive code base, I don't think Google/Chromium would want to embed it. And the same comments apply to Apple, Microsoft and Mozilla. And the situation with the equivalent proposal for the CLI is broadly similar.

I think what is plausible is that OpenJDK could support wasm as a platform (as a target for JIT and AOT), and similarly so could .Net. Wasm probably isn't mature enough yet for either to succeed, but I can't see why it can't get there.

This thread is about Java 9, which includes the Java Module System aka Jigsaw. The JDK itself was modularized. The API surface is now tiny. It would be easy for chromium to whitelist which are the permissive modules. Applets had a different and inferior security model.
The problem with jvm in the browser is that:

1. Java applets aren't automatically run, you have to click an 'run' button

2. Java can't interact with DOM

JS is built on top of the DOM, and it runs automatically on page load. All JAVAWS has access to is a given section of screen. Honestly, I wish it happens, but I doubt it does. I think chrome would want WASM to succeed and to make everything compile to it because it's a platform they have a significant amount of control over. Which is a damn shame because the JVM is pretty much the best vm out there, and it makes more sense to support it than to try to play catch-up with another VM.

(comment deleted)