JNIWrapper library allows to interface native code while retaining full control of the application on the Java side. With JNIWrapper, there is no need for you to create native code libraries to call a function of the operating system API or a function from any dynamic library. You write your code in Java language only, and JNIWrapper does the rest. JNIWrapper advantages are the following. Minimum behind-the-scene operation, so that developers can always see what is happening when working with the native-side data. High performance lets JNIWrapper handle any large amount of data involved in interactions between the Java and native code, requiring no performance tuning on developer's part. Automatic resource management - all resources allocated by JNIWrapper components are released automatically when no longer required. Comprehensive support for native function invocation - JNIWrapper supports both stdcall and cdecl calling conventions and all complex C types including structures, unions and callbacks. Extensible architecture allows implementing new data types or customizing existing ones. Support for thread-safe concurrent function invocation allows to perform all native function calls simultaneously from different Java threads without the need to synchronize them. Crashes in native functions are converted to Java exceptions. JNIWrapper provides a customizable native library search mechanism. The library also allows to work with Carbon and Cocoa API.