Opensource, Community, Governance

Christian Wimmer christian.wimmer at
Wed May 1 17:30:18 UTC 2019

Hi Bob,

Some answers to your Native Image related technical points:

>     - JNI over the C-ish "porting" of the JDK (removes DCE opportunities)

We see this as the only feasible way to have a maintainable and stable 
Native Image code base that works across multiple platforms (Linux, 
MacOS, Windows) and JDK versions (8, 11, latest).

We also think that it is not going to impact the startup time and memory 
footprint of native images, but implementation is not complete enough 
yet to show this.

>     - The fallback mode of native-image for Helidon

The fallback mode is not implemented for technical reasons, but only for 
legal reasons. Especially, it has nothing to do with Helidon (or any 
other concrete application that supports Native Image).

>     - The tight intertwinglyness of compressed pointers and isolates

This is a technical necessity: compressed pointers can only be used when 
references within the image heap are relative to the heap base - which 
is exactly what isolates provide. The support for isolates is a 
(positive) side effect of compressed pointers.

>     - The lazy class initiatialization changes

Based on our experience and feedback from early adopters (and all the 
effort you did for Quarkus was an important feedback for us too), it 
became clear that the default needs to be "initialize classes at run 
time". This is what Java developers are used to, and no application will 
work out-of-the-box if you change this. A lot of libraries and 
frameworks of course want to take advantage of class initialization at 
build time. We envision that libraries will ship with the appropriate 
configuration, i.e., that Quarkus will ship with the configuration that 
most classes are initialized at build time.

I'm sorry that we rushed out these changes, but we felt that the time 
window for a change like that was closing rapidly.

>     - the LLVM effort

I don't understand your concern here. What can be negative about 
supporting more platforms via LLVM?


More information about the graal-dev mailing list