HP-UX Java™ SDK Version 1.3.1.04 for Itanium Release Notes


» Back to HP-UX Java™ Archived Releases – Release Notes

hp-ux SDK for the Java™ 2 platform limited availability release version 1.3.1.04 (Hotspot edition) for hp-ux 11i v. 1.5 (11.20) and 1.6 (11.22) for the Itanium Process Family (IPF)

Release notes are provided with the software and as a standalone file on this web site. The website has the most up-to-date information regarding which defects were fixed in this release.

table of contents

» features

» SDK 1.3.1.04 (limited availability)
» HP's version numbering
» HotSpot version 1.3.1 server JVM
» previous 1.3 releases

» installation

» patches
» minimum system recommendation
» installation instructions
» file structure

» usage documentation

» supported tools and options
» additional HotSpot option information
» hp specific options and features
» support for locales
» TrueType fonts

» X windows, Java applications and 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
» profiling capability added
» using JNI—dereferencing null pointers
» using JPDA
» manually launching the application VM
» closing a socket when accept or read is pending
» C and C++ libraries
» CLASSPATH
» compatibility with previous releases
» JAR files
» web sites with additional information

» problem fixes and known issues

» problem fixes
» known issues
» missing property files for Japanese printing
» Asian TrueType fonts, swing, and xfs
» using linker option +noenvvar on Itanimum and PA-64 systems
» running Java with setuid or setgid

features

The SDK Limited Availability Release Version 1.3.1.04 for the Itanium Processor Family (IPF) Hotspot Edition provides the tools for developing and deploying Java applications on HP systems with HP-UX 11i Version 1.5 (11.20) and 1.6 (11.22) for the Itanium Processor Family (IPF). It runs in 32-bit mode on Itanium Processor Family systems. It is not supported on PA-RISC systems.

limited availability release 1.3.1.04 IPF

The SDK version 1.3.1.04 for the Itanium Product Family is a Limited Availability release, intended for developing platform independent applications at the API level for the SDK 1.3. It will enable porting activities for native Java-based programs.

The 1.3.1.04 version of the HP-UX SDK for IPF includes Sun Microsystems' release 1.3.1_02.

HP's version numbering

Starting with HotSpot 1.3.1, HP uses the same version numbering scheme for HotSpot as for the SDK, following JavaSoft's convention.

HP's product versioning scheme is similar to the JavaSoft versioning scheme. An HP maintenance release, for example 1.3.1.00, would contain the JavaSoft 1.3.1 maintenance fixes and may include additional HP defect fixes. A subsequent HP minor maintenance release, for example 1.3.1.01 or 1.3.1.02, would contain all additional defect fixes for HP releases after 1.3.1.00. HP's minor maintenance releases are not directly comparable to JavaSoft patch releases such as 1.3.1_001.

HotSpot version 1.3.1 server JVM

This SDK 1.3.1 release includes the next generation HotSpot 1.3.1 server JVM (the default) and the Classic VM. See the note above on version numbering.

The HotSpot 1.3.1 Server JVM for HP-UX 11i for the Itanium Product Family is suitable for both client and server workloads. We invoke the Server VM with configuration options that suit client-side applications with the -client option.

The HP-UX SDK, for the Java 2 Platform, HotSpot 1.3.1 Edition includes all of the standard Java 2 SDK Tools. The tools include appletviewer (with a graphical user interface), extcheck, jar, java, javac, javadoc, javah, javap, jdb and oldjdb (only for -classic mode), rmic, rmid, rmiregistry, serialver, keytool, jarsigner, policytool, native2ascii, tnameserv, and idlj.

