-
Notifications
You must be signed in to change notification settings - Fork 77
CurrentState
Olivier Chafik edited this page Nov 8, 2022
·
5 revisions
Display the CHANGELOG
Binaries are currently available and routinely tested for the following platforms :
- Windows (32 & 64 bits), tested on XP 32 bits and Windows 7 64 bits.
- MacOS X (Universal : PPC, Intel 32 & 64 bits), tested on x86_64.
- Linux (x86 & x86_64), tested on Ubuntu 9.10 x86 and x86_64.
- Solaris 10 x86
(plans are to support FreeBSD 32/64 and Solaris sparc soon)
- thread-safe design (including reentrant calls)
- JNAerator support on par with JNA's
- C functions calls with __cdecl and __stdcall conventions (including varargs support)
- C++ constructors, method calls and destructors (including virtual methods, __thiscall and __stdcall conventions)
- C++ classes subclassing from Java (override virtual C++ methods from Java !)
- lazy signatures annotation support (exact symbols are optional)
- Call C callbacks from Java and call Java-implemented callbacks from C
- Complete Pointers API (with typed opaque pointers, array accessible + iterable reified generic Pointer base class...)
- Type-safe enums (ValuedEnum + FlagSet classes) : unifies singleton and multi-flags patterns
- COM object creation and calls, with some support for the VARIANT type
- lightweight and fast structs (no memory duplication nor update issues between Java and the native side), with unions and sub-structs
- Getting the native handler to an AWT Component's peer
- Dynamic function pointers casting (see Pointer.asDynamicFunction)
- Enumeration of shared libraries symbols (w/ demangling) and resolution of libraries paths (including support for GNU LD scripts)
- structs by value not supported yet (neither as function arguments nor as function return values)
- requires Java 1.5 or more recent (if you need 1.4 compatibility, you shoud JNA instead)
- assembly-optimized raw calls (for Win32, Win64, Mac64, Linux32, Linux64) : win64 is buggy, lin32 is TODO, mac is buggy with floats and doubles (of course, buggy implies disabled)
- C++ templates for functions and classes (combination of generics and extra args/fields for types reification and last-minute lookup of actual symbols). Begins to work with GCC.
- ObjectiveC methods calls (objc_msgSend) : hope to draw interest from Rococoa developers
(also see GoogleSummerOfCode for projects on which we'd love to receive help, from students or passionate individuals)
- pass and return structs by value
- C++ templates typedefs :
typedef WImageC<uchar, 1> WImage1_b;
(JNAerator should create WImage1_b with the correct constructor). - COM JNAeration : need to parse __declspec(uuid("xxx"))
- some amount of built-in support for STL types (strings and vector at least, in debug/release mode, for GNU's STL, STLPort and MS VC++9's STL)
- Full MFC Runtime (with annotations-based message map creation)
- Mono/CLR interop (see my previous hack)
- MS/.NET interop
- reverse-engineering helper (struct sizes guesses can be eased up a bit, and there's already a good demangler)
On Windows :
- C runtime + DbgHelp
On MacOS X :
- C runtime + libobjc + pthreads
On other Unix platforms :
- C runtime + pthreads
Why limiting the scope of this project so early ?