groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paolo Di Tommaso <paolo.ditomm...@gmail.com>
Subject Groovy AOT compilation
Date Mon, 08 May 2017 15:02:00 GMT
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

Mime
View raw message