The HotSpot 1.3.1 Server JVM provides a number of features:
  • Improved performance

  • Full implementation of Java VM Debugging Interface (JVMDI)

  • Support for Java VM Profiling Interface (JVMPI)

  • Support for the -Xeprof option for HPjmeter

  • Introduces a new option, -Xrs, which reduces the use of operating system signals by the Java Virtual Machine

  • Large heap size (HP-UX 11i)

  • Full implementation of JVMDI and JPDA allows you to run HotSpot instead of Classic when using the 1.3 SDK with numerous tools such as TogetherSoft Control Center, Code Warrior, Oracle JDeveloper, IBM Visual Age, Netbeans, JDE, MetaMata, Tek. Tools, Elixier IDE, BlueJ, JIG, JSwat Project, Swing Debugger, and the sample debugger jdb that ships with SDK 1.3.

  • Support for JVMPI means that it is possible to profile java code with the HotSpot 1.3.1 VM. Therefore, you can extract more accurate runtime profiles. Some of the tools based on JVMPI include: hprof (-Xrunhprof), JProbe, JUM, and OptimizeIt. (Note: Although -hprof provides some stack trace information not found in -Xeprof, the latter can sometimes be more useful for performance tuning.) For more information on JVMDI and JPDA, go to http://java.sun.com/j2se/1.3/docs/guide/jpda/architecture.html

  • The -Xrs option is fully documented at: http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/java.html
This release continues to support a 100% Java compatible environment.

previous 1.3 releases
  • The 1.3 release contains the FastSwing feature that is exclusive to HP-UX. This feature provides some performance improvement for Swing Applications on a Remote X-Server. Remote X-Servers include X-Terminals, PC-XServers like Exceed and Reflection X and remote unix workstations. This feature is documented in "Usage Documentation" below.

  • JPDA is the debugging support architecture needed to build debugger applications for the Java 2 Platform. The JPDA includes the Java Debug Interface (JDI), the Java Debug Wire Protocol (JDWP), and the Java Virtual Machine Debug Interface (JVMDI). A sample debugger based on JPDA is provided in /opt/java1.3/bin/jdb. The original jdb product has been moved to /opt/java1.3/bin/oldjdb. Please note that the java source code for the sample debuggers is located in examples.jar in /opt/java1.3/demo/jpda and is unsupported.

  • The 1.3release supports the APIs core to the Java 2 platform: Java Foundation Classes (JFC), Security, Java IDL, JDBC(tm), JavaBeans(tm), Remote Method Invocation (RMI), Java 2D, and the Collections Framework.

  • HP also includes the implementation of a non-blocking I/O Poll API for Java in the com.hp.io package. com.hp.io.Poll supports a general mechanism for reporting I/O conditions associated with a set of FileDescriptors and for waiting until one or more conditions becomes true. Specified conditions include the ability to read or write data without blocking, and error conditions. Use of com.hp.io.Poll dramatically reduces the number of threads required to support large numbers of clients in large server-side Java applications.

    The packages included in the APIs core to the Java 2 platform are described at: http://java.sun.com/products/jdk/1.3/docs/api

  • The JavaSoft idlj compiler is available in the 1.3 release. This allows developers to define their application interfaces in a program neutral interface language. The idl interface files are compiled into Java files via this compiler. It also generates portable client stubs and server skeletons that work with any CORBA-compliant Object Request Broker. It produces CORBA 2.3 compliant code. Refer to http://java.sun.com/reference/docs/index.html for more information.

    The Java Naming and Directory Interface (JNDI) is available in the 1.3 release. This makes it possible to have a federated naming service as part of your application. Currently LDAPv2, CosNaming, and RMI Registry Server Provider Interfaces are available on our JDK platform. Refer to http://java.sun.com/reference/docs/index.html for more information.

  • The JavaSoft ORB has been updated to CORBA 2.3.2 compliancy. One of the new features specified in this update is "objects passed by value." Refer to the OMG documents at http://www.omg.org/ for more information on this CORBA version.

  • New RMI run-time classes are included in this release. They provide greater performance and functionality for RMI applications running over the JRMP protocol.

  • RMI/IIOP: New RMI run-time classes are included that allow RMI applications to run over the IIOP protocol.

  • A new rmic compiler is provided that understands the "-iiop" option that produces stub and skeleton files that communicate via the IIOP protocol. This makes it possible for RMI clients and servers to communicate with their CORBA counterparts. Refer to http://java.sun.com/docs/index.html for more information.

