E
Excelsior Blog
excelsiorjet.com · Company blog · on HN since 2012
Excelsior, maker of the Excelsior JET ahead-of-time Java compiler, wrote about JVM compilation, garbage collection, and Java tooling.
What HN saysHN links it as an example of Java AOT compilation, with one commenter criticizing its pricing and others citing its conservative GC article.
16HN people shared it
14linked it in comments
12stories submitted
298story points
7 years agolast shared
2012people per year2026
Most-shared posts
- 1Excelsior JET 16 cancelled and Excelsior moving away from JVM development12 people · 28 points · first shared 2013 · 5 comments on HN
- 2Conservative GC: Is It Really That Bad?2 people · 85 points · first shared 2018 · 47 comments on HN
- 3Excelsior JET Charity Bundle2 people · 2 points · first shared 2012 · discussion on HN
- 4Free2 people · first shared 2016
- 5The Folder of God1 people · 92 points · first shared 2017 · 19 comments on HN
- 6Reduction of Additions1 people · 64 points · first shared 2018 · 2 comments on HN
- 7AOT Compilation of Spring Boot: Behind the Scenes1 people · 6 points · first shared 2019 · discussion on HN
- 8Hardcore Java/JVM Quiz (with solutions)1 people · 6 points · first shared 2018 · discussion on HN
- 9Division by Null, or One Optimization Too Many1 people · 5 points · first shared 2017 · discussion on HN
- 10The Object Is Dead. Long Live the Object1 people · 4 points · first shared 2017 · discussion on HN
- 11Unsafe Harbor1 people · 4 points · first shared 2018 · discussion on HN
- 12From Excelsior's Archives: Main Thread Lives Twice (2015)1 people · 2 points · first shared 2017 · discussion on HN
- 13Portable profilers and where to find them1 people · first shared 2018
What HN people wrote when they linked it
oblio · 2018-02-22
It might as well not exist in this day and age: https://www.excelsiorjet.com/#pricing
Yes, you can argue: "that's not fair", "for a professional programmer that's worth only a few weeks of work's for massive productivity improvements", etc., but things don't work that way.
Most developers have been conditioned to not use commercial products, if they can. With an extra downside for the commercial product being closed source.
FullyFunctional · 2018-05-07
Sorry for the late follow up. Hopefully you're still around to notice. Apparently there was previous HN discussion on this, but I haven't seen it (or looked for it):
https://www.excelsiorjet.com/blog/articles/conservative-gc-is-it-reall…
pjmlp · 2018-02-22
> JVM AOT...we're waiting, we know it's coming.
https://www.excelsiorjet.com/
brudgers · 2017-12-24
I don't see the three languages as very different because Algol 60 is their prototype. The distinction between interpreted, VM, and compiled is an implementation rather than a language distinction...e.g. Jython runs on the JVM; Excelsior Jet compiles Java to native code; and Rusti is a Rust REPL.
https://en.wikipedia.org/wiki/ALGOL_60#Examples_and_portability_issues
https://www.excelsiorjet.com/
https://github.com/murarth/rusti
ece · 2017-08-19
I believe you are right. Azul has released a JIT compiler based on llvm: http://www.infoworld.com/article/3193078/java/azul-introduces-llvm-com…
Also: https://www.excelsiorjet.com/
and there seem to be open source projects like vmkit, https://github.com/ReadyTalk/avian that are somewhere in between.
btbytes · 2017-05-01
Excelsior JET -- https://www.excelsiorjet.com/ AOT compiler producing native binaries.
Cyph0n · 2016-07-06
You also have Excelsior[0], which provides full Java AOT (ahead-of-time) compilation to native machine code.
[0]: https://www.excelsiorjet.com/
amelius · 2016-02-13
By AOT, do you mean something like this:
http://www.excelsiorjet.com/
If you look at the "Benefits" tab, you will see that startup will still take on the order of 1+ seconds, which is quite long IMO.
Also, would this work with Clojure? And are there open-source AOT compilers which work with Clojure?
dbdr · 2014-12-01
Java projects can be compiled to a self contained native binary using http://www.excelsiorjet.com/ (though this is a proprietary tool, with a gratis license option for non-commercial projects).
Curious: why is this a requirement for you?
tormeh · 2014-12-01
Looks like it is Windows, Linux and Mac. No 32bit on Mac, though.
http://www.excelsiorjet.com/
gsmethells · 2014-05-08
As far as packaging and deployment of a native executable goes, I thought it odd to not mention Excelsior JET (http://www.excelsiorjet.com) as I believe that's the only Java compiler that can handle all of the JDK (gcj isn't there yet).
dleskov · 2013-08-19
Disclosure: I work for Excelsior.
Excelsior JET (http://www.excelsiorjet.com), a Java SE JVM with a native code compiler and deployment toolkit, is free for non-commercial use. Note that "non-commercial" != "open source", both ways: there is commercial open-source and closed-source freeware.
http://www.excelsior-usa.com/jetfree.html
dbg_nsk · 2018-02-23
Right, but even a single instruction placed on every backward branch and at the epilogue of every method causes noticeable impact on the performance. This is especially important in highly optimized code and that's why optimizing compilers like HotSpot C2 (and JET as well) try to remove as many safepoints as possible. Sometimes it even causes troubles like in this case:
https://bugs.openjdk.java.net/browse/JDK-5014723
Good point about inspecting thread's callstack. Indeed, with conservative GC we had a problem: many popular profilers were incompatible with JET because they inspect threads at safepoints and we had none. When we implemented the precise GC, this problem disappeared and it was an additional benefit for us. However, there are alternative ways to gather thread's callstack out of safepoint. We use them to avoid safepoint bias in our profiler. You can read more about it here:
https://www.excelsiorjet.com/blog/articles/portable-profilers-and-wher…
----
Thanks for kind words! I'm glad that you liked the post!
throwawayaway · 2014-11-12
I don't have the technical chops to disagree with you. But rest assured I would not do a better job. Last time I checked java programs do not like operating within the same VM[0]. Last time I looked at it, it was to get a bunch of people running Eclipse remotely from the same JVM instance on a huge box in 2012 or something. It was a no-goer, but some experimental JVM's claimed to support it. [1]
Powershell is a terrible example for the performance point I am trying to make, whatever about its flexibility.
[0] http://www.javalobby.org/java/forums/t72620.html
[0] http://stackoverflow.com/a/13496610
[1]http://www.ibm.com/developerworks/library/j-multitenant-java/index.htm… (this now looks less experimental but I'm willing to bet >1 instance of eclipse, or bash for that matter would not work very well).
I'm not sure how this works:
http://www.excelsiorjet.com/
but it might help to alleviate the problem even though it still has a jvm.
https://en.wikipedia.org/wiki/Java_Classloader
looking at what you mention now, can a program classload itself? seems not: A class with a given name can only be loaded once by a given classloader.