4 ms·
20 years ago, I was a lurker on the JikesRVM (IBM's research project building a JVM in Java) mailing list. JikesRVM is still around, but not terribly active la
by KMag 4y ago
20 years ago, I was a lurker on the JikesRVM (IBM's research project building a JVM in Java) mailing list. JikesRVM is still around, but not terribly active last I checked. Oracle is quite late to the game, and I'm just generally sad that Oracle ended up owning Java instead of IBM (or perhaps Google, but my trust in Google seems to be monotonically decreasing).
Last I checked, Oracle's AoT compiler threw away any metadata necessary for HotSpot to be able to trace its way trough the native code, so if your AoT-compiled code was part of a hot loop, HotSpot wouldn't be able to perform any inlining or other runtime optimizations of your code. It seems like fixing this would be a first step to having a high performance JVM written in Java with start-up/warm-up time comparable to a JVM written in C++.
While we're at it, Erlang/Elixir/BEAM's NIFs seem the right way to implement native code extensions to your VM. You write implementations in your language that get replaced with native versions if the native library is successfully loaded. Maybe your non-native implementation is just a stub that throws if it's called. With a few lines at the top of your module, you can attempt to load one or more native libraries and handle/ignore any errors. This makes it much easier to gracefully degrade if a particular native library isn't available on the local machine (or even available for the platform). It's a real pain to fall back to a Java implementation if the JNI implementation isn't available for any reason.
- pjmlp 4y agoIt was Oracle that turned the MaximeVM research project into GraalVM, bringing it outside of the research lab. IBM would have killed it instead, J9 already provides AOT and JIT caches, almost a decade older before such capabilities landed on OpenJDK.
- lvh 4y agoPoint of order since native-image is a party piece for Graal: AOT is more in the sense of JIT (but, well, ahead of time) than a self-standing binary a la native-image, right?
- pjmlp 4y agoGraalVM uses its JIT infrastructure for AOT compilation, but it is still AOT, nee SubstrateVM. Or do you mean J9? It grew out of the Metromone project for embedded deployment. https://researcher.watson.ibm.com/researcher/view_group.php?id=174 https://researcher.watson.ibm.com/researcher/view_group.php?...
- titzer 4y agoJ9 and its various embedded configurations predated Metronome. Metronome was highly focused on realtime applications.
- pjmlp 4y agoSure, I used it during the Websphere 5 - 6.1 timeframe. However from IBM RedBooks it looks like some of those Metronome improvements landed on J9, after Websphere Real Time product ceased to be available.
- titzer 4y agoI worked on Maxine when the IBM acquisition of Sun rumors hit in 2009. I wasn't the only one excited. When it fell through and Oracle stepped in, there was a lot of gloom. I am pleasantly surprised that Oracle invested so much in the project afterwards.