installation

patches

Operating system patches should be installed before you install the software. To determine which patches have been installed on your machine, login 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, visit the patches page. Please install any dependency patches as well. These will be listed on the IT Resource Center web page from where you download the patch.

minimum system recommendation

You must run the SDK Limited Availability Release Version 1.3.1.04 for Itanium on Itanium Processor Family servers or workstations. These are currently the hp rx4610 server or rx9610 server, and the hp i2000 workstation.

installation instructions

If you download the software from the website, you need approximately 100 MB of disk space on your system to install the software.

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

/usr/sbin/swinstall

It 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 in swinstall.

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

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

For information on setting important system parameters required for correct execution of Java programs go to the Programmer's Guide for Java™ 2.

file structure

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

  java1.3
     |
  ___|_____________________________________________________
   |        |        |         |           |          |    
  bin      lib      jre      src.jar      demo     include 
   |        |        |
  java    tools.jar  |
  javac   dt.jar     |
  javap              |
  javah              |
  javadoc         ___|__________
  jdb                |          |
  ...               bin        lib
                     |          |
                    java  ______|___________________________________
                    ...       |          |         |             
                          rt.jar     security    IA64      
                         il8n.jar              ____|_____               
                                               |        |     
                                             classic  hotspot

The tools install under opt/java1.3/bin and the libraries install under opt/java1.3/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 il8n.jar contains the internationalization and localization classes and files. The security directory contains security management files. The IA64 directory contains the shared libraries used by the HP-UX platform.

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

$ jar xvf src.jar

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

usage documentation

The HP-UX Programmer's Guide for Java 2 provides additional information.

The Java 2 Platform, Standard Edition, v 1.3 API Specification is provided at http://java.sun.com/j2se/1.3/docs/api/index.html .

Note: Only the java.x packages are documented.

The Java Class Libraries: Second Edition, Volume 1 by Patrick Chan, Rosanna Lee, and Douglas Kramer provides additional detail and examples. For more information see http://java.sun.com/docs/books/chanlee/supplement.

Below are some additional documentation notes.

supported tools and options

To run a tool on HP-UX, either use the full path name or add the path to the startup file. For example, to use javac on the command line you would enter: /opt/java1.3/bin/javac yourfile.java. You could alternatively add /opt/java1.3/bin to your PATH statement and on the command line enter: javac yourfile.java

The Hotspot technology accepts all of the standard tools and options, and the documentation references are noted below:

The appletviewer tool is documented at http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/appletviewer.html

CLASSPATH is documented at http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/classpath.html

The jar tool is documented at http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/jar.html

The java tool is documented at http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/java.html

The javac tool is documented at http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/javac.html

The javadoc tool is documented at: http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/javadoc.html

The javah tool is documented at: http://www.java.sun.com/products/jdk/1.3/docs/tooldocs/solaris/javah.html

The javap tool is documented at: http://java.sun.com/reference/docs/index.html

The jdb tool is documented at: http://java.sun.com/docs/index.html

The extcheck tool is documented at: http://java.sun.com/reference/docs/index.html

The rmic tool is documented at: http://java.sun.com/reference/docs/index.html

The rmiregistry tool is documented at: http://java.sun.com/reference/docs/index.html

The rmid tool is documented at: http://java.sun.com/reference/docs/index.html

The serialver tool is documented at: http://java.sun.com/reference/docs/index.html

The native2ascii tool is documented at: http://java.sun.com/reference/docs/index.html

The keytool tool is documented at: http://java.sun.com/reference/docs/index.html

The jarsigner tool is documented at: http://java.sun.com/reference/docs/index.html

The policytool tool is documented at: http://java.sun.com/reference/docs/index.html

The tnameserv tool is documented at: http://java.sun.com/reference/docs/index.html

The idlj tool is documented at: http://java.sun.com/reference/docs/index.html

additional HotSpot option information

The HotSpot technology accepts all of the standard options as well as the following partial list of non-standard -X options. Non-standard options are subject to change in future releases.

-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.

-Xincgc

