HP-UX Programmer's Guide for Java 2
Table Of Contents
- Table of Contents
- 1 Introduction
- 2 HotSpot Technology Tools and Commands
- 3 Configuration for Java™ Support
- 4 Performance and Tuning
- 5 Measuring System Performance
- 6 Using Threads
- 7 Using Signals
- 8 Using Java™ 2 JNI on HP-UX
- 9 Expanding Memory
- Determine your requirements
- Memory layout under HP-UX 11.0 (PA-RISC only)
- Additional memory available under HP-UX 11i (PA-RISC only)
- Allocating physical memory and swap in the Java™ heap
- Useful key command-line options for allocating memory
- Application-dependent considerations using large heap size HP-UX 11i PA-RISC
- Expanding heap size in native applications on PA-RISC HP-UX 11.11 and later releases
- Expanding heap size in native applications on Integrity HP-UX 11.23 and later releases
- Expanding heap size in HP-UX PA-RISC
- Expanding heap size in HP-UX Integrity
- 10 Diagnosing Memory Leaks
- A JDK/JRE 6.0.n and 7.0.n Usage Notes
- Using Java 2 JNI on HP-UX
- Garbage collection
- Asian TrueType fonts and Asian locales
- Date/Time methods defaults
- Profiling
- Compatibility with previous releases
- Java Cryptography Extension (JCE) policy files
- Configuring the Java Runtime Plug-In
- CLASSPATH environment variable
- Java Web Start technology usage
- Upgrading from a previous Java Web Start version
- IPv6 support
- Allocation Site Statistics and Zero Preparation -Xverbosegc
- JDK 6.0.04 flags
- GC log-rotation support
- NUMA collector enhancements
- ThreadDumpPath support
- Garbage-First garbage collector (-XX:+UseG1GC)
- jmap, jinfo, and jstack tools included in JDK 6.0.03
- Additional Java Web Start documentation
- B JDK/JRE 5.0.n Usage Notes
- Using Java 2 JNI on HP-UX
- Garbage collectors: Parallel and Concurrent Mark Sweep
- Allocating physical memory and swap in the Java heap
- Asian TrueType fonts and Asian locales
- Date/Time methods defaults
- Profiling
- Closing a socket (PA-RISC only)
- Compatibility with previous releases
- Java Cryptography Extension (JCE) policy files
- Allocation Site Statistics and Zero Preparation -Xverbosegc
- IPv6 support on Java 5.0
- GC log-rotation support in 5.0
- ThreadDumpPath support in 5.0
- Dynamically loaded libraries in 5.0
- Performance improvement for String.intern()
- Configuring the Java Runtime Plug-In
- CLASSPATH environment variable
- Java Web Start technology usage
- C SDK/RTE 1.4.2.n Usage Notes
- Removing support for unwanted architectures in the JRE
- Support for dynamic thread local storage (TLS)
- Signal Chaining functionality
- Using Java 2 JNI on HP-UX
- HotSpot JVM options
- Garbage collectors: Parallel and Concurrent mark sweep
- Allocating physical memory and swap in the Java heap
- Asian TrueType fonts and Asian locales
- Date/Time methods defaults
- Profiling
- Closing a socket when accept or read is pending (PA-RISC) - new patch information!
- Compatibility with previous releases
- Runtime Plug-In usage and configuration
- GC log-rotation support
- ThreadDumpPath support
- D Additional Resources
- Index

The Invocation API is provided by the C/C++ header file jni.h. It actually provides
two different interfaces. It provides a standard C interface and an object based C++
interface.
Here is the sample Java™ class that we will call from C and C++ programs:
//
// File TestNonJavaCallingJava2.java
//
public class TestNonJavaCallingJava2 {
public static void printInt(int arg)
{
System.out.println("TestNonJavaCallingJava2.\
printInt received: " + arg);
}
}
Compile the above Java™ file into byte code:
$ <java_dir>/bin/javac -verbose TestNonJavaCallingJava2.java
Output:
TestNonCallingJava2.class
HP provides the following two examples on how to call Java™ from C and C++ using
the standard JNI calling mechanism.
Sample code for SDK 1.3.1
Sample native calling Java™ implementation in C
Here is the sample C program. This program will use the JVM Invocation Interface to
create a new JVM, find a class named TestNonJavaCallingJava2, and find a Java™
method named printInt, and invoke the method with an argument of 100.
NOTE: This program works as is for SDK 1.4.2. However, if you wish to take advantage
of the new JNI features in 1.4.2, in the example below you should change the line
vm_args.version = JNI_VERSION_1_2; to vm_args.version =
JNI_VERSION_1_4;
/*
* File: c_main.c
*
* Example C Source File as the Main
* create a new Java™ Virtual Machine
* and locate the class TestNonJavaCallingJava2
* and invoke the static method printInt
*/
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
Native (non-Java) calling Java™ methods 53