HP-UX Java™ SDK, RTE, and Plug-In 1.4.2.05 Release Notes


» Back to SDK, RTE, and Plug-In 1.4.2.x Release Notes

HP-UX SDK, for the Java™ 2 Platform SDK Version 1.4.2.05
with HotSpot Server 1.4.2.05 JVM HP-UX PA-RISC and Itanium-based solutions

These Release Notes are provided in the software and as a standalone file on this website. The web version has the most up-to-date information regarding defect fixes.

The HP-UX Software Development Kit for the Java 2 Platform Version 1.4.2.05 release provides
the tools for developing and deploying Java applications on HP-UX 11.0 and 11.11 (11i v1)
HP 9000 PA-RISC, and HP-UX 11.22 (11i v1.6) and 11.23 (11i v2) HP Integrity systems.
 

Contents

» Features
 » HotSpot 1.4.2.05 JVM

» Installation
 » Patches
 » System requirements PA-RISC
 » System requirements Itanium
 » Installation instructions
 » Installing into an alternate location
 » File structure

» Usage documentation
 » Removing support for unwanted architectures in the RTE
 » Support for dynamic thread local storage (TLS)
 » Excluding methods from being compiled (PA-RISC and Itanium)
 » Support for C++ applications built with -AA and -AP options (PA-RISC)
 » Supported Tools and Options
 » IPv6 support (Internet Protocol version 6)
 » Additional HotSpot option information
 » HP specific Options and Features
 » New garbage collectors: Parallel, Concurrent mark, and Sweep
 » Allocating physical memory and swap in the Java heap
 » Expanding heap size in native applications HP-UX 11.0 & 11.11 (11i v1) PA-RISC
 » Expanding heap size in native applications HP-UX 11.23 (11i v2) Itanium
 » Expanding heap size HP-UX 11.11 (11i v1) PA-RISC
 » Expanding heap size HP-UX 11.23 (11i v2) Itanium
 » Application dependent considerations when using large heap size
 » Using WDB to examine backtraces in Java thread stacks
 » Asian TrueType fonts and Asian locales
 » Date/Time methods - New defaults
 » Profiling capability added
 » Signal chaining functionality (PA and Itanium)
 » Using JNI - Main/Primordial thread stack size limits
 » Using JNI - Non-Main/Primordial thread stack size limits
 » Using JNI - Dereferencing NULL pointers
 » Launching the Java application VM manually when debugging
 » Closing a socket when accept or read is pending (PA-RISC)
 » Compiling with C++ libraries
 » Compatibility with previous releases
 » Additional documentation

» Problem fixes and Known issues
 » Problem fixes

 » PA-RISC known issues
 » shl_load HotSpot libjvm problem due to TLS (HP-UX 11.0 PA-RISC)
 » 64-bit support X/Motif (HP-UX 11.00 & 11.11 (11i v1) PA-RISC)
 » 64-bit support - System call (HP-UX 11.00 PA-RISC)
 » /dev/poll Runtime support (HP-UX 11.00 & 11.11 (11i v1) PA-RISC)
 » HPjconfig configuration tool
 » Compiler safe points (HP-UX 11.00 & 11.11 (11i v1) PA-RISC)
 » Using Linker option +noenvvar and +compat on Itanium and PA-64 Systems
 » Running Java with setuid or setgid

 » HP Integrity (Itanium) known issues
 » Initializing a JVM instance with JNI_CreateJavaVM
 » Using Linker option +noenvvar and +compat on Itanium and PA-64 Systems
 » Running Java with setuid or setgid
 » Running Aries Itanium emulation on PA2.0

Features

HP's SDK 1.4.2.05 is a maintenance release includes the following:

  • Sun Microsystems' 1.4.2_05 release*

  • Performance enhancements and defects fixed in previous 1.4. releases as well as the defects shown in "Problem Fixes."

  • Support for C++ -AA and -AP options PA-RISC

  • HotSpot 1.4.2.05 server JVM

  • Java Web Start

  • Runs in 32-bit or 64-bit mode on both PA-RISC and Itanium-based systems

  • Man pages are now included in the product at /opt/java1.4/man.

    * Please note that on occasion HP backports a defect fix from a Sun release that has not yet been merged into our current sources. Therefore a Sun defect may be fixed in an HP release even though the Sun release that contains the fix is not part of the HP release.

HotSpot 1.4.2.05 JVM

All -X options that were in earlier HotSpot JVMs are included in HotSpot 1.4.2.05. Performance, tool support, tool enhancements, and features are documented at http://java.sun.com/j2se/1.4.2/docs/.

The HotSpot 1.4.2.05 Server JVM for HP-UX 11 PA-RISC and Itanium systems is suitable for both client and server workloads. We invoke the Server VM with configuration options that suit client-side applications.

The SDK 1.4.2.05 HotSpot 1.4.2.05 Edition supports the APIs core to the Java 2 platform:
Java Foundation Classes (JFC), Security, Java IDL, JDBC™, JavaBeans™, Remote Method Invocation (RMI), Java 2D, and the Collections Framework, and a new set of nonblocking I/O APIs.

The Java 2 Platform version 1.4.2.05 API Specification is available at http://java.sun.com/j2se/1.4.2/docs/api/.

Here is a partial list of the functionality that the HotSpot 1.4.2.05 Server JVM provides:

Installation

Patches

*** IMPORTANT NOTE for PA-RISC Customers! ***

In addition to the required patches listed on our website at Java™ Technology Software on HP-UX,for this release you must install the pthreads patch shown below on PA-RISC systems.

Note that Itanium-based systems do not need this patch.

HP-UX 11.0 PA-RISC Required patch PHCO_29959
or
HP-UX 11.11 (11i v1) PA-RISC Required patch PHCO_29960

Operating system patches should be installed before you install the software. To determine which patches have been installed on your machine, log in as root and check your machine with:

/usr/sbin/swlist -l product

For the most up-to-date list of required and recommended patches, and instructions on where to obtain them, refer to the Java Required Patches page at: Patch Information

NOTE: Please install ALL dependency patches as well. These will be listed on the IT Resource Center web page from where you download the patch.

System requirements PA-RISC

For best performance on HP-UX PA-RISC systems: HP server series rp5400, rp7400, rp8400, and Superdome, and PA-based workstations, running HP-UX 11.0, 11.11 (11i v1), or 11.23 (11i v2). The minimum system for running Java applications is a PA-RISC 2.0 system.

HP-UX 11.0 or 11.11 (11i v1) is required.

System requirements Itanium

The Java technology runs on all HP-UX Itanium-based systems. Refer to the following website for Itanium servers: HP Integrity Servers

HP-UX 11.22 (11i v1.5) or later is required. (HP-UX 11.20 is not supported.)

Installation instructions

You need a total of approximately 160MB of disk space to download and install the .depot file. After installing the software, you can remove the .depot file.