Enable the incremental garbage collector. The incremental garbage collector, which is off by default, will eliminate occasional garbage-collection pauses during program execution. However, it can lead to a roughly 10% decrease in overall performance.

-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 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. This option is provided as a utility that is useful in program development and is not intended to be be used in production systems.

-Xrs (beginning with HotSpot 1.3.1)

Reduces use of operating-system signals by the Java virtual machine (JVM).

-Xss<size>

Specify the size of stack for each new Java thread. The default Java thread stack size is 512 KB. 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. Example: -Xss128k

-XX:+AllowUserSignalHandlers

Using this command instructs the JVM not to complain if the application installs signal handlers.

-XX:+DisableExplicitGC

Disable calls to System.gc(). The JVM still performs garbage collection when necessary.

-XX:MaxNewSize=<size>

Sets the maximum 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: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 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:MaxPermSize

Sets the maximum size of permanent 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:+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.3 is 64MB. Number can include 'm' or 'M' for megabytes, 'k' or 'K' for kilobytes, and 'g' or 'G' for gigabytes. For example, 32k is the same as 32768.

-XX:+UseSIGUSR2

Use the java command line option -XX:+UseSIGUSR2 if you want the JVM to use SIGUSR2 for internal operations like Thread.interrupt() calls instead of SIGUSR1, the default. This allows you to better implement third party middleware applications that in some versions want to use SIGUSR1 for similar purposes in their native code.

HP specific options and features

Additional HP specific documentation is provided in the HP-UX Programmer's Guide.

Noteworthy HP specific options and features for Java 2 version

-Xeprof
-Xnocatch
-Xprep
-verbosegc
-Xverbosegc
and the FastSwing feature. These are described below.

-Xeprof option

The -Xeprof option generates profile data for HPjmeter. The -Xeprof option enables profiling of Java applications running on HotSpot version 1.2.2.05 or greater and collects method clock and CPU times, method call count, and call graph. (For more information on HPjmeter, see HPjmeter Downloads and Documentation.)

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

Here are the supported -Xeprof options:

file=<filename>

The profile data will be written to the named file. The default is java.eprof.

times=quick|thorough

Collect call graph with inclusive method clock and CPU times and method call count.

This option uses tracing with reduction and collects the data separately for each thread, throughout the whole execution time of the program.

The quick value instructs the profiler to use the hardware Interval Timer register for time measurement. This value results in faster profiling runs, but in very rare circumstances can produce inaccurate data. This is the default for PA-RISC 2.0 based machines. If you ever suspect that the profile data generated using the quick value is incorrect then redo the run to see whether the results can be replicated.

The thorough value is the opposite of quick, disabling the use of the Interval Timer. The profiling runs will be longer, but will provide timing data with the same quality as the system calls used to measure the time. However, the profiling intrusion and overhead also increase. This is the default for PA-RISC 1.1 based machines.

ie=yes|no

Enable/disable the profiling intrusion estimation.

ie=yes, the default value, specifies that the profiler estimate the profiling intrusion and write the estimated values to the profile data file. A future version of HPjmeter will be able to present the timing data as: raw, meaning the data as collected, or compensated, meaning with the estimated intrusion subtracted.

Disabling intrusion estimation reduces the size of the data files, but will also disable the intrusion compensation feature.

inlining=disable|enable

Disable/enable inlining in the HotSpot VM.

The compiler in the HotSpot VM optimizes Java applications by inlining frequently called methods. Execution of inlined methods does not count as "calls" from the profiler's viewpoint. Instead, the time spent in an inlined method is attributed to its caller.

The count of created objects cannot be reliably estimated in the presence of inlining, because the calls to the constructors may have been inlined.

To obtain an accurate method call count and to enable the created objects metric, run the VM with inlining=disable.

-Xnocatch

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

-Xprep

The -Xprep option is used to dynamically preprocess (modify) bytecodes of the classes loaded by the VM. Its 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. The location of the factory class must be specified in the -Xbootclasspath option passed to the VM, together with the location of the appropriate rt.jar.

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

