Current Version: 3.11
See Release Notes

Why JNIWrapper

  • Does the job for you: no need to create a native library to make system calls or spend time learning the low-level ins and outs of the system architecture.
  • It saves your time and money.
  • Great documentation with code samples.
  • Great support. Responsive support team will answer your request within 24 hours. To get help you can choose different support channels: email, support site and forum or premium support service. You are welcome to contact us with initial questions at evaluation support address. Learn more.

How to Save Money and Time with JNIWrapper

Suppose that there is an existing application, written in C, that monitors conditions on a factory floor, and you need to incorporate this functionality into a Java application.

The traditional approach using JNI involves Java and C developers as well as management coordination to keep the functionality synchronized.

By contrast, using JNIWrapper is trivial and saves time and efforts dramatically.

traditional way
using JNIWrapper



JNIWrapper can handle large amounts of data involved in interactions between the Java and native code, with no tuning on your side.

Extensible Architecture

You can implement new data types or customize existing ones, taking full control over the parameter behavior. See Structures and Unions in our Programmers Guide. See also the related samples: Union Sample, Union Structure.

Custom Search Mechanism

In addition to a default mechanism for finding and loading a native library, JNIWrapper provides a way to customize the library loading. Also, it's possible to load native libraries from JAR files.

Automatic Memory Management

All resources allocated by JNIWrapper are released automatically when no longer needed. You can treat JNIWrapper variables as ordinary Java objects that can be reclaimed by the Java garbage collector. Besides, JNIWrapper objects are safe with regard to finalizers: all resources are guaranteed available during finalization.

Thread-safe Concurrent Function Invocation

You can perform all native function calls simultaneously from different Java threads without the need for synchronization, just as if invoking simple Java methods. See Working with Multithreading in our Programmers Guide.

Native Function Invocation

JNIWrapper supports both stdcall and cdecl calling conventions and multiple C/C++ data types including structures, unions and pointers. Callbacks are fully supported with any parameter and return types and both calling conventions. See Calling Native Functions in our Programmers Guide. See JNIWrapper samples

Catching Native Errors

When you call a native function, JNIWrapper makes all native errors ready for debugging on the Java side, putting program execution completely in your hands. See Calling Conventions in our Programmers Guide.

Code Generation Wizard

Using the Code Generator Wizard bundled with JNIWrapper, you can generate Java wrappers for a required set of C types, including structures, unions and callbacks.


When you purchase JNIWrapper you receive WinPack, a free add-on enabling access to the Windows native API and libraries from Java code. WinPack provides several integration features to make your Java application look and behave like a Win32 citizen. WinPack requires no extensive knowledge of the Win32 API, nor any writing of cumbersome wrapper classes for JNI.

Dialog Boxes

With WinPack, you can use familiar Windows dialog boxes and modify window properties however you choose. See the following samples: Choose Color Dialog, Select Folder Dialog, Open/Save File Dialog.

Access to the Registry

With just a snippet of code you can make your Java application read, write or delete the Windows registry keys and values. Most of the major data types are supported. See the following samples: Registry Key Set Values, Registry Key Enum Values.

Services, Processes and Event Logs

Using the Services API, you can start, stop or delete a service, display all running services in a list, and change the service options. WinPack lets you monitor and manage system processes, modules, memory and event logs. See related samples: Access Services Remote Computer, Enum Processes Sample, Event Log Sample.

Events and File Management

WinPack lets you listen to the file system events. You can also get file attributes, check disk space and identify the disk media type. See the File System Sample.

WinPack Demo

Run the demo winpackdemo.jnlp

Runs on Microsoft Windows XP or later.

The JNIWrapper WinPack Demo is a Windows program and cannot run under another operating system.

To see the Demo, you can do one of the following:

  • Download it and run on Microsoft Windows computer
  • Open this page directly from Windows.

Examples of Apps Our Customers Build

  • Rich Java client applications. JNIWrapper provides easy access to OS features and resources, such as native windows and dialogs, system registry, hooks, shell resources, etc. The library allows using any platform functions without writing additional (JNI) wrappers.
  • Java libraries for integration with native SDKs. JNIWrapper’s Code Generator creates wrappers for native C types from an SDK. This makes Java development routine more efficient.
  • Integration with native legacy applications. JNIWrapper allows Java applications to interoperate with native applications and libraries written in different programming languages, such as C/C++, Pascal, ASM, etc.
  • Cross-platform Java integration solutions which can be built on top of existing cross-platform native libraries. This is made possible due to JNIWrapper support of various operating systems and platforms.
  • Plug-ins and add-ons written in Java for various integration scenarios which is possible with great JNIWrapper’s performance and its native memory management.

Getting Help

Support Resources

Product Forums

You will need a Google ID to be able to post on forums, and you can do that

Note that your message will be automatically posted on the web.

Evaluation Support

Standard Support

Premium Support

Technical FAQ

