Git Product home page Git Product logo

gluegen's Introduction

GlueGen, Native Binding Generator for Java™

Original document location

Git Repository

This project's canonical repositories is hosted on JogAmp.

Overview

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 also provides a comprehensive runtime library offering

  • Support for multi-arch and java code fat-jar deployment
    • Native library including JNI bundle handling and Jar file cache
    • Platform architecture information retrieval, ELF parser, alignment etc
  • Enhanced NIO buffer handling for pointer, arrays, DMA mapping etc
  • Network Uri RFC 2396, connection and resource handler to simplify asset loading
  • Bitstream, hash maps, ringbuffer, sha cumulator, reflection and threading utils
  • Abstract AudioFormat and AudioSink interfaces, concurrent locks .. and more

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™.

GlueGen is used for the JogAmp projects JOAL, JOGL and JOCL.

GlueGen is part of the JogAmp project.

The JogAmp project needs funding and we offer commercial support!
Please contact Göthel Software (Jausoft).

License

See LICENSE.txt.

Documentation

Build Requirements

Check GlueGen's HowToBuild.

Directory Organization:

make/           Build-related files and the main build.xml
doc/            Documentation
jcpp/           JCPP (git sub-module), migrated C preprocessor written in Java
src/            The actual source for the JOAL APIs.
src/junit/      Unit tests
test/           Standalone manual tests
build/          (generated directory) Where the Jar and DLL files get built to
www/            JOAL project webpage files

Contact Us

History

Since roughly 2010, GlueGen development has been continued by individuals of the JogAmp community, see git log for details.

gluegen's People

Contributors

andreas-schwab avatar barcsikattila avatar brittade avatar diegopl avatar emenifee avatar hharrison avatar io7m avatar kenrussell avatar mathiusd avatar mbien avatar neosam avatar ph0b avatar pini-gh avatar rothwell avatar rsantina avatar sgothel avatar sylvestre avatar tgc avatar utgarda avatar wadewalker avatar xranby avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.