Note:   When downloading a .depot file, some browsers don't recognize the .depot format and treat the file as a text file.  If this happens, right-click the Download Directly >> button (on the Software download confirmation window) and select Save Target As....

To verify that the file downloaded correctly you need to use MD5 Secure Checksum (md5sum).   You can download MD5 Secure Checksum at HP-UX MD5 Secure Checksum if you do not already have this utility.   To verify your download with MD5 Secure Checksum, at the UNIX prompt, execute the command:
md5sum <filename>
If the file downloaded correctly, the checksum number for the file you downloaded should match the MD5 Checksum number given for that file.

The HP-UX SDK for the Java 2 Platform installs under /opt/java1.4. As root user, use the following SD-UX swinstall command to install the software:

/usr/sbin/swinstall

This command will lead you through the installation. Change Source Depot Type to "Local Directory" and Source Depot Path to /tmp/<filename>. (If you used a directory other than /tmp in the previous step, replace /tmp with that directory name.) We recommend you select the "Reinstall filesets" and unselect the "Mount filesystems" option from the options menu.

WARNING: Do not unarchive rt.jar, charsets.jar, jpda.jar, tools.jar, jce.jar, and jsse.jar. These files are needed by the SDK tools and the runtime environment.

Add the directory /opt/java1.4/bin to your PATH.

Note: To install the software into an alternate location, see
"Installing into an alternate location".

For information on setting important system parameters required for correct execution of Java programs refer to the Programmer's Guide which can be found at Programmer's Guide for Java™ 2.

Installing into an alternate location

To install the software into an alternate location, add @/<alternatedirectory> to the end of the swinstall line, and add the alternate directory to your PATH.

For example:

/usr/sbin/swinstall -s <download> \* @/<alternatedirectory>

Java prepends <alternatedirectory> to the default product path. Java will therefore install in /<alternatedirectory>/opt/java1.4.

If you want your Java home directory in <alternatedirectory> without the /opt/java1.4 directories, you need to install into a temporary directory, and then move the directories to where you want them.

For example:

