Hacker News new | ask | show | jobs
by doctor_eval 1045 days ago
Whenever someone mentions Java AOT, I look it up, and it’s a nightmare. Has it changed recently?

I developed server software in Java for two decades, and I can tell you that the huge JVM was always a PITA for us, even after Docker became a thing. All those frameworks? We ended up throwing them out. And the slow startup speed of Java apps made our tooling sluggish. It was also a pain to ship tooling to non developers, for all the same reasons.

Using Go after all this time was like a breath of fresh air.

It’s fine for you to assert your own preferences and biases but you don’t represent all enterprise server developers.

1 comments

The only change is that now there are free beer AOT compilers, commercial AOT compilers have always been an option since around 2000.
OK... and these AOT compilers work identically to JIT compilers in every way, with no caveats other than needing to specify the architecture in advance.

Right..?

Naturally depends on the use case, yet they work good enough to be in business for 20 years.

https://www.ptc.com/en/products/developer-tools/perc

https://www.aicas.com/wp/products-services/jamaicavm-tools/

https://www.codenameone.com/

Android 5 & 6 (only changed back into JIT/AOT due to long compile times), https://www.infoq.com/news/2014/07/art-runtime/

Unfortunely the best well known, Excelsior JET, is no longer in business, most likely due to GraalVM and OpenJ9 being available as free beer, while PTC, Aicas Codename One are safe in their domains.

There is also RoboVM (https://github.com/MobiVM/robovm) as free beer, however it actually started as a commercial product, and the acquisition from Xamarin kind of stagnated it (naturally).

I think you missed my point.

Java AOT does not, and will probably never, offer a comparable experience with Go. Yes, it’s possible. But it’s not easy.

Naturally having to pay for compilers isn't something that Go folks would ever do.
You’re deliberately ignoring my point and then throwing in an ad hominem for good measure. It has nothing to do with free or non free.

I ran a Java enterprise company for twenty years. I looked at AOT on multiple occasions, starting with gcj 20 years ago, and most recently, GraalVM. There were plenty of commercial compilers in between.

If there had been a non free AOT compiler that didn’t come with a bunch of compatibility and licensing complexities we would certainly have considered it. Just like we bought non free IDEs.

But such a tool didn’t exist. The cost in missing features and added complexity was always much greater than the sticker price.

Java AOT is an afterthought, it is not at all comparable with Go AOT, which is a core feature of Go, expressed for example in the Go team’s explicitly designing the language itself to support fast compilation.

There are plenty of conversations to be had where we can compare the two languages, Go will not always win those discussions, but one of the inarguable features of Go is that it is AOT from the ground up, and that is a feature that’s really valuable to me.