Java compilation [was GCs in the news]

Russel Winder via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 23 01:46:21 PDT 2014


On Tue, 2014-07-22 at 10:55 +0000, Paulo Pinto via Digitalmars-d wrote:
[…]
> The JVM JIT was originally targeted to SELF, not Java.

I think you'll find HotSpot evolved from a Smalltalk JIT originally.
Borland and Semantec had JVM JITs as well, Sun even licenced the
Semantec one for a while.

[…]
> Functional programming languages have AOT compilers and they 
> perform quite well, almost to C level in many use case cases.

True. Java/JVM/JIT also performs very well surpassing C in many cases.
Indeed C++ surpasses C in many cases as well.

> As for Groovy, I always felt the implementation was always 
> lacking in performance.

True. Groovy is a dynamic language not intended for performance
computation. However it now has static compilation to JVM bytcodes as
well which leads to it being as fast or sometimes faster than Java.

> I avoid touching Gradle.

Your loss!

For others: Gradle is becoming the de facto standard build framework for
JVM-based things and also Android. 

[…]
> 
> I was discussing JIT vs AOT in abstract.

The trouble is that this isn't a good way of discussing what is a
performance issue that can only be decided by comparative benchmarks.

> To be able to perform such a tests you need:
> 
> - A programming language X

In the case at hand X = Java.

> - The state of the art JIT compiler implementation for the given 
> language

I guess HotSpot is the default here, unless anyone has access to the IBM
VM.

> - The state of the art AOT compiler implementation for the given 
> language
> 
> I know a few commercial AOT compilers for Java, not sure which 
> one would be the best one to choose.

I am not sure which I would go with here as I have little experience of
the high cost products. We'd have to get some sponsorship for the
benchmarks. I will ask around the folks in the JVM performance
community.

> But the proof is Microsoft adding .NET Native to their toolchain, 
> Google replacing Dalvik with AOT and Oracle has added AOT 
> compilation (Substract) to Graal, the candidate to Hotspot 
> replacement.

Graal isn't a replacement for HotSpot but a dynamic compilation
technology to work with HotSpot. It is actually a very promising
technology, I am looking forward to trying it out.

> So apparently they all agree AOT still wins in many scenarios.

Why is it one or the other? Having both AOT and JIT will likely do even
better. Hence Graal on HotSpot.

Certainly AOT putting the burden on compilation, ensures there is no
start-up overhead, so is a benefit for short running systems. JIT has an
initial (often large) overhead but once triggered produces highly
performant (localized) code. Java is going to have to find the balance
to stay up with the performance needed these days.

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder at ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel at winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20140723/5811a653/attachment.sig>


More information about the Digitalmars-d mailing list