class <factory_class_name> implements Preprocessor {
  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 VM 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 VM.

For each subsequently loaded class, the VM 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 VM as the replacement of the original version of the class. If null is returned, the original version of the class will be used.

-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 its 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 miliseconds.

-Xverbosegc<options>

This option prints out detailed information about the spaces within the Java Heap before and after garbage collection.

The syntax of the option is:

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

:help prints this message.

0|1 controls the printing of heap information:
0  Only after each full GC
1  (default) After every Scavenge and 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 18 fields are printed:
<GC: %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 >

%1: Indicates the cause of the garbage collection.
     -1: indicates a Scavenge (GC of New Generation only)
    0-6: indicates a Full GC (collection of all spaces in the
         Java Heap)
   Reason:
      0:  Call to System.gc
      1:  Old Generation full
      2:  Permanent Generation full
      3:  Train Generation full
      4:  Old generation expanded on last scavenge
      5:  Old generation too full to scavenge
      6:  FullGCAlot

%2: Program time at the beginning of a collection, in seconds.

%3: Garbage collection invocation. Counts of Scavenge and Full GCs are 
	maintained separately.

%4: Size of the object allocation request that forced the GC, in bytes.

%5: Tenuring threshold - determines how long the new born object remains 
	in the New Generation.

    The report includes the size of each space:
       Occupied before garbage collection (Before)
       Occupied after garbage collection (After)
       Current capacity (Capacity)

All are in bytes.

Eden sub-space (within the New Generation)
%6:  Before
%7:  After
%8:  Capacity

Survivor sub-space (within the New Generation)
%9:  Before
%10: After
%11: Capacity

Old Generation
%12: Before
%13: After
%14: Capacity

Permanent Generation (Storage of Reflective Objects)
%15: Before
%16: After
%17: Capacity

%18: Duration of the garbage collection in seconds.

FastSwing

FastSwing is an HP feature which provides significant performance improvement for Swing Applications on a Remote X-Server. Remote X-Servers include X-Terminals, PC-XServers like Exceed and Reflection X and remote unix workstations.

To use this feature invoke java or appletviewer as follows:

/opt/java1.3.1/bin/java -Dhp.swing.useFastSwing=true MyApp

or

/opt/java1.3.1/bin/appletviewer -J-Dhp.swing.useFastSwing=true applet.html

Currently we recommend using this feature only for Remote displays as it has the following caveat:

Double-buffered Swing Components cannot perform Graphics2D operations with the FastSwing feature turned on. When doing so you will get the following exception:

java.lang.ClassCastException: sun.awt.motif.X11OffScreenImage
        at BezierAnimationPanel.run(BezierAnimationPanel.java:223)
        at java.lang.Thread.run(Unknown Source)
		

support for locales

The HP-UX proprietory encodings used by the following HP-UX propietory locales are not recognized by the runtime environment.

ar_DZ.arabic8 fr_FR.roman8
ar_SA.arabic8 is_IS.roman8
da_DK.roman8 it_IT.roman8
de_DE.roman8 iw_IL.hebrew8
el_GR.greek8 ja_JP.kana8
en_GB.roman8 nl_NL.roman8
en_US.roman8 no_NO.roman8
es_ES.roman8 pt_PT.roman8
fi_FI.roman8 sv_SE.roman8
fr_CA.roman8 tr_TR.turkish8

The following locales are supported:

C.iso88591 hu_HU.iso88592
C.iso885915 is_IS.iso88591
bg_BG.iso88595 is_IS.iso885915@euro
cs_CZ.iso88592 it_IT.iso88591
da_DK.iso88591 it_IT.iso885915@euro
da_DK.iso885915@euro ja_JP.SJIS
de_DE.iso88591 ko_KR.eucKR
de_DE.iso885915@euro nl_NL.iso88591
el_GR.iso88597 nl_NL.iso885915@euro
en_GB.iso88591 no_NO.iso88591
en_GB.iso885915@euro no_NO.iso885915@euro
en_US.iso88591 pl_PL.iso88592
es_ES.iso88591 pt_PT.iso88591
es_ES.iso885915@euro pt_PT.iso885915@euro
fi_FI.iso88591 ro_RO.iso88592
fi_FI.iso885915@euro ru_RU.iso88595
fr_CA.iso88591 sk_SK.iso88592
fr_CA.iso885915 sl_SI.iso88592
fr_FR.iso88591 sv_SE.iso88591
fr_FR.iso885915@euro tr_TR.iso88599
hr_HR.iso88592 zh_CN.hp15CN
  zh_TW.big5
TrueType fonts

The SDK now supports HP-UX Asian TrueType fonts, with the installation of the patches shown below. Follow these steps:
  1. Install the patches you need from the list below. Install the common patch, plus the appropriate patch for your language. To download patches, go to the Patch Database at the IT Resource Center website.

