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.
Features
High-Performance
JNIWrapper can handle large amounts of data involved in interactions between the Java and native code, with no tuning on your side.
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.
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
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.
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.
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.
WinPack
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.
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.
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.
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.
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.
If you have questions, not covered by the documentation, please email us at
We actually purchased a license and we are very happy with the product: great job! This product saves us time since I don’t have to write the JNI layer myself.— Sébastien Gemme,Canadian Space Agency
…I have been very impressed with the amount of functionality provided as well as stability and robustness of the product…— Stephen Renner,IP Australia
I am very satisfied with the product as I find the abstraction to the JNI functionality of Java to be quite useful.— Adam Acott,Novex Software Development Inc.
…my brief experience with your product, considering my previous experience with JNI, has been highly satisfactory. I have developed in a weekend what took me two weeks at least using other tools.— Hector Zendejas,Cardware.biz
Perpetual license
Perpetual license means you can always use the product version that you purchased, or the one you updated to during your valid support subscription.
Perpetual license
Perpetual license means you can always use the product version that you purchased, or the one you updated to during your valid support subscription.
Free distribution within your application
1 project
Bundled to a Java package of the project.
Updates & Support
1 year of product updates
1 year of technical support
75 hours of support for 1 year
Request Project license
Sending…
Sorry, the sending was interrupted
Please try again. If the issue persists, contact us atinfo@teamdev.com.
Perpetual license
Perpetual license means you can always use the product version that you purchased, or the one you updated to during your valid support subscription.
Free distribution within your application
Unlimited projects
Updates & Support
1 year of product updates
1 year of technical support
100 hours of support for 1 year
Request Company-wide license
Sending…
Sorry, the sending was interrupted
Please try again. If the issue persists, contact us atinfo@teamdev.com.
This is a legal agreement (“Agreement”) between you (either an
individual or an entity), and TeamDev Management OÜ acting under
the trademark TeamDev (“TeamDev”).
IMPORTANT [PLEASE READ CAREFULLY]: BY INSTALLING,
USING OR COPYING THE SOFTWARE OR ANY RELATED DOCUMENTATION
(“SOFTWARE”) YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF
THIS AGREEMENT. IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU ARE NOT
AUTHORIZED TO INSTALL OR USE THE SOFTWARE.
Definitions
a) “Software” means the software product supplied by TeamDev in
binary form and corresponding documentation, associated media, printed
materials, and online or electronic documentation.
b) “Runtime” means the files that are included into the Software and
are required for distribution of the programs that you create using the
Software. Runtime files are identified in the documentation accompanying the
Software or on-line documentation (“Documentation”). You should
refer to the Documentation, including any “readme” or
“runtime” files provided with the Software, for additional
information regarding redistributable files.
c) “Evaluation License Key” means a file that allows using the
Software for evaluation purposes for a limited period of time which shall
commence on the day of Evaluation License acquisition, and terminate pursuant to
the provisions defined by the section 3. “Evaluation License Grant”
of this Agreement.
d) “Development License Key” means a file that allows you to
integrate the Software into programs that you create.
e) “Runtime License Key” means a file that is required for
distribution of your works that enclose the Software.
f) “Effective Date of the Agreement” means the date when you receive
Evaluation License Key or Development License Key, whatever comes first.
g) “Minor Version(s)” means version of the Software, identified by a
change in the second and/or any of the following levels of the versioning number
sequence, ex.: 1.0.5, 1.2.1, 1.2.2, etc.
h) “Open-Source Component(s)” for the purposes of this Agreement
shall mean any software, whose source code is publicly available for use,
modification and distribution.
Ownership and License
The Software is owned by TeamDev, copyrighted and protected by copyright laws
and international treaty provisions. The Software is licensed, not sold. By
installing or using the Software you will not acquire any rights to the Software
except as expressly set forth in this Agreement. All rights not expressly
granted herein are reserved by TeamDev.
The rights to the Open-Source Components used by the Software are property of
their respective copyright owners.
Evaluation License Grant
Subject to the terms and conditions of this Agreement, TeamDev hereby grants you
a non-exclusive, non-transferable right to use one copy of the specified version
of the Software and the Documentation for the sole purpose of evaluation during
the period of 30 calendar days (Evaluation Period), and create a copy
of the Software for backup purposes.
Development and Runtime License Grant
4.1. Subject to the payment of the applicable license fees and
to the terms and conditions of this Agreement, TeamDev hereby grants
to you a non-exclusive, non-transferable license to
(i) use the version of the Software and Documentation recorded in the
Development and Runtime License Keys, including the Minor Version updates (ii)
to reproduce and distribute the Runtime files in executable form and
with Runtime License Key as part of the programs that you create using
the Software without additional distribution fees (“Development
License”).
Development License is provided to you pursuant to the use
conditions of one or several of the license types described
in sections 4.2.–4.5. below. The type of the Development License
governing your use of the Software is recorded in the Development
License Key, provided to you upon the license purchase.
4.2. Per Developer License may be used by the developers,
whether employees or independent contractors performing services for you
under your control. The number of your developers using the Software under
a Per Developer License may not exceed the number of Per Developer
Licenses acquired from TeamDev. You may not make more copies of the Per
Developer Commercial License Keys or distribute such keys to more
software developers, than the number of the Per Developer Licenses granted
per this section 4. of this Agreement. Your name or the
entity’s name and the number of Development Licenses acquired are
recorded in the Development and Runtime License Keys.
4.3. Project License may be used in your one project
by any number of your developers, whether employees
or independent contractors performing services for you under your control.
For purposes of this Agreement “Project” shall mean one
software product created by you, any future versions or derivative
works based on that software product. You may not use the Project License
for more than one Project. You acknowledge that a Project License
is bound to a specific Project at the time of issue,
and thereafter may not be used for or in connection with any
other Project.
4.4. Company–wide License may be used in any number
of your projects by any number of your developers, whether
employees or independent contractors performing services for you under your
control.
4.5. Personal License allows one person to exercise the Development
License rights. It may not be transferred to any third party
after the purchase. The name of the person, to whom the license
is granted, is recorded in the Development and Runtime License
Keys. Personal License may not be available for specific Software. Personal
License availability is listed in the “Licensing and
Pricing” section of the corresponding Software product page
on TeamDev web site, located at the following web
address: teamdev.com.
License Restrictions
5.1. General License Restrictions. You may NOT: a) modify, adapt, alter,
translate, decompile, reverse engineer, or disassemble the Software; except
as may be required to replace a third party Open-Source Component that is used
in the Software; b) remove any proprietary notices or labels
on the Software; c) make more copies of the Software than the
number of the acquired licenses (excluding a copy for backup purposes);
d) rent, lease, or otherwise transfer rights to the Software.
5.2. Evaluation License Restrictions. In addition to the general
restrictions denoted in the section 5.1., as the holder
of the Evaluation License you may NOT: a) use the Software for commercial
purposes; b) use the Software after expiration of the evaluation period.
5.3. Development and Runtime License Restrictions. In addition to the
general restrictions denoted in the section 5.1., as the holder
of the Development and Runtime License you may NOT: a) use Development
License Key for redistributing Runtime files as part of your
applications; b) use Runtime License Key for development purposes.
Marketing
You agree to be identified as a customer of TeamDev and you agree that TeamDev
may refer to you by name, trade name and trademark, if applicable, and may
briefly describe your business in TeamDev’s marketing materials and web sites.
You hereby grant TeamDev a license to use your name and any of your trade names
and trademarks solely in connection with the rights granted to TeamDev pursuant
to this marketing section.
You and TeamDev may use the information about the business relationship
pursuant to this Agreement for independent or joint
marketing efforts. Examples of allowable marketing uses include
creation and use of case studies, press releases, printed and online
marketing materials, presentations, and business references.
Support Services
7.1. TeamDev Standard Technical Support (“Standard Support”)
includes:
i. answering questions related to the functionality of the Software;
ii. ability to use designated support email address;
iii. 1 business day response time.
7.2. TeamDev agrees to provide you with a free Standard Support during
the valid Evaluation period, as defined
by the section 3 “Evaluation License Grant.”
7.3. TeamDev agrees to provide you with free Standard Support
in an amount of hours defined per the section 7.4.
of this Agreement, valid for one year since the date of the license
purchase.
7.4. The number of Standard Support hours is defined by the type
of Development License, described in section 4. of this
Agreement, on per-product basis. This information is available
on Software product pages on TeamDev official website
(teamdev.com). The number of hours designated
for each product is a subject to change without prior notice
from TeamDev. In case of such change any number of hours already
granted to you pursuant to a license purchase will remain valid
for you.
7.5. Extension or renewal of Standard Support is subject
to an additional fee to TeamDev.
7.6. In the course of Standard Support TeamDev may provide you with
supplemental software code or related materials, that are made available
in form of Software updates (including hotfixes). Such supplemental
software code or related materials are to be considered part
of the Software and are subject to the terms and conditions
of this Agreement.
7.7. With respect to any technical information that you provide to TeamDev
in order to enable TeamDev complete your requests for Standard
Support, TeamDev may use such information for its business purposes without
restriction, including for product support and development. TeamDev will
not use such technical information in a form that personally
identifies you.
Payment Terms
All license fees payable under this Agreement are non-refundable, except
as specified in section 9.3. and are exclusive of any applicable
taxes. In addition to other amounts payable under this Agreement, you
shall pay any and all federal, state, municipal, or other taxes, duties,
fees, or withholding currently or subsequently imposed on your
use of the Software or the payment of license fees
to TeamDev. If TeamDev is required to pay any such tax,
duty, fee, or charge, or to withhold any amount from monies due
to TeamDev from you pursuant to this Agreement, you shall promptly
reimburse TeamDev any such amounts.
Patent and Copyright Indemnity
9.1. TeamDev will defend and indemnify you for all costs (including reasonable
attorneys fees) arising from a claim that Software furnished and used within the
scope of this Agreement infringes a U.S. or Canadian copyright or patent
provided that: (i) you will notify TeamDev in writing within 30
calendar days of the claim; (ii) TeamDev has sole control of the defence
and all related settlement negotiations, and (iii) you will provide TeamDev with
the assistance, information, and authority necessary to perform the above.
9.2. TeamDev will have no liability for any claim of infringement based on: (i)
code contained within the Software which was not created by TeamDev; (ii) use of
a superseded or altered release of the Software, except for such alteration(s)
or modification(s) which have been made by TeamDev or under TeamDev’s
direction, if such infringement would have been avoided by the use of a current,
unaltered release of the Software that TeamDev provides to you, or (iii) the
combination, operation, or use of Software furnished under this Agreement with
programs or data not furnished by TeamDev, if such infringement would have been
avoided by the use of the Software without such programs or data.
9.3. In the event the Software is held or believed
by TeamDev to infringe any third-party rights, or your use
of the Software is enjoined, TeamDev will have the option,
at its expense, to: (i) modify the Software to cause
it to become non-infringing; (ii) obtain for you
a license to continue using the Software; (iii) substitute
the Software with other Software reasonably suitable to you, or (
iv) if none of the foregoing remedies are commercially
feasible, terminate the license for the infringing Software and refund
a) the license fees paid for the Software, prorated over a one-year term
from the license purchase date if any infringement occurs during the first
year of Standard Support; b) renewal fees paid for any subsequent Standard
Support year, prorated over a 1-year term from payment due date for such
subsequent year.
9.4. Licensee Indemnity. You are responsible and will indemnify and hold
TeamDev harmless for any and all losses, liability, or damages arising
out of, or incurred in connection with, your use
or reproduction of the Software pursuant to this Agreement.
Disclaimer of Warranty
THE SOFTWARE AND ANY RELATED DOCUMENTATION ARE PROVIDED
ON A STRICTLY “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OR
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT.
THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE REMAINS
WITH YOU.
Open-Source Components
11.1. TeamDev notifies that Software may contain third party Open-Source
Components. More information is available on a corresponding product page on
TeamDev official website (teamdev.com).
11.2. TeamDev and the Software are in full compliance with any Open-Source
Components’ licenses to grant the license rights granted herein.
11.3. The terms and conditions governing the use of such Open-Source Components
are in the Open-Source Software Licenses of the copyright owners and not this
Agreement.
11.4. In case you modify the Software as allowed pursuant to the
clause 5.1 a) TeamDev disclaims any warranty related to the
Open-Source components, including warranties contained in 10.2. You shall
be liable for any claims of third-party rights infringement caused
by modification of the Software made by you in accordance
with clause 5.1 a).
Limitation of Liability
IN NO EVENT SHALL TEAMDEV OR ITS SUPPLIERS BE LIABLE FOR
ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR
ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THIS
TEAMDEV SOFTWARE, EVEN IF TEAMDEV HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
Trademarks
This Agreement does not grant any rights to use the trademarks or trade names:
“TeamDev”, “JxBrowser”, “Molybden”, “JExplorer”,
“JNIWrapper”, “ComfyJ”,
“JExcel”,“JxFileWatcher”, “JxCapture”,
“DotNetBrowser”, “JxMaps”, or any other trademarks,
service marks, logos or trade names belonging to TeamDev except as defined in
the Section 6. “Marketing”. You agree not to use any marks belonging
to TeamDev in or as part of the name of products based on the Software.
Termination
You may terminate this Agreement at any time by destroying all copies of the
Software. This Agreement will terminate immediately without notice from TeamDev
if it is discovered that you fail to comply with any provision of this
Agreement. Upon such termination, you must destroy all copies of the Software.
Section 10. “Disclaimer of Warranty” and section 12. “Limitation
of Liability” shall remain effective after the termination of this
Agreement.
Frequently asked questions
Technical questions
What platforms does JNIWrapper support?
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;
macOS with PCC, x86 and x86_64 architectures, SunOS for x86, x86_64, sparc and sparc64 architectures;
AIX PCC.
I am calling a function with correct number of parameters, but keep getting an exception about incorrect parameter types.
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.
I would like to invoke a function from a DLL that I generated with C# using JNIWrapper. Is it possible?
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.
Is it possible to integrate with a C++ library using JNIWrapper?
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.
How I can redistribute native JNIWrapper library (jniwrap.dll, jniwrap64.dll, etc.) with my application?
The simplest way is to package all required library files (including JNIWrapper libraries) to root folder of an application JAR file.
Where should I put my JNIWrapper license file (jniwrap.lic)?
The simplest way is to package that file to the \META-INF\ subdirectory of an application JAR file.
Is there a way to create Java wrapper for a particular native type having only its C definition?
Yes, you can use Codegen for JNIWrapper utility application to generate the corresponding Java wrapper for it.
Our licensing is based on versions of JNIWrapper. Having purchased the license for our product you get the right to use the current major version of the product.
Can I receive a free upgrade?
Major and minor version upgrades issued during your active Standard Support subscription period are free of charge. Upon expiration of the Standard Support subscription you can renew it with a 25% discount from the actual license price.
There are 6 people on our team, and 2 of them need to use JNIWrapper. How many licenses do we need to purchase?
You only need to purchase 2 licenses. We license our library by the number of people who write code using our library.
If we take a developer, working with JNIWrapper, off the project, can we reassign the license to another developer?
This is possible with the Per Developer License.
How many copies of my product can I distribute with JNIWrapper included?
You can distribute unlimited number of copies of your product with our library enclosed.
We have 5 people, who work with JNIWrapper on one product.
You may want to purchase a Project License, which is cost-effective in case there are 3 and more developers on the team. The Project License is bound to a single project you do, but it allows any number of developers in your company to work with our library.
How is a Project License bound to my project?
Project License is bound to your project via a fully-qualified class name. A 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
Which class can be used for binding the license?
This can be any class of your application. The only requirement is that it should be included into your Java application class path.
What’s the definition of “project” in terms of the Project License?
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.
Will we be able to use the Project License in another project we do?
The Project License is tied to one project only.
We’d like a license for multiple projects for a team of developers, what would you offer?
The best solution would be to purchase the Company–wide License, which covers any number developers and projects in one company.
How do I find the license file?
Upon the license purchase you will receive an archive with two types of license files: development and runtime. Development license is intended to be used in the development process. Runtime license is to be used for distribution of your software with JNIWrapper enclosed.
Free 30‑day trial
We will email you your trial key and a quick start guide.
Sending…
Sorry, the sending was interrupted
Please try again. If the issue persists, contact us atinfo@teamdev.com.