A: JNIWrapper supports different operating systems and architectures:
  • Windows XP, Windows 2000, Windows Vista, Windows 7, Windows 8 for x86 and x86_64 architectures;
  • Linux for x86, x86_64, PPC and PPC64 architectures;
  • Mac OS X with PCC, x86 and x86_64 architectures, SunOS for x86, x86_64, sparc and sparc64 architectures;
  • AIX PCC.

A: Please make sure that you set the correct function calling convention. The defaults are: stdcall for Windows as it is used by most of the Windows API, and cdecl for Linux - it is used by almost all libraries.

A: JNIWrapper is not designed for integration with .NET libraries which were created using C# or any other .NET programming language. In fact such libraries have architecture which completely differs from regular Win DLL libraries. Nevertheless it is possible to integrate with a .NET library if it provides COM Interop level. In this case you can use our ComfyJ product for that.

A: Technically it’s possible to invoke the functions from such library using JNIWrapper, but it won’t give you the ability to work with C++ objects and their methods. There are two possible workarounds. First is to create the plain C wrapper functions for the required C++ functions from that library. Second one is to enable COM interop in that C++ library and then use our ComfyJ product for integration with it.

A: The simplest way is to package all required library files (including JNIWrapper libraries) to root folder of an application JAR file.

A: The simplest way is to package that file to the \META-INF\ subdirectory of an application JAR file.

A: Yes, you can use Codegen for JNIWrapper utility application to generate the corresponding Java wrapper for it.

A: The fully-qualified name for a class is the package name followed by the class name, separated by a period (.). For example: com.mycompany.myproduct.MyClass

A: This can be any class of your application. The only requirement is that it should be included into your Java application class path.

Licensing and Pricing*

By using our products or any related documentation, you accept the Terms and Conditions of the Product Licence Agreement.

What You Get

  • Perpetual Development Licence
  • Free runtime distribution
  • Free minor version product updates
  • Free major version upgrade within 60 days of purchase date
  • Free Standard Support pack
  • No obligatory renewal fee
  • 15% discount on other TeamDev products

  • MS Windows
  • Mac OS X
    Mac OS X
  • Linux
  • Linux PPC
  • cross_desktop
    Win, Mac, Linux
  • Solaris
  • Solaris ultrasparc

Per Developer






Source Code


Support Renewal


Special OfferJava Integration Pack



* Your country's tax fees may apply to licence purchases. They will be charged in addition to the prices specified.
* Prices are subject to change without prior notice from TeamDev. Request an official quote for the purpose of purchase processing.

Get Licences via Resellers

Become a Reseller

Licensing FAQ

A: Our licensing is based on versions of JNIWrapper. Having purchased the licence for our product you get the right to use the current major version of the product.

A: All minor version updates are free of charge. For example, if you have a licence to library version 3.x, you can receive all updates until the version 4.x is released. You can check the version of your licence in the jniwrap.lic file.

A: Upon purchase of licence you will receive a licence archive. The archive will contain two JARs: development.jar and runtime.jar. Development.jar is the licence that should be used in development process. Runtime.jar should be used to distribute your application to end users. Inside the development.jar you can find the jniwrap.lic file that contains information about your licence.

A: Major version upgrades should be purchased. You can upgrade your licence to a major version with a 25% upgrade discount. The licence upgrade includes renewal of the Standard Support pack.

A: You can distribute unlimited number of copies of your product with our library enclosed. Please use Runtime Licence for distribution of your product.

A: Runtime Licence is provided free of charge.

A: Yes, you can purchase JNIWrapper Source Code Licence; it is provided on a per developer basis. Please contact our sales team if you are interested in this option.

A: You may want to purchase a Project licence, which is more cost-effective in case there are 3 and more developers on the team.

A: Project licence is bound to a single project you do, but it allows any number of developers in your company to work with our library.

A: When we say “project” we have in mind one product of your company including your future product versions or potential derivative works based on your product.

A: The best solution would be to purchase the Company–wide, which covers any number developers and projects in one company.

No. The Project licence is tied to one project only.

A: Yes, our licences are tied to a Company, not to a specific developer. You can transfer licences to other developers provided that the number of developers, working on your team equals the number of licences purchased.

Our Contribution to Coding Community

Academic Purposes

Free Licences for Academic Purposes

We provide licences for institutions, educators, students and researchers for the duration of the project or a study.

Apply You will need to submit a reference letter from your supervisor (for students) or proof of participation in research project.
Open Source™

Free Licences for Open-source Projects

We will provide you with a free licence that will be tied to a class name in your project.



We will use this name when writing to you.
We will send you the link. We will not give your email to anybody else.
  • MS Windows
  • Mac OS X
    Mac OS X
  • Linux
  • Linux PPC
  • cross_desktop
    Win, Mac, Linux
  • Solaris
  • Solaris ultrasparc
A couple of meaningful words on your project may help our support suggest you how to use the product better. We do read it:)