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
program using the Java™ method:System.loadLibrary(). The implementation of
this function with the JVM on HP-UX relies upon the HP-UX runtime routine shl_load.
The alignment requirements for Java™ data structures allocated in the JVM are not the
same as those found in the standard PA-RISC 2.0 calling conventions. The JVM requires
that class instance data members 64-bits in size (longs and doubles) be allocated at the
next available 4-byte boundary. The standard PA-RISC 2.0 calling conventions normally
require that such objects be aligned on the next 8-byte boundary. If a C or C++ native
method were to access such a Java™ class instance data member that was not properly
aligned on an 8-byte boundary, a SIGBUS signal would be delivered to the program
and this would terminate the JVM. To prevent this situation, use the +u4 option to the
C and aCC compilers when compiling native that will directly access Java™ data
members. This command-line option instructs the compiler to use a special sequence
when dereferencing pointers to the 64-bit types. The special sequence correctly handles
the cases in which a 64-bit type is misaligned.
When building native method implementations to be used with the kernel-threaded
JVM, sources must be compiled with the following additional command-line option:
-mt
Additionally developers who produce hybrid applications where the application entry
point is a language other than Java, for example a C language main(), must link with
the p-thread library using -lpthread on the link line in order to use the
kernel-threaded JVM. Failing to link with libpthread.sl (libpthread.so on
Integrity) will result in an runtime failure when the JVM is loaded. The libpthread
library was not available in releases prior to HP-UX 11.0.
Implementers of native methods called by Java™ main programs should take care to
insure that null pointers are not dereferenced. The JVM is linked using the -z option,
which is discussed in the man page for the C compiler. If a native method does deference
a null pointer a SIGSEGV will be delivered to the JVM and this will cause the JVM to
terminate.
HP provides the following two Java™ examples on how to call C and C++ from Java™
using the standard JNI calling mechanism. Code examples C++ for Java™ 1.3.1 and
1.4.2 follow.
Sample code for SDK 1.3.1
Sample Java™ calling native method implementation in C
Here is the sample Java™ program that calls a native method, which has a C
implementation:
//
// File TestJava2CallingNative.java
//
class TestJava2CallingNative {
native static void sayHelloWorld();
Java™ calling a native (non-Java) method 47