4 ms·
This is very exciting, but still a long way from what people probably think it is at first glance. This isn't "compile your application to an EXE", like Go or
by StevePerkins 10y ago
This is very exciting, but still a long way from what people probably think it is at first glance.
This isn't "compile your application to an EXE", like Go or Rust. This is "compile some or all of your application to a DLL, and then have the Java runtime use that DLL".
In other words, you still need a JRE available. The use case for this is simply optimizing hotspots in some very specialized situations.
- duskwuff 10y agoNot even compile to a DLL, really. The file format happens to be an ELF shared object, but its contents are unusable to anything other than Java, so it's effectively just a blob.
- pjmlp 10y agoAnyone willing to pay for them, can buy a commercial AOT compiler for Java today, there are quite a few available. This is significant for those that want to AOT Java without paying for it.
- dleskov 10y agoSome info for those that want to AOT Java without paying for it: The entry-level edition of Excelsior JET is free (as in beer) since the end of August 2016. Licenses for the more senior editions have been available for non-commercial use at no cost for many years. https://www.excelsiorjet.com/free https://www.excelsiorjet.com/free
- WatchDog 10y agoHotspots aren't really going to be any faster with this change. The jvm already does a pretty good job of optimising hot code, which is why the vm is literally called hotspot. AOT compilation is mostly intended to address startup time, Java has a big std library and much of it needs to be interpreted and compiled each time it runs. Between jigsaw modules and this, we should see some nice improvements in startup time.
- jjnoakes 10y agoI don't think this is right, is it? I think this change is more about consistent performance than startup performance. For me the JVM starts really quickly; the only performance issues I've seen there are related to large bloated frameworks doing too much at load time. I don't recall the std library being a factor at all (and why do you think it is recompiled every invocation?)