To create the most robust, versatile, and relaible components, you should
implement components using only Java code and the APIs and techniques
described in this document.
However, it is sometimes necessary for a
component to call non-Java libraries (hereafter called native libraries)
that can, for example, contain the means to interact with a third-party
application or can contain the implementation of complex algorithms.
This concept is different from invoking a native program
(an executable). A native program runs as a separate process and is typically
invoked with command-line arguments using the Java Runtime getRuntime().exec()
methods. A native library is invoked using the Java Native Interface
(JNI) technology. A native library is loaded into the JVM
process and called directly.