BridJ is an innovative native bindings library that lets Java programmers use native libraries (written in C, C++, ObjectiveC and more) in a very natural way (inspired by the great JNA, with better performance, C++ and generics added).

Here are the changes since version 0.4 (see full change log here) :

  • Fixed callbacks on Windows x86
  • Fixed multithreaded callbacks ! (callbacks called in a different thread than the one that created them used to hang indefinitely)
  • Fixed Pointer and ValuedEnum arguments and return values in callbacks
  • Fixed loading of libraries that depend on other libraries in the same directory on Windows (issue #65)
  • Fixed BridJ.sizeOf(Pointer.class), sizeOf(SizeT.class), sizeOf(CLong.class)…
  • Enhanced C++ templates support
  • Added support for Windows APIs Unicode vs. ANSI functions renaming (e.g. SendMessage being one of SendMessageW or SendMessageA, depending on Platform.useUnicodeVersionOfWindowsAPIs)
  • Added deprecated support for struct fields implemented as Java fields, to ease up migration from JNA (needs manual calls to BridJ.writeToNative(struct) and BridJ.readFromNative(struct)) (issue #54)
  • Added preliminary read-only support for STL’s std::vector C++ type
  • Added BridJ.describe(Type) to describe structs layouts (automatically logged for each struct type when BRIDJ_DEBUG=1 or -Dbridj.debug=true)
  • Added BridJ.describe(NativeObject).
  • Added StructObject.toString() (calls BridJ.describe(this))
  • Added BRIDJ_DEBUG_POINTERS=1 (or -Dbridj.debug.pointers=true) to display extended pointer allocation / deallocation debug information
  • Reorganized Windows COM packages (moved out DirectX code to it own top-level project : com.nativelibs4java:directx4java)
  • Implemented FlagSet.equals

Special thanks to Andrei Sochirca for this release : couldn’t have made it without his patient and tireless testing and bugs reporting.

Anyone can contribute to the project by reporting bugs here).

Now what ?

  1. Download Bridj’s binaries : works on Windows (x86/x64), Linux (x86/x64), MacOS X (universal) and Solaris (x86)
  2. Generate BridJ wrappers for your library using JNAerator (just select “BridJ” in the “Runtime” combobox).
  3. Read some documentation :
  4. Join the NativeLibs4Java Google Group to share your questions and remarks with the community !