I think a biggest question than AOT compatibility is why does compile static 
still need to do reflection? I thought that was the point was to disable it, 
especially for Android support…? Unless the issue is the metaclass generation, 
does compile static still generate metaclasses?

Jason

From: Paolo Di Tommaso [mailto:paolo.ditomm...@gmail.com]
Sent: Monday, May 08, 2017 11:02 AM
To: users@groovy.apache.org
Subject: Groovy AOT compilation

Dear all,

I just want to share with you my experience with the Java AOT 
compiler<http://www.oracle.com/technetwork/oracle-labs/program-languages/overview/index.html>
 a came across a few days ago.


Although they said clearly that it still an experimental project and it does 
not support dynamic class loading and most of reflection, I turns out it's 
possible to compile a basic static Groovy class, eg:

@groovy.transform.CompileStatic
class Hello {

  static void main( String... args ) {
    System.out.println "Hello world!"
  }
}


This mean that it creates a native 5MB binary executable, that can run on any 
machine without the need of the Java VM nor the Groovy runtime! in 12 
millisecond! cool!!


Unfortunately the good news stops here. I was unable to successfully compile 
any other piece of code, which for example uses a Groovy "println" method or 
just instantiate a class. The problem seems to be that, even though the code is 
statically compiled, Groovy uses reflection behind the scene to instantiate 
classes and performs other operations.

Now, I guess this is certainly not a Groovy top priority, however since there 
is an on-going discussion around a major Groovy reengineering to make it 
compatible with the upcoming Java 9 module system, I was wondering if it would 
not make sense to include the support for the Java AOT compiler as a goal for a 
future Groovy 3/4 release?

Personally I think it would be an extremely useful feature and a major 
achievement for the project.


What do you think ?


Cheers,
Paolo



This email message and any attachments are for the sole use of the intended 
recipient(s). Any unauthorized review, use, disclosure or distribution is 
prohibited. If you are not the intended recipient, please contact the sender by 
reply email and destroy all copies of the original message and any attachments.

Reply via email to