|
What it is
JAW is a framework based on the Java Native Interface (JNI) to integrate C++ code in Java applications
No knowledge of JNI is required
Special support for integration of third party DLL libraries in Java, like drivers for realtime data acquisition modules
|
|
|
Concept
JAW is a frameworks with an underlying proxy pattern. In JAW a Java class and its methods have a close correspondence to the native C++ class and their methods. JAW uses but hides the JNI mechanism by defining two wrapper classes NativeHandler for Java and WindowHandler for C++. A typical JAW application uses an instance of NativeHandler and derives from WindowHandler. No knowledge of JNI is required, but a basic knowledge of C++ is necessary, due to the fact that the user of JAW must edit and build the native DLL with a C++ IDE, typically with Microsoft's Visual Studio.
Features
- Hides the internal mechanism of JNI, no native Java methods and no JNI C functions needed
- Native code runs in a separate native (high priority) thread
that is transparent to the user
- Easy creation of visible or semi-transparent native windows
with simple access to its event loop by registering specific messages
- Data transfer between primitive Java instance variables and C++
with templates eliminates type casts
- Data transfer between Java strings and array with C++ templates
Support for Unicode, MBCS and UTF-8 strings
- Callbacks of Java methods with C++ templates
- Native FIFO buffer for streaming data transfer from C++ to Java
- Designed to integrate third party DLL libraries into Java, e.g. drivers
for realtime measurement devices (National Instruments, Keithley, etc.)
- Error handling by callbacks or returning error codes rather than throwing exceptions
- Unnecessary to use javah to generate C header files.
Restrictions
- No support for the Java invocation API (dynamic creation of a JVM, classes and methods)
- No support for data transfer via Java static fields
- Only available for the Windows operating system
- Because the DLLs use some resources from the Visual C distribution,
installation of Microsoft Visual C++ Redistributable Package may be
necessary
|
|