For those not reading the comment section:<p>Regarding the example benchmark: It is mainly testing the performance of the String::compareToIgnoreCase method, which has a very different implementation in Java 9 and beyond compared to Java 8 (due to the "compact strings" feature). The method generally is not very complex, so it is not ideal for compiler comparisons.<p>...<p>The largest workload tested on Graal is currently the production use of Graal at Twitter where they get somewhere between 12% (CE) and 24% (EE) improvement.
I played with it a few weeks ago, mostly interested in Python and the article I read and the Graal home page didn't make it clear that the Python support is not even close. I tried a "print 'hello world'", and that didn't work at all. sys.stdout.write did work. I then did a simple test of startup time and Python was an order of magnitude faster than Graal.<p>The Graal Python prints a warning when you start it that it is a very early state.<p>So I tried Ruby, and I was able to do a simple print, and the startup time for Graal vs Ruby was about the same.<p>Looks like Java is the real target right now. A very interesting project, looking forward to seeing where it goes.
This is a nice video where Twitter engineer discusses performance improvement with Graal. Twitter runs thousands of JVM and found massive savings in time and cost with the move <a href="https://www.youtube.com/watch?v=pR5NDkIZBOA" rel="nofollow">https://www.youtube.com/watch?v=pR5NDkIZBOA</a>
I've been thinking about this a lot - binary interfaces.<p>We have this problem of one standard binary interface, the C ABI. It is the only standard binary interface. If I want to write a library that can be used by any language, I have to export a C interface.<p>There have been solutions, such as Corba and COM, but cross language support never really took off. We end up with ports of libraries. There are tons of libraries ported between C++, Java, C#, etc. All because they live in their own world. Using a C++ library in C# requires exporting a C interface and then hand wrapping the library with pinvoke.<p>Before I read about GraalVM I was under the impression that WebAssembly would accomplish this.
TL;DR: for the author's test, Java 9 had better performance and creating native code didn't work. So not quite there yet, but interesting to watch.
Can somebody please explain me in plain english, how this is different from vert.x? Even Graal seems to be OSS, I would rather use Eclipse foundation project (vert.x) than anything from Oracle.