Java Native Interface (JNI), part of the Java platform, is an interface that enables communication between Java applications running on a Java Virtual Machine (JVM) and native applications or libraries written in other programming languages (e.g. C, C++).
JNI provides improved performance in some low-level tasks (e.g. Math.sqrt (double a)) and enables communication with hardware devices (Bluetooth, Wi-Fi, etc.). However, there is a disadvantage in the loss of platform independence, because such program uses the library compiled for specific operating system.
One of the options how to distribute your Java application is to make the JAR file (Java archive). Every Java archive contains a manifest file which describes the rest of the files in the archive. These are typically class files, security information, etc.
The creation of Java archive is possible in the project tree in NetBeans IDE. Once you already created your project using NetBeans IDE, right-click the project name and select “Clean and Build”. Now the Java archive file will be created in the “dist” folder in the project directory. The dist folder might also contain a lib folder, which you would also need to include.
Java archives are portable across platforms which have the Java Runtime Environment (JRE) installed in it. JRE includes the language compiler, the library files and the Java Virtual Machine (JVM) in which java application executes. If you created a GUI application, double-click the file icon to launch the program, and JVM handles the creation of application’s window in an operating system environment. However, if you created a console application, it is necessary to open a command line in order to run a command similar to: java -jar archive.jar.