HP-UX Programmer's Guide for Java 2

Table Of Contents
HP aC++ Libraries with Other Languages, refer to the appropriate section within the
Programmers's Guide.
All HP aC++ programs require libCsup.sl (libCsup.so on Integrity). The other
two libraries are required by a subset of C++ programs. In this example, we could omit
libstd.sl on PA since we are not using the Standard Template Library functionality.
However it is usually best to link your native method shared library against all three
of these libraries.
On Integrity, create the shared library using:
$ aCC -b -o libaCCImpl.so aCCImpl.o \
-lstd_v2 -lCsup -lunwind -lm
On Integrity, the -AA lib -lstd_v2 is necessary, otherwise, running the program
will result in UnsatisfiedLinkErrors.
Linking a shared library against these other shared libraries will cause the linker to
record the fact that whenever libaCCImpl.sl (or libaCCImpl.so) is loaded into
memory the dependent libraries libCsup.sl, libstream.sl and libstd.sl,
(libCsup.so, libstream.so and libstd.so on Integrity) also must be loaded.
This is necessary since libCsup.sl (or libCsup.so) contains all the necessary
runtime support routines required by every C++ method.
To execute the Java™ program, you must set the SHLIB_PATH environment variable
to contain the location of the directory that includes libaCCImpl.sl (libaCCImpl.so
on Integrity). SHLIB_PATH is the HP-UX name for LD_LIBRARY_PATH and can contain
a list of directories each separated by colons. SHLIB_PATH should only be used for
PA-RISC 32 applications. Otherwise, LD_LIBRARY_PATH should be used.
$ export SHLIB_PATH=.:$SHLIB_PATH$ <java_dir>/java
TestJava2CallingNative aCCImpl
Library aCCImpl successfully loaded
initialize C++ runtime
Calling sayHelloWorld
ANSI C++ says HelloWorld via iostreams
All done
Native (non-Java) calling Java™ methods
JNI also allows non-Java™ programs to make calls into Java™ byte code. This capability
is provided via the C and C++ header file jni.h. Using this capability C and C++
programs can make calls into Java™.
In Java™ 2, the Java™ Virtual Machine (JVM) is shipped as a shared library. To utilize
the JVM in a native application you must link the application against libjvm.sl
(libjvm.so on Integrity). The JNI supports an Invocation API that allows you to
create and initialize a new JVM. Using this newly created JVM you can invoke various
Java™ methods, create new Java™ objects or access Java™ objects created by the JVM.
52 Using Java™ 2 JNI on HP-UX