swinstall -s <download> \* @/<temporarydirectory>
mv <temporarydirectory>/opt/java*/* <finalalternatedirectory>

Or you can install and link to the directories.

For example:

swinstall -s <download> \* @/<actualdirectory>
ln -s <finalalternatedirectory> /<actualdirectory>/opt/java*

You will notice that the two files, <alternatedirectory>/etc and <alternatedirectory>/var are created. These may be purged, because they do not apply to a product installed in an alternate location.

Note that we are testing another method of installing into an alternate location using <tag>. When we are confident that this method works with software depot install, we will post instructions here.

File structure

The following diagram below displays an abbreviated form of the file structure:


  java1.4

     |

  ___|_____________________________________________________

   |        |        |            |           |          |    

  bin      lib      jre         src.zip      demo     include 

   |        |       javaws files*

  java    tools.jar  | 

  javac   dt.jar     |

  javadoc ir.idl     |

  javah   orb.idl    |

  javap              | 

  jdb                |

                  ___|_____________________________

                     |                             |

                    bin                           lib

                     |                             |

________________________________________________   | 

java PA_RISC PA_RISC2 PA_RISC2.0W  IA64N  IA64W    |  

                                                   |

                                                   |

             __________________________________________________________________

             |      |    |       |        |           |           |        | 

           rt.jar  zi security PA_RISC  PA_RISC2.0  PA_RISC2.0W  IA64N   IA64W 

        charsets.jar             |________|___________|___________|________|___  

          jce.jar                |        |           |           |        |        

          jsse.jar            server    server      server      server   server   

* The files for Java Web Start technology are part of the jre in the directory javaws. Web Start release notes are also included in the javaws directory.

The tools install under opt/java1.4/bin and the libraries install under opt/java1.4/lib. The tools.jar file contains the classes for supporting the tools and utilities. The file dt.jar contains the DesignTime archive of BeanInfo files.

The jre directory includes the runtime environment. The file rt.jar contains the runtime classes for the core API. The file charsets.jar contains the internationalization and localization classes and files. The security directory contains security management files.

The shared libraries used by the HP-UX platform are contained in the following directories:

PA_RISC PA-RISC 1.1 32-bit
PA_RISC2.0 PA-RISC 2.0 32-bit
PA_RISC2.0W PA-RISC 2.0 64-bit
IA64N Itanium 2 32-bit
IA64W Itanium 2 64-bit

The file src.zip contains an archive of source files for the core API for informational purposes. To extract the files, enter the command:

$ unzip src.zip

The include directory contains the header files for supporting JNI and JVMDI.
 

Usage documentation

In addition to these release notes, the following documentation is also available:

The following are additional documentation notes:

Removing support for unwanted architectures in the RTE

Under the RTE license agreement, partners who redistribute the RTE may remove support for unwanted architectures. Functional components may NOT be removed under any circumstances. Beginning with this 1.4.2.05 release, you may remove support for unwanted architectures as follows:

The following commands assume that the RTE has been installed in the standard location, i.e. /opt/java1.4/.

The swremove commands must be run as root. Use these command lines:

  • On a PA-RISC or HP Integrity (Itanium) system, to remove PA_RISC 1.1 support:

/usr/sbin/swremove Jre14.JRE14-PA11 Jre14.JRE14-PA11-HS
(The -pa11 command line option will no longer work.)

  • On a PA-RISC system, to remove 64-bit support:

/usr/sbin/swremove Jre14.JRE14-PA20W Jre14.JRE14-PA20W-HS
(The -d64 command line option will no longer work.)

  • On an HP Integrity (Itanium) system, to remove 64-bit support:

/usr/sbin/swremove Jre14.JRE14-IPF64 Jre14.JRE14-IPF64-HS
(The -d64 command line option will no longer work.)

  • PA_RISC 2.0 support is not typically installed on HP Integrity, but if it is, to remove it:
    /usr/sbin/swremove Jre14.JRE14-PA20 Jre14.JRE14-PA20-HS \
             Jre14.JRE14-PA20W Jre14.JRE14-PA20W-HS
    

Support for dynamic thread local storage (TLS)

Dynamic thread local storage is fully supported on all HP Integrity (Itanium) systems, beginning with SDK Versions 1.4.2.00 and 5.0.

Dynamic TLS is not available on any HP-UX PA-RISC system. However there is a workaround. Refer to "shl_load HotSpot libjvm problem due to TLS (PA-RISC)" in these release notes for details.

Excluding methods from being compiled (PA-RISC and Itanium)

To prevent the HotSpot runtime compiler from compiling certain methods, you can create a file called .hotspot_compiler and add the method to be excluded to the file.

For example, if you want to exclude java/lang/String.indexOf() from being compiled, you would add the following line to the .hotspot_compiler file:

exclude java/lang/String indexOf

By default, the HotSpot VM looks for .hotspot_compiler under the directory where libjvm.sl resides. In addition, it looks for a .hotspot_compiler file in the current directory where the JVM was started.

For example, if you are running the JVM on a PA2.0 server, narrow mode, and the JVM was started from a script called run.sh in the directory /app/myapp/bin, it first looks in the directory {JAVA_HOME}/jre/lib/PA_RISC2.0/server and then it looks for a .hotspot_compiler file in the /app/myapp/bin directory.

Another way to exclude a method is to specify the .hotspot_compiler file using the VM option
-XX:CompileCommandFile=<list of .hotspot_compiler files separated by ":">

Example: -XX:CompileCommandFile=/tmp/foo/.hotspot_compiler_app_version_71:\
/tmp/foo2/hc81

If you specify the -XX:CompileCommandFile option it overrides the default behavior of the VM and the VM will NOT scan either the libjvm.sl directory or the current directory for a .hotspot_compiler file.

Support for C++ applications built with -AA and -AP options (PA-RISC)

Java supports the -AA and -AP options to build your C++ product. On Itanium systems, the C++ runtime libraries support -AA and -AP by default. On HP-UX 11.0 or 11.11 PA-RISC, if you are using the ANSI Standard C++ runtime (-AA) option in an application that loads Java, you need to use the -AA version of libjvm and libfontmanager. Note that these libraries are provided as a separate download on the same page from where you download the SDK and RTE, starting at this webpage:
SDK and RTE 1.4.2.x Downloads and Documentation

These are the Standard C++ Runtime version of these libraries:

./jre/lib/PA_RISC2.0/libjvm_v2.sl
./jre/lib/PA_RISC2.0W/libjvm_v2.sl
./jre/lib/PA_RISC2.0/libfontmanager_v2.sl
./jre/lib/PA_RISC2.0W/libfontmanager_v2.sl

The native application must be linked with, or must dynamically load these versions of the Java libraries if your C++ application is compiled using -AA.

The Standard C++ version of the JVM libraries are supported for PA_RISC2.0 and PA_RISC2.0W architectures only.

If the JVM is invoked through the standard Java driver, then use the -V2 option to use the Standard C++ runtime.
For example:

java -V2 <javaprog>

Supported Tools and Options

The HotSpot technology accepts all of the standard tools and options. For standard tools and options documentation, see http://java.sun.com/j2se/1.4.2/docs/tooldocs/tools.html

To run a tool on HP-UX, either use the full path name or add the path to the startup file. For example, for javac, on the command line you could enter:

/opt/java1.4/bin/javac yourfile.java

You could alternatively add /opt/java1.4/bin to your PATH statement and on the command line enter:

javac yourfile.java

IPv6 support (Internet Protocol version 6)

IPv6 is a set of Internet Protocol specifications designed to provide enhancements over the capabilities of the existing IPv4 service in terms of scalability, security, mobility, ease-of-configuration, and real-time traffic handling.

For more information, see Sun Microsystems' "Networking IPv6 User Guide for J2SDK/JRE 1.4" at http://java.sun.com/j2se/1.4/docs/guide/net/ipv6_guide/

HP-UX 11.11 (11i v1) PA-RISC and 11.23 (11i v2) Itanium support dual protocol stacks IPv4 and IPv6. IPv6 is not currently supported on HP-UX 11.0 or 11.22 (11i v1.5). In this SDK release, the IPv4 protocol stack is the default. To support IPv6, HP-UX 11.11 (11i v1) requires patches; HP-UX 11.23 (11i v2) does not.

To turn on IPv6 support, in addition to installing patches for HP-UX 11.11, you need to set the system property as follows:

java.net.preferIPv4Stack=false

Or at the Java command line you can use the option

-Djava.net.preferIPv4Stack="false"

For the availability of patches required for IPv6 support on HP-UX 11.11, please see

» Patch Information
» TOUR Transition Patches for HP-UX 11i

Additional HotSpot option information

The HotSpot technology accepts all of the standard options as well as the following partial list of non-standard -X and -XX options. Non-standard options are not guaranteed to be supported on all VM implementations, and are subject to change without notice in subsequent releases of the
Java 2 SDK.

See also JavaSoft's "Java HotSpot VM Options" at http://java.sun.com/docs/hotspot/VMOptions.html.

-d64
Runs Java in 64-bit mode. see the section 64-bit support under Known Issues in these release notes for more information on patches required.

-verbosegc or -verbose:gc
Prints out the result of a garbage collection to the stdout stream. At every garbage collection, the following 5 fields are printed:

[%T %B->%A(%C), %D]

%T is GC: when the garbage collection is a scavenge, and Full GC: when it is a full garbage collection. A scavenge collects live objects from the New Generation only, whereas a full garbage collection collects objects from all spaces in the Java heap.

%B is the size of Java heap used before garbage collection, in KB.

%A is the size after garbage collection, in KB.

%C is the current capacity of the entire Java heap, in KB.

%D is the duration of the collection in seconds.

-X
Prints out a brief usage message describing the non-standard options.

-Xbatch
Disables background compilation. If compilation of a large method is taking a long time, the performance engine will revert to interpreting the method. It will compile the method as a background task, running the method in interpreter mode until the background compilation is finished. The -Xbatch flag disables background compilation so that compilation of all methods proceeds as a foreground task until completed, regardless of how long the compilation takes. This flag is provided for users who desire more deterministic behavior of method compilation for purposes such as benchmarking.

-Xbootclasspath:<bootclasspath>
Specify a colon-separated list of directories, JAR archives, and ZIP archives to search for boot class files. The specified boot class libraries will be used instead of the boot class files in the jre/lib/rt.jar archive normally used by the Java 2 software.

-Xint
Operate in interpreted-only mode. Compilation to native code is disabled, and all bytecodes are executed by the interpreter. The performance benefits offered by the Java HotSpot adaptive compiler will not be present in this mode.

-Xmn
Set the Java new generation heap size (for example: -Xmn64m). The new generation is the first generation in HotSpot's generational garbage collector. This option replaces the option
-XX:NewSize=N.

-Xms<size>
Specify the initial size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 5248KB.

Examples: -Xms4194304
-Xms4096k
-Xms4m

-Xmx
Specify the maximum size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 64MB.

Examples: -Xmx83886080
-Xmx81920k
-Xmx80m

-Xnoclassgc
Disables class garbage collection.

-Xprof
(Excerpt below from Sun Microsystems' documentation.)
Profiles the running program, and sends profiling data to standard output.

-Xrs (beginning with SDK 1.3.1)
Reduces use of operating-system signals by the Java virtual machine (JVM), allowing for orderly shutdown of a Java application. Allows user cleanup code (such as closing database connections) to run at shutdown, even if the JVM terminates abruptly. For more information, see JavaSoft's documentation at: http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/java.html

-Xusealtsigs (beginning with SDK 1.3.1.13, 1.4.1 and 1.4.2)
Replaces the -XX:+UseSIGUSR2 option. Instructs the JVM to avoid using SIGUSR1 and SIGUSR2 for internal operations (like Thread.interrupt() calls). In SDK 1.4.1 and later, by default the JVM uses both SIGUSR1 and SIGUSR2. If -Xusealtsigs is used, then two signals halfway between SIGRTMIN and SIGRTMAX will be chosen instead.

-Xss<size>
Specifies the size of stack for each new Java thread. The default Java thread stack size is 512KB. This flag is appropriate for programs that have small thread stack size requirements and/or create several thousand threads, potentially running out of virtual memory. Program threads that overflow the allocated stack will receive java.lang.StackOverFlowException.

Defaults: -Xss512k (Java 1.3 and 1.4 32-bit mode)
-X1m (Java 1.4 64-bit mode)

-XX:+AllowUserSignalHandlers
Instructs the HotSpot JVM option not to complain if the native code libraries install signal handlers. This only matters if the handlers were installed when the VM is booting.

-XX:CompileCommandFile=<list of .hotspot_compiler files separated by ":">
Specifies one or more .hotspot_compiler files that you do not want to be compiled by the JVM. Specifying this option overrides the default behavior of the JVM which is to scan the libjvm.sl directory or the current directory for a .hotspot_compiler file.

Example: -XX:CompileCommandFile=/tmp/foo/.hotspot_compiler_app_version_71:\
/tmp/foo2/hc81

-XX:+DisableExplicitGC
Disable calls to System.gc(). The JVM still performs garbage collection when necessary.

-XX:MaxDirectMemorySize=<size>
Specifies the maximum amount of memory in bytes that the Java NIO library can allocate for direct memory buffers. The default is 64 megabytes, which corresponds to
-XX:MaxDirectMemorySize=64m. The use of direct memory buffers can minimize the copying cost when doing I/O operations.

-XX:MaxNewSize=<size>
Sets the maximum size of new generation (in bytes). Note that in SDK 1.2.2 this option took an integer that specified a value in KB. Starting with SDK 1.3.1, the integer argument specifies bytes. The arguments can now be followed by either 'k' or 'm' to specify KB or MB.

-XX:NewSize=<size>
Sets the default size of new generation (in bytes). Note that in HotSpot 1.0.1 this option took an integer that specified a value in Kbytes. Starting with HotSpot 1.3.1, the integer argument specifies bytes. The arguments can now be followed by either 'k' or 'm' to specify Kbytes or Mbytes.

-XX:NewSizeThreadIncrease=<sizeInKb>
Sets the additional size added to desired new generation size per non-daemon thread (in bytes). Note that in SDK 1.2.2 this option took an integer that specified a value in KB. Starting with HotSpot 1.3.1, the integer argument specifies bytes. The arguments can now be followed by either 'k' or 'm' to specify KB or MB.

-XX:MaxPermSize=<size>
Sets the maximum size of permanent generation (in bytes). Note that in SDK 1.2.2 this option took an integer that specified a value in KB. Starting with SDK 1.3.1, the integer argument specifies bytes. The arguments can now be followed by either 'k' or 'm' to specify KB or MB.

-XX:PermSize=<size>
Specifies the initial size, in bytes, of the Permanent Space memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. Can be used to reduce the amount of permanent space used when
-XX:MaxPermSize is set to a high value.

Examples: -XX:PermSize=6291456
-XX:PermSize=6144k
-XX:PermSize=6m
Default: -XX:PermSize=16m (1.4)

-XX:+ServerApp
A set of XX options which, when bundled together, make some applications run faster. For each release, the options as well as the values may be different depending upon the default values of XX options. We recommend that you test to see whether this set enhances the performance of your application before you use the option in production.

-XX:SurvivorRatio=<size>
Ratio of eden/survivor space size. Default for SDK 1.4 is 8. If your new generation heap is 100MB, the space reserved for objects to survive a GC is ½*(100MB/8), or 6.25MB. Raising this value may improve overall application performance when the New space is large and/or when your application keeps a very low percentage of objects.

-XX:+UseCompilerSafepoints
Enables compiler safe points. In this version, compiler safe points is off by default. Enabling compiler safepoints guarantees a more deterministic delay to stop all running java threads before doing a safepoint operation, namely garbage collection and deoptimization. Note that currently a patch is needed. See Known Problems these release notes for further information.

-XX:+UseOnStackReplacement
Enables on stack replacement. In this version, on stack replacement is off by default. On stack replacement enables the interpreter to go into compiled code while it is executing the same instance of the method call. For example, if the VM is executing a method that has a loop with a large number of iterations, an intra-method hotspot will occur. To get better performance, the method should run in compiled mode instead of interpreted mode. If you enable on stack replacement, you must enable compiler safe points (see the previous option).

-XX:+UseParallelGC
Use parallel garbage collection (available beginning in SDK 1.4.1)

HP specific Options and Features

Additional HP-specific documentation is provided in the HP-UX Programmer's Guide at Programmer's Guide for Java™ 2.

Noteworthy HP specific options and features for Java 2 version include the following:

» -pa11
» -Xeprof
» -Xnocatch
» -Xprep
» -Xverbosegc

These are described below.

-pa11 option
Note: If you run HotSpot with the -pa11 flag or run on a PA 1.1 system, your heap address space will be restricted to 1G.

PA1.1 binaries can be run on PA1.1 as well as PA2.0 systems; however, a PA2.0 binary can only run on a PA2.0 based system. HP includes two versions of the shared libraries comprising APIs and VMs.

The PA2.0 shared libraries are the default if you are running on a PA2.0 system. You can override the use of the PA2.0 shared libraries on a PA2.0 system by specifying the -pa11 flag.

On a PA2.0 based system, if you invoke Java as follows, the default PA2.0 shared libraries are used.

java -version

If you invoke Java with the -pa11 option as follows, the PA1.0 shared libraries are used.

java -pa11 -version

-Xeprof option
Generates profile data for HPjmeter. Enables profiling of Java applications running on HotSpot version 1.2.2.05 or greater and collects method clock and CPU times, method call counts, and call graphs. For more information on HPjmeter, see Java™ Technology Software on HP-UX

To profile your application use the following command:

java -Xeprof:<options> ApplicationClassName

To profile your applet, use:

appletviewer -J-Xeprof:<options> <URL>

where <options> is a list of <key>[=<value>] arguments separated by commas.

After the profiled applet or application normally terminates execution, the Java Virtual Machine writes the profile data to a file in the current directory.

We have found the following options useful in most cases:

For CPU time metrics with minimal intrusion:

-Xeprof
or
-Xeprof:ie=no

Exact call count information and object creation profiling:

-Xint -Xeprof:ie=no

To see the complete list of available options, use

java -Xeprof:help

Supported -Xeprof options are shown below.

For detailed explanations of each option, see -Xeprof Options

times=quick|thorough
time_on=<integer>
(SDK 1.4.1 and later)
time_on=sigusr1|sigusr2 (SDK 1.4.1 and later)
time_slice=<integer> (SDK 1.4.0 and later)
time_slice=sigusr1|sigusr2 (SDK 1.4.0 and later)
file=<filename>
inlining=disable|enable
ie=yes|no

-Xnocatch
Disables the Java "catch-all" signal handler. Use this option to generate clean stack traces from native code.

-Xprep
Dynamically preprocess (modifies) bytecodes of the classes loaded by the JVM. The syntax is

-Xprep <factory_class_name>:<arguments>

where <factory_class_name> is a qualified name of the class that will be used to create the preprocessor, and <arguments> is any string that will be passed to the method creating the preprocessor.

When the -Xprep option is specified, before loading the application classes, the Java VM will load the specified factory class and execute its method declared as:

public static Preprocessor createPreprocessor (String arg)

where Preprocessor is an interface defined as:

package hp.javatools.bytecode;
public interface Preprocessor {
public abstract byte[] instrument (String name, byte[] klass);
}

The JVM will pass the <arguments> specified in the -Xprep option to the createPreprocessor method as its only argument. The Preprocessor object returned by the invocation will be saved by the JVM.

For each subsequently loaded class, the JVM will invoke the instrument method on the Preprocessor object, passing the name of the class being loaded and the bytecode representation of the class. The returned array of bytes will be used by the JVM as the replacement of the original version of the class. If null is returned, the original version of the class will be used.

-Xverbosegc<options>
Prints out detailed information about the spaces within the Java heap before and after garbage collection.

Beginning with 1.4.2.05, the process id will be automatically appended to the verbosegc filename you specify. This helps you to associate a verbosegc output with the corresponding Java process, especially in cases where an application executes several Java processes.

The syntax is


-Xverbosegc[:help]|[0|1][:file=[stdout|stderr|<filename>]] 



:help prints this message.



     0|1 controls the printing of heap information:

       0 Print only after each Old Generation GC or Full GC



       1 (default) Print after every Scavenge and Old Generation GC

                   or Full GC

 



     :file=[stdout|stderr|<filename>] specifies output file

       stderr     (default) directs output to standard error stream

       stdout     directs output to standard output stream

       <filename> file to which the output will be written



At every garbage collection, the following 20 fields are printed:

<GC: %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20>

For a detailed explanation of the fields in the -Xverbosegc:help output, see -Xverbosegc Help for Java™ 1.4.1 and 1.4.2

In addition we recommend HP's garbage collection analysis tool HPjtune, which displays information contained in an Xverbosegc log graphically. HPjtune is available at no cost from Java™ Technology Software on HP-UX

For documentation on the new garbage collectors, see "Tuning Garbage Collection with the 1.4.2 Java Virtual Machine" at http://java.sun.com/docs/hotspot/gc1.4.2/index.html.

An additional source of information is the white paper "Improving Java Application Performance and Scalability by Reducing GC Times and Sizing Memory using JDK 1.4.1" by Nagendra Nagarajayya and J. Steven Mayer at http://wireless.java.sun.com/midp/articles/garbagecollection2/

New garbage collectors: Parallel, Concurrent mark, and Sweep
(excerpts from: http://java.sun.com/docs/hotspot/gc1.4.2/index.html)

JavaSoft has implemented new generational collectors that emphasize the throughput of the application or low garbage collection pause times.

For a detailed look at garbage collection and the new collectors, see JavaSoft's documentation "Tuning Garbage Collection with the 1.4.2 Java Virtual Machine" at http://java.sun.com/docs/hotspot/gc1.4.2/index.html.

Allocating physical memory and swap in the Java heap

The method of allocating physical memory and swap within the Java heap has changed. As a result, you are likely to see higher RSS (resident set size) memory usage when monitoring your Java processes with Glance or other tools, or your application startup may be slightly slower.

For more details on why this occurs and for examples of using key command line options, see: Allocating Physical Memory and Swap in the Java Heap.

Expanding heap size in native applications HP-UX 11.0 & 11.11 (11i v1) PA-RISC

If you embed libjvm in a native application, and wish to use a large Java heap, you need to ensure that enough private data space is enabled. On HP-UX 11.0 and 11.11, by using HP-UX's EXEC_MAGIC linked with "-N" you can expand your available memory space from 1GB to around 1.7GB.

HP-UX 11.0 PA-RISC
With the installation of the required patches shown below (or their superseded patches), you can get larger Java heap by using the command below.

Required Patches: PHKL_27282, PHKL_23409, PHKL_28766, PHKL_29080

  • For 1500MB to 2400MB of Java heap:

    chatr +q3p enable <executable name>

HP-UX 11.11 (11i v1) PA-RISC
With the installation of the required patch shown below, you can get larger Java heap by using the commands below.

Required Patch: PHKL_28428 (or the patch that supersedes it)

  • For 1500MB to 2400MB of Java heap:

    chatr +q3p enable <executable name>

  • For 2400MB to 3.8GB of Java heap:

    chatr +q3p enable +q4p enable <executable name>

See also Application Dependent Considerations When Using Large Heap Size in these release notes.

Expanding heap size in native applications in HP-UX 11.23 (11i v2) Itanium

If you embed libjvm in a native 32-bit application, and wish to use a large Java heap, you need to ensure that enough private data space is enabled. On HP-UX 11.23, by using HP-UX's EXEC_MAGIC linked with "-N" you can expand your available memory space from 1GB to around 1.7GB. This functionality is not supported on HP-UX 11.22 (11i v1.5.)

HP-UX 11.23 Itanium
No patches are required.

  • For 1500MB to 3500MB of Java heap:

    chatr +as mpas <executable name>;

See also Application Dependent Considerations When Using Large Heap Size in these release notes.

Expanding heap size in HP-UX 11.11 (11i v1) PA-RISC

Hotspot 1.4 now supports heaps up to 3.8GB on HP-UX 11.11 with the installation of the patch shown below.

For Java technology invoked from the command line on HP-UX 11.11, Java automatically chooses an appropriate executable.

Required patch: PHKL_28428 (or the patch that supersedes it)

  • For heaps less than 1500MB, the executable is 'java'

  • For heaps greater than or equal to 1500MB, and less than 2400MB the executable is 'java_q3p'.

  • For heaps of 2400MB to 3.8GB, the executable is 'java_q4p'.

You do not need to invoke these programs directly. Just invoke 'java' as usual, and the appropriate program will be run for you.

In addition, be aware that if you wish to use very large heaps, because of segmentation in the HP-UX virtual address space, when the Java heap is larger than 3000MB, either new space
(-Xmn) or old space (-mx minus -Xmn) must be approximately 850MB or less.

See also Application Dependent Considerations When Using Large Heap Size.

Expanding heap size in HP-UX 11.23 (11i v2) Itanium

Hotspot 1.4.1.05 running in 32-bit mode now supports heaps up to 3.5GB on HP-UX 11.23. For Java invoked from the command line on HP-UX 11.23, Java will automatically choose an appropriate executable. This functionality is not supported on HP-UX 11.22 (11i v1.5.)

  • For heaps less than 1500MB, the executable is 'java'.

  • For heaps greater than or equal to 1500MB to 3.5GB, the executable is 'java_q4p'.

You do not need to directly invoke these programs. Just invoke 'java' as usual, and the appropriate program will be run for you.

See also, Application Dependent Considerations When Using Large Heap Size.

Application dependent considerations when using large heap size

Thread stacks and C heap are allocated from the same address space as the Java heap, so if you set the Java heap too large, new threads may not start correctly. Or other parts of the runtime or native methods may suddenly fail if the C heap cannot allocate a new page. An application may start up correctly with a 1.7GB heap, but this does not necessarily mean it's going to work correctly.

For example, if you use a 1MB stack size (-Xss1m), and there are about 80 threads in the process, you will have 80MB for stacks. If you have native libraries, you would probably add another 64MB for C heap. You have now used a total of 144MB of your heap for stacks and C heap, so this address space is not available for Java heap.

Because all programs have varying C heap requirements and have varying numbers of threads, it's difficult to ascertain what the effect will be of running the application at its limit. It's important to understand the real requirements of your application. We recommend that you perform sizing tests before deployment with a realistic load, while monitoring with the -Xverbosegc option and a tool like GlancePlus.

Using WDB to examine backtraces in Java thread stacks

You can now use HP's debugger WDB 3.0.01 or later (the GNU Debugger GDB) to examine backtraces containing mixed language frames (Java and C/C++) in Java thread stacks. This will simplify debugging the VM and Java mixed-language applications. Set the environment variable GDB_JAVA_UNWINDLIB to the path name of the Java Unwind Shared Library libjunwind.sl (PA), which is in the SDK.

The default location of the Java Unwind Library in the SDK is:

/opt/java1.4/jre/lib/PA_RISC/server/libjunwind.sl
/opt/java1.4/jre/lib/PA_RISC2.0/server/libjunwind.sl
/opt/java1.4/jre/lib/PA_RISC2.0W/server/libjunwind.sl
/opt/java1.4/jre/lib/IA64N/server/libjunwind.so
/opt/java1.4/jre/lib/IA64W/server/libjunwind.so

Here are a few examples. In ksh, you would set the environment variable like this:

For 64-bit PA2.0 machines:

export export GDB_JAVA_UNWINDLIB=/opt/java1.4/jre/lib/\
PA_RISC2.0W/server/libjunwind.sl

For 64-bit Itanium 2 machines:

export GDB_JAVA_UNWINDLIB=/opt/java1.4/jre/lib/\
IA64W/server/libjunwind.so

If you installed the SDK in a location other than the default, you would substitute the non-default location for "/opt/java1.4" in the above commands. Then use WDB as usual to debug your Java applications or core files. See the tutorial slides on Debugging at Performance Tuning, Tutorials, & Training for help on how to use the new Java stack unwind functionality.

Asian TrueType fonts and Asian locales

The SDK now supports HP-UX Asian TrueType fonts, with the installation of patches.

The following Asian Locales are now supported by HP's 1.4 SDK with TrueType fonts.

ja_JP.SJIS Japanese with Shift-JIS encoding
ja_JP.eucJP Japanese with JIS EUC encoding
ko_KR.eucKR Korean with KSC5601 EUC encoding
zh_CN.gb18030 Simplified Chinese with GB18030 encoding (supported only on HP-UX 11i)
zh_CN.hp15CN Simplified Chinese, with GB2312 EUC encoding
zh_TW.big5 Traditional Taiwan Chinese with Big5 encoding
zh_TW.eucTW Traditional Taiwan Chinese with CNS11643 encoding (planes 1-3)
zh_HK.hkbig5 Traditional Hong Kong Chinese with Big5 HK encoding

For further information on the topics shown below, see "HP-UX Fonts and the Java Runtime Environment" at HP-UX Java™ Information Library

» X Windows, Java applications and TrueType fonts
» Installing Asian TrueType fonts
» The hp.fontpath property
» Bitmap vs. Scalable fonts
» The JAVA_FONTS environment variable
» How the X font server affects font display
» Controlling the X font server

Date/Time methods - New defaults

There has been a change in the way the HotSpot JVM uses the gettimeofday() system call to obtain date and time information.

For performance reasons a new mechanism is used that uses the number of CPU ticks since the application started, to calculate the current time. As a result, changes to the system date or time using date(1), adjtime(2) or time synchronization utilities such as ntp will not be reflected in the date and time that the Java program returns, until the process is restarted.

If your application requires that system time changes are immediately reflected, you can use the
-XX:+UseGetTimeOfDay option to tell the JVM to use the gettimeofday call instead of the new, lightweight mechanism. However you may notice a drop in performance.

Profiling capability added

In the SDK Version 1.4, a SIGPROF handler to support future profiling capability is installed automatically. This may cause incompatibilities with other native code or profiling tools which use SIGPROF.

You can turn off the SIGPROF handler by using the following option -XX:+ReduceSignalUsage

However be aware that using this option also turns off the SIGQUIT handler, and you therefore cannot get a Java stack trace.

Signal chaining functionality (PA and Itanium)

The SDK 1.4 has a new feature for chaining an application's signal handlers behind the JVM's signal handlers. With signal chaining functionality, applications can now use signals that the JVM uses and they will not interfere with the JVM's functionality. To obtain this functionality on PA-RISC, you need to install a patch (described below).

For signal chaining functionality, the application must load the library libjsig.sl (PA) or libjsig.so (Itanium) before libc.2.

The libjsig.sl or libjsig.so library takes care of signal chaining when the application's signal handlers are installed before or after the JVM's handlers get installed. The libjsig.sl or libjsig.so library is not needed when the application installs the handlers before the JVM installs its handlers.

There are two cases to consider.

  1. Native application creates a JVM
    The application can either link in libjsig.sl or libjsig.so and ensure that libjsig gets loaded before libc.2 by linking them in the correct order. Or you can use the LD_PRELOAD functionality provided by the linker to load libjsig.sl or libjsig.so first.

  2. Normal JAVA application invoked from the command line
    In this case LD_PRELOAD must be used. Linking the native libraries with libjsig.sl or libjsig.so will not work because the JVM will load libc.2 before the application's shared libraries get loaded.

    For example, to use the LD_PRELOAD environment variable:

    export LD_PRELOAD=<libjvm.sl dir>/libjsig.sl; java_application (ksh)
    setenv LD_PRELOAD <libjvm.sl dir>/libjsig.sl; java_application (csh)

On PA-RISC, to obtain the LD_PRELOAD functionality, you need to install the patch shown below.

  • HP-UX 11.00 PA-RISC systems, install patch PHSS_28434
    (or the patch that supersedes it)

  • HP-UX 11.11 PA-RISC systems, install patch PHSS_28436
    (or the patch that supersedes it)

For more information on signal chaining, see http://java.sun.com/j2se/1.4/docs/guide/vm/signal-chaining.html

Using JNI - Main/Primordial thread stack size limits

The primordial thread is the first thread when a process is created. This is the thread that has the main method. It is also called the main thread. The primordial thread stack size is controlled by the kernel parameter maxssiz or maxssiz_64bit. The Java VM (JVM) has two options for controlling the stack size:

-XX:MainThreadStackSize=n
-Xss[n][k or m]

In the Java VM the size of the primordial thread is restricted to the *greater* of MainThreadStackSize (default 2M) or ThreadStackSize (specified by -Xss). For example, if you specify -Xss1m, the JVM still takes 2M for the main thread. And if you specify -Xss4m, the JVM takes 4M for the main thread as well.

If your application calls JNI_CreateJavaVM or JNI_AttachCurrentThread from the primordial thread, under certain conditions the stack usage could cross the JVM-imposed primordial thread stack size limit of 2M and cause a stack overflow situation in the native code itself, even if no Java code was ever run on the primordial thread.

One workaround is to use the option -XX:MainThreadStackSize=<value> to increase the primordial thread stack size, However be aware that -XX options are non-standard options, and are liable to change from release to release.

Other workarounds and examples are provided in our Programmer's Guide along with the effects of using maxssiz on the amount of writable data space available to the application. See the JNI chapter of our Programmer's Guide for Java 2 at: Using Java™ 2 JNI on HP-UX

Using JNI - Non-Main/Primordial thread stack size limits

The default stack size for 1.4 64-bit mode JVM - created threads is 1MB. On PA-RISC 32 and 64-bit systems, the default stack size is 64KB. Therefore, if you are using C language main programs that attach with JNI, you will want to adjust the stack size to avoid overflows.

Here are some suggestions to work around stack overflow problems in threads other than the main thread:

  • If the thread is created in native code and is attached to Java through JNI_AttachCurrentThread, increase the stack size attribute when creating the thread with pthread_create.

  • If the thread is created inside Java and there is a stack overflow condition, increase the thread stack size with -Xss<n>

Using JNI - Dereferencing NULL pointers

In Java 2, JNI code that incorrectly dereferences NULL will result in a SIGSEGV, which may be different behavior than that experienced with Java 1.1 releases. For example, in Java 1.1, JNI methods that dereference NULL pointers like this:

int *p = NULL;
return *p;

will return the value 0.

With the Java 2 the HotSpot VM, such dereferences result in a SIGSEGV, and java NULL checks can be performed without having to emit explicit code to do so. With Java 2 HotSpot, the signal is caught, and a null pointer exception is thrown if the offending instruction was within the VM (compiled code, or in the interpreter). This method may uncover hidden programming errors.

Also, if you are including the HP-UX Runtime Environment for the Java 2 Platform in an application and bypassing our standard driver, for example, by making calls to JNI_CreatJavaVM from inside the application, link the application with the "-z" option. The -z option will indicate that dereferencing NULL pointers in the application should generate a SIGSEGV instead of the traditional behavior of returning zero. If you do not, you will not be able to take advantage of implicit null pointer checks; null pointer checks will have to be explicit, potentially degrading performance. Linking with -z may also expose existing but quiet bugs in an application. This is because the SIGSEGVs were not being generated before.

Launching the Java application VM manually when debugging
(excerpted from http://java.sun.com/products/jpda/readme.html)

If you are running the version of jdb provided in this release, the application VM is launched for you with the debugger loaded at the back end. However, in the following cases, you will be launching your own application VM, either by hand or in your implementation.

  1. Remote debugging with the -attach or -listen jdb option.

  2. You are implementing a debugger which uses the JDWP directly.

  3. You are implementing a debugger back end which uses JVMDI.

Currently, the first two cases require a command line like the following:

java -Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y
-classpath class-path class-name

The -Xdebug option enables debugging. The -Xnoagent disables the default sun.tools.debug debug Agent. The -Djava.compiler=NONE disables the JIT compiler.

For the third case, you must use the same command line options as described above, but you are free to use your own mechanism for loading the JVMDI client into the application VM. You do not need to use -Xrun.

The Connection and Invocation Details document at http://java.sun.com/products/jpda/doc/conninv.html contains more information on necessary VM invocation options and sub-options of -Xrunjdwp.

Closing a socket when accept or read is pending (PA-RISC)

Because of changes to the mechanism by which a socket is closed in the VM, you no longer need to use the -XdoCloseWithReadPending option we recommended in earlier releases. In addition, special patches for this are no longer required.

Compiling with C++ libraries

Libraries compiled with the cfront HP C++ compiler will not work with HotSpot. HotSpot requires use of the HP aCC compiler for any application C++ libraries loaded dynamically at runtime.

Compatibility with previous releases

Sun Microsystems maintains upward compatibility, therefore an application written for a 1.3 JVM will run on a 1.4 JVM. Downward compatibility is generally not supported, because new API's are introduced that cannot be run on earlier JVMs.

For a detailed description of the incompatibilities between 1.3 and 1.4,see http://java.sun.com/j2se/1.4/compatibility.html

Additional documentation

The following websites have additional information:
» HP-UX Programmer's Guide for Java 2
» Java 2 SDK Tools and Utilities
» Java 2 SDK version 1.4 features and tools
» Java 2 version 1.4.2 API Specification
» Java 2 SDK version 1.3 features and tools
» Java 2 platforms and APIs - Authorized Books
» Java tutorial
» Java Security
» Java Technologies
» Swing Connection newsletter

Java man pages located at /opt/java1.4/man
 

Problem fixes and Known issues

Known JavaSoft bugs are documented in the Bug Database at http://developer.java.sun.com/

Problem fixes

Please note that on occasion HP backports a defect fix from a Sun release that has not yet been merged into our current sources. Therefore a Sun defect may be fixed in an HP release even though the Sun release that contains the fix is not part of the HP release.

This 1.4.2.05 release includes the enhancements and defects fixed in previous HP 1.4.2 releases, defects fixed in Sun's 1.4.2_05, as well as the following additional defect fixes:

HP defect HP SR Duplicate JavaSoft ID Description
JAGaf24228 8606363568 N/AN/APoor usuability when compiler cannot allocate memory
JAGaf272188606363568N/AN/AProblem in DefNewGeneration::copy_to_survivor_space
JAGaf280068606367442N/AN/ADeadlock with unowned monitor
JAGaf30085 8606369541 N/AN/ADeadlock between a java.lang.Runtime and a sun.misc.Launcher$AppClassLoa
JAGaf31230 8606370812 N/AN/AAllow JRE bundlers to reduce size of JRE by omitting architectures
JAGaf31443 8606371025 JAGaf31443 5014213 Problem on Linux Itanium
JAGaf32990 8606372587 N/AEnhancement: Need timestamps on sigquit stack traces
JAGaf33563 8606373158 N/AN/AEnhancement: Eliminate thread contention from using the zip inflater and zip deflater
JAGaf340188606373627N/AN/AProblem with compiling with javac from tools.jar package
JAGaf34347 8606373956N/AN/A If Cipher suite with AES is accepted by server, client fails to continue
JAGaf35915 8606375612 N/AN/ASplit JNICritical_lock into array of locks to ease contention
JAGaf37036 8606376758 N/AN/AJava1.4.2 VM terminates on application shutdown
JAGaf38116 8606377858 N/AN/AMake -Xverbosegc:file name include pid by default
JAGaf384608606378202N/AN/A transferTo not working in 1.4.2 JavaNIO

PA-RISC known issues

Below is some information on known PA-RISC defects. Some of the solutions require installing patches. For more information on locating and installing patches, go to: Patch Information.

shl_load HotSpot libjvm problem due to TLS (HP-UX 11.0 PA-RISC)
The libjvm library for the HotSpot 1.4 JVM uses thread local storage (TLS). Currently, the dynamic loader that is used by shl_load does not support dynamically loading a shared library containing TLS when the library was not included in the link line.

You may need to load a library dynamically (using shl_load or dlopen) that contains TLS, such as libjvm.sl, without having linked your application against it. This might be the case if your application uses plug-ins.

The current workaround is a new linker feature LD_PRELOAD that is available for HP-UX 11.0 in patch PHSS_28434 (or its supersede patches). In all HP-UX 11i releases, the LD_PRELOAD feature is provided and no patches are required for it. For more information on LD_PRELOAD functionality and its limitations, read the man page for dld.sl AFTER you have installed the patch.

64-bit support X/Motif (HP-UX 11.00 & 11.11 (11i v1) PA-RISC)
For 64-bit support on X/Motif, you will need to install one of the patches shown below (or their supersede patch), depending on your operating system.

HP-UX 11.00 PHSS_28368 64-bit
HP-UX 11.11 PHSS_28875 32/64-bit

These fix GUI failures due to the window height of some Java application pop-up windows being too large.

64-bit support - System call (HP-UX 11.00 PA-RISC)
The lightweight timer may not function correctly because the system call
__lw_get_thread_times() may fail.

For HP-UX 11.0, the workaround is to install the two patches shown below, or their supersede patch. HP-UX 11.11 (11i v1) system calls function correctly.

HP-UX 11.00 PHKL_28202 __lw_get_thread_times reports incorrect time
HP-UX 11.00 PHKL_26008 cumulative pstat patch

/dev/poll Runtime support (HP-UX 11.00 & 11.11 (11i v1) PA-RISC)
For systems where /dev/poll runtime support is required, you will need to install one of the following patches, depending on your HP-UX version. If the patches have been superseded, you may install the supersede patch.

HP-UX 11.00 PHKL_24064
HP-UX 11.11 PHKL_25468

HPjconfig configuration tool
HPjconfig version 2.0 is not supported on the HotSpot 1.4 VM. HPjconfig version 2.1 and later is supported, which you can download free from: Java™ Technology Software on HP-UX.

Compiler safe points (HP-UX 11.00 & 11.11 (11i v1) PA-RISC)
For both HP-UX 11.0 and 11.11, using Compiler Safe Points requires a patch. The required patch numbers are shown below. For information on locating and installing the patches, go to: Patch Information. If the patches have been superseded, you may install the supersede patch.

HP-UX 11.00 PHKL_28202
HP-UX 11.00 PHKL_27089 (for 64-bit)

HP-UX 11.11 (11i v1) PHKL_24751 and PHKL_27317
HP-UX 11.11 (11i v1) PHKL_27092 (for 64-bit)

In SDK 1.4.2.05, compiler safe points is off by default. To turn it on, use the
-XX:+UseCompilerSafepoints option. Enabling compiler safepoints guarantees a more deterministic delay to stop all running java threads before doing a safepoint operation, namely garbage collection and deoptimization.

Using Linker option +noenvvar and +compat on Itanium and PA-64 Systems
If your application links with libjvm and uses the JNI interface APIs to load the JVM directly, do not use the linker options +noenvvar or +compat on Itanium or PA-64 systems. The defect does not exist on PA-RISC 32-bit systems.

Running Java with setuid or setgid
Java requires dynamic loading (SHLIB_PATH, LD_LIBRARY_PATH) which are disabled in setuid or setgid executables. Therefore Java cannot run with setuid or setgid.

HP Integrity Known Issues

Initializing a JVM instance with JNI_CreateJavaVM or attaching to JVM with AttachCurrentThread()

Starting in 1.4.2.00 with the 64-bit SDK, the stack size required to initialize a JVM instance with JNI_CreateJavaVM or to attach to JVM with AttachCurrentThread() is greater than the HP-UX 11.23 (11i v2) Itanium pthread default of 256K. If you wish to call JNI_CreateJavaVM or AttachCurrentThread() from a pthread, you need to create the pthread with a larger stack size, at least 416K. Stack overflow failures during JVM initialization are not always clearly reported as such, since the JVM may not have yet installed its handlers, and the failures may appear as random exceptions. The solution is make sure you have enough stack space.ures may appear as random exceptions. The solution is make sure you have enough stack space.

Using Linker option +noenvvar and +compat on Itanium and PA-64 Systems
If your application links with libjvm and uses the JNI interface APIs to load the JVM directly, do not use the linker options +noenvvar or +compat on Itanium or PA-64 systems. The defect does not exist on PA-RISC 32-bit systems.

Running Java with setuid or setgid
Java requires dynamic loading (SHLIB_PATH, LD_LIBRARY_PATH) which are disabled in setuid or setgid executables. Therefore Java cannot run with setuid or setgid.

Running Aries Itanium emulation on PA2.0
If you are running the Aries Itanium emulator on a PA2.0 system with HP-UX 11.22 or 11.23, a defect exists which causes Java math calculations to produce incorrect math routine results. This problem is fixed by installing the following patches, or the patches that supersede them:

HP-UX 11.22: PHSS_29654 (or the patch that supersedes it)
HP-UX 11.23: PHSS_29658 (or the patch that supersedes it)

Legal notices

© Copyright 2001, 2004 Hewlett-Packard Development Company, L.P.
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.