GlueGen Compiler Updates

GlueGen is a compiler for function and data-structure declarations, generating Java™ and JNI C code offline at compile time and allows using native libraries within your Java™ application. GlueGen is used for the JogAmp projects JOAL, JOGL and JOCL besides others. We have added Java™ callbacks, enhanced compound struct access, bumped the Java™ source language level and updated the documentation.

You may also like to read GlueGen Proudly Beating Panama and GlueGen/JNI versus Panama, where I recap GlueGen’s features and compare it against OpenJDK project Panama. Bottom line, GlueGen’s ability to produce data-struct and foreign function (FFI) bindings statically at compile time allows an easy to use resulting Java API and code analysis plus security assessments.

I like to thank Mathieu Féry and the team at Ankama for joining efforts in these tasks.

The work will be released within JogAmp v2.5.0 and release candidates are available.

Below I have emphasized the new and updated GlueGen parts, besides, the following documentation has been updated or newly added:

***

GlueGen‘s compiler reads ANSI C header files and separate configuration files which provide control over many aspects of the glue code generation. GlueGen uses a complete ANSI C parser and an internal representation (IR) capable of representing all C types to represent the APIs for which it generates interfaces. It has the ability to perform significant transformations on the IR before glue code emission.

GlueGen can produce native foreign function bindings to Java™ as well as map native data structures to be fully accessible from Java™ including potential calls to embedded function pointer.

GlueGen supports registering Java™ callback methods to receive asynchronous and off-thread native toolkit events, where a generated native callback function dispatches the events to Java™.

GlueGen also supports producing an OO-Style API mapping like JOGL’s incremental OpenGL Profile API levels.

GlueGen is capable to bind low-level APIs such as the Java™ Native Interface (JNI) and the AWT Native Interface (JAWT) back up to the Java programming language.

Further, GlueGen supports generating `JNI_OnLoad*(..)` for dynamic and static libraries, also resolving off-thread `JNIEnv*` lookup.

GlueGen utilizes JCPP, migrated C preprocessor written in Java™.

***

Related bug/feature reports are