    Select the link "Individual Patches" under Maintenance/Support. Scroll down to "retrieve a specific patch by entering the patch name" and enter the patch number in the input field. (This process will redirect you to a new patch if a patch has been superceded.) Read the information about the patch to ascertain any dependencies.

    Japanese:  PHSS_24931 (for 11.00) or PHSS_24932 (for 11i 11.11)
    Korean:  PHSS_24933 (for 11.00) or PHSS_24934 (for 11i 11.11)
    Simple-Chinese:  PHSS_24935 (for 11.00) or PHSS_24936 (for 11i 11.11)
    Common:  PHSS_25091 (for 11.00) or PHSS_25092 (for 11i 11.11)

  2. Make sure you have installed HP's SDK version 1.3.1.02 or later, which supports Asian TrueType fonts, including new versions of the font.properties files.

  3. Check the status of the font server. The HP-UX X Server uses X Font Server (xfs) as its TrueType font server. In some cases Java's font display may be affected by this daemon because it makes TrueType scalable fonts available.



    To query your X display, use the command "xset -q". This will list the X Font Path. If the path includes the X Font Server, remove it using the command "xset -fp tcp/<yourHost>:7000"

  4. When your Java application runs under an Asian locale, Java fonts are defined using the following fonts.properties files shipped in $JAVA_HOME/jre/lib.

    LANG=ja_JP.SJIS  font.properties.ja
    LANG=ko_KR.eucKR  font.properties.ko
    LANG=zh_CN.hp15N  font.properties.zh_EUC_CN
X windows, Java applications and TrueType fonts

This section gives you information on how X11 fonts are configured with your HP-UX Java runtime environment. Because the HP-UX SDK (beginning with 1.3.1), has built-in support for the Asian TrueType fonts, you will not normally need this information. However, if you want to change Java's font.properties files or if you have a font-related problem, this information is useful.

A helpful document is "Font Overview" at http://java.sun.com/j2se/1.3/docs/guide/intl/addingfonts.html.

Your Java application uses the X11 Window system to display components and fonts. When your Java application runs under an Asian locale, the Java Logical Font Name may be mapped to an X Windows font using the font.properties files in $JAVA_HOME/jre/lib. The font.properties.* files are locale-sensitive.

When HP-UX Asian TrueType fonts are installed, they will be located at:

/usr/lib/X11/fonts/TrueType/japanese.st/typefaces
/usr/lib/X11/fonts/TrueType/korean.st/typefaces
/usr/lib/X11/fonts/TrueType/chinese_s.st/typefaces

Each set is shipped with the text files "fonts.dir" and "fonts.dir.jre". HP-UX's SDK reads the index file "fonts.dir.jre" if it exists, otherwise it reads "fonts.dir". The Font IDs (xlfd) used in your font.properties files MUST correspond to the IDs shipped in fonts.dir.jre.

the hp.fontpath property

When a font is installed to a location outside of JAVA_HOME, Java finds the font using the Java Fontpath. Java reads fonts.dir.jre (or fonts.dir) found along Java Fontpath to register scalable fonts.

Java Fontpath may be defined using the "hp.fontpath" property in your locale-sensitive font.properties file. The Java Fontpath is formed by prepending the value of hp.fontpath to $JAVA_HOME/jre/lib/fonts. The default value of hp.fontpath is:

/usr/lib/X11/fonts/ms.st/typefaces:
/usr/lib/X11/fonts/type1.st/typefaces:
/usr/lib/X11/fonts/ttf.st/typefaces

Java Fontpath is NOT used to find bitmap fonts. Instead, bitmap fonts on HP-UX are found using the font path of the X Server (the X Fontpath).

bitmap vs. scalable fonts

Bitmap fonts are stored as such, but scalable fonts are stored as a description of the outline of the font. Scalable fonts are scaled by the X Server to any point size. TrueType is one format of a scalable font. (Type1 and F3 are two others.)

You can use the "xlsfonts" utility to test which X11 fonts are available on your machine.

The following is an example Font ID (xlfd) for 16- and 48-point sizes of the bitmap font "batang":

-hp-batang-medium-r-normal--16-160-75-75-c-160-ksc5601.1987-1
-hp-batang-medium-r-normal--48-160-75-75-c-160-ksc5601.1987-1

Scalable fonts can be recognized by the 0 values for the size fields in the xldf, as in this xlfd for "hybatang":

-hy-hybatang-medium-r-normal--0-0-0-0-m-0-ksc5601.1987-1

the JAVA_FONTS environment variable

When the JAVA_FONTS environment variable is set, Java Fontpath is completely overridden. JAVA_FONTS is to be used for testing only. If JAVA_FONTS is not set, hp.fontpath (from font.properties) is used to construct Java Fontpath, as defined in this document.

how the X font server affects font display

The X Font Server (xfs) daemon affects what scalable fonts are available on your machine. (The xlsfonts utility lists both locally installed bitmap fonts and scalable fonts available via xfs.)

AWT applications will fall back to bitmap fonts if scalable fonts are not available. If xfs is not running, your AWT applications will fall back to bitmap fonts.

controlling the X font server

HP recommends that xfs not be used with JDK Swing applications (see the previous section). However, if your site prefers to use the X Font Server, this section gives information on how to configure and start it.

xfs is configured by default using /etc/X11/fs/config. Keep in mind that some HPUX patches that install scalable fonts (for example, PHSS_25091 and PHSS_25092) may edit the xfs config file. This file includes a path used by xfs to find its fonts.

If you set RUN_X_FONT_SERVER in /etc/rc.config.d/xfs, xfs is started upon reboot and xfs is added to the font path. Alternatively you can use these two commands:

/usr/bin/X11/xfs -config /etc/X11/fs/config -port 7000 -daemon
xset +fp tcp/localhost:7000

Additionally, some HP previous SDK versions including 1.2.2.11, 1.3.0.x and 1.3.1.01, will start the font server when you execute a GUI application on a local display. See the "Starting the X Font Server" section in the release notes for those versions at: HP-UX Java™ Archived Releases Downloads and Documentation.

date/time methods - new defaults

Since SDK 1.2.2.09 and SDK 1.3.1, 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 Java returns, until the process is restarted.

If your application requires that Java immediately reflects such system time changes, 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.3.1.04, 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 you should be aware that using this option also turns off the SIGQUIT handler. Therefore you will not be able to get a Java stack trace.

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.

using JPDA

The JPDA architecture and components are documented at http://java.sun.com/products/jpda/ and http://java.sun.com/reference/docs/index.html. HP's SDK version 1.3.0.01 supports both the HotSpot and Classic VMs. The jdb for HP-UX is similar to the Solaris implementation. For usage information, see "Sun VM Invocation Options" at http://java.sun.com/products/jpda/doc/conninv.html.

manually launching the application VM (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 back end loaded. 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 (if any).

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

If you have one thread performing an accept or read on a socket, and try to close the socket to clean up resources, the default behavior is for the close() to block until the accept or read call completes. If you want to change this behavior, you should use the following Java command line option:

-XdoCloseWithReadPending

This option allows one thread to close a socket when there is an outstanding accept or read pending on the same socket from another thread.

With the -XdoCloseWithReadPending option, the socket close() call closes the socket and, in the context of the thread with the pending read or accept, a SocketException with the message "Socket closed" is thrown.

C and C++ libraries

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

CLASSPATH

CLASSPATH will be automatically set during installation. If you get the error "Unable to initialize threads: cannot find class java1.3.1/lang/Thread", your CLASSPATH environment variable may be incorrect.

See also http://java.sun.com/reference/docs/index.html.

compatibility with previous releases

Compatibility information is provided at: http://java.sun.com/j2se/1.3/compatibility.html.

JAR files

If you run an applet from a JAR file, the classes files should only be available in the JAR file, and the JAR file should not be in the class path.

web sites with additional information

The following websites have additional information:

Java Products and APIs: http://java.sun.com/products/

Java 2 Platform Standard Edition: http://java.sun.com/j2se/

Java 2 SDK version 1.3 features and tools: http://java.sun.com/reference/docs/index.html.

Java 2 SDK version 1.2 features and tools: http://java.sun.com/products/jdk/1.2/docs/index.html

Java 2 version 1.3 API Specification: http://java.sun.com/j2se/1.3/docs/api/index.html

Java 2 version 1.2 API Specification: http://java.sun.com/products/jdk/1.2/docs/api/index.html

Java 2 platforms and APIs - Authorized Books: http://developer.java.sun.com/developer/infodocs/#books

Java 2D: http://java.sun.com/products/java-media/2D/index.html

JavaBeans: http://java.sun.com/beans/docs/index.html

Java Code Conventions: http://java.sun.com/docs/codeconv/index.html.

Java Foundation Classes: http://java.sun.com/products/jfc/docs.html

Java IDL: http://java.sun.com/reference/docs/index.html

Java Language Specification: http://java.sun.com/docs/books/jls/html/index.html.

Java Security: http://java.sun.com/security/index.html

Java tutorial: http://java.sun.com/docs/books/tutorial/index.html

JDBC: http://java.sun.com/products/jdbc/index.html

JVMPI: http://java.sun.com/docs/index.html

Online training: http://developer.java.sun.com/developer/onlineTraining.

RMI: http://java.sun.com/products/jdk/rmi/index.html

RMI-IIOP: http://java.sun.com/docs/index.html

Swing Connection newsletter: http://java.sun.com/products/jfc/tsc/index.html

The Collections Framework: http://java.sun.com/reference/docs/index.html

Performance Tuning Java on HP-UX: Java™ Performance Tuning

problem fixes and known issues

Defects fixed in this release are shown below.

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

Information on JavaSoft 1.3 fixed bugs is available at http://java.sun.com/docs/index.html .

problem fixes

The 1.3.1.04 release includes enhancements and fixes from 1.3.1.02, as well as the following enhancement:

JAGad94821 HP SR 8606225748 (DUP: JAGae01390 HP SR 8606232154) Enhancement Request to add special function for accept errno.

known issues

Below is some information on a few problem topics.

missing property files for Japanese printing

Beginning with the SDK 1.3 for HP-UX, postscript printing is supported. The property files necessary for printing Japanese fonts are shipped as psfont.properties.ja and psfontj2d.properties.ja.

Asian TrueType fonts, swing, and xfs

For Korean and Simplified Chinese TrueType Asian fonts, when xfs is serving your DISPLAY, some Asian TrueType fonts may not be displayed or are displayed badly in your Swing application.

This problem shows up in the following conditions:
  • HP JDK 1.3.1
  • Swing components
  • xfs running (use xset -q to see status)
  • locale (LANG) is Korean (ko_KR.eucKR) or simple Chinese (zh_CN.hp15CN)

To work around this problem, run under a DISPLAY without xfs. (Use the command "xset -fp" to remove xfs from your X Font Path.)

using linker option +noenvvar on Itanimum 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 option +noenvvar on Itanium or PA-64 systems. The defect does not exist on 32-bit systems. It is expected to be fixed in a future release.

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.

legal notices

Copyright © Hewlett-Packard Company 2003

Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.