IBM SDK for Linux platforms, Java 2 Technology Edition, Version 1.4.2

User Guide


Copyright information

Note: Before using this information and the product it supports, be sure to read the general information under Notices.

This edition of the User Guide applies to these platforms as they become available:

and to all subsequent releases, modifications, and service refreshes, until otherwise indicated in new editions.

© Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.

© Copyright International Business Machines Corporation, 1999, 2008. All rights reserved.

U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Preface

This User Guide describes the IBM® SDK (Software Developer Kit) for all Linux® platforms. Platform-specific information is clearly marked as such. Ensure that you are reading material relevant to your platform. In particular, Web Start and the Plug-in are specific to the 32-bit SDK for Linux on Intel® architecture.

The IBM SDK for Linux is a development environment for writing and running applets and applications that conform to the Sun Microsystems Java™ 1.4 Core Application Program Interface (API).

Read this User Guide if you want to use the SDK to write Sun Microsystems Java applications and applets. The User Guide provides general information about the SDK and specific information about any differences in the IBM implementation of the SDK. Read this User Guide in conjunction with the more extensive documentation on the Sun Web site: http://java.sun.com.

The IBM JVM Diagnostics Guide provides more detailed information about the IBM JVM.

For the list of distributions against which the SDK for Linux has been tested, see: http://www.ibm.com/developerworks/java/jdk/linux/tested.html

From Version 1.4.2, Service Refresh 8, on Linux IA32 only, these Virtualized Environments are supported: VMWare, Xen, and MS Virtual Server.

Note that the Runtime Environment for Linux is a subset of the SDK and enables you only to run Java applications. If you have installed the SDK, the Runtime Environment is included.

The terms "Runtime Environment" and "Java Virtual Machine" are used interchangeably throughout this User Guide.

Technical changes made to this User Guide for Version 1.4.2, other than minor or obvious ones such as updating "1.4.1" to "1.4.2", are indicated in red when viewing in HTML or in a color-printed copy and by vertical bars to the left of the changes.

Contents

Copyright information
Preface
Overview
Conventions
Version compatibility
Upgrading the SDK
Information for Linux PPC64 users
Contents of the SDK
Runtime Environment
SDK tools
Tools not included in the IBM SDK
Using a JPackage compatible format
Installing on Red Hat Enterprise Linux (RHEL) 3 (zSeries only)
Installing on Red Hat Enterprise Linux (RHEL) 4 or 5
Running Java with SELinux on RHEL 5
Configuring the SDK for Linux
Uninstalling the SDK for Linux
Uninstalling the installable Red Hat Package Manager (RPM) package
Uninstalling the compressed Tape Archive (TAR) package
Using the SDK
Obtaining the IBM build and version number
The just-in-time (JIT) compiler
PATH considerations
CLASSPATH considerations
The -jar <jarfile> option
Determining whether your application is running on a 32-bit or 64-bit JVM
Debugging Java applications
Java Debugger (JDB)
Working with applets
Running applets with the Applet Viewer
Debugging applets with the Applet Viewer
Working with floating stacks
Switching the input method in DBCS languages
CORBA support
Support for GIOP 1.2
Support for Portable Interceptors
Support for Interoperable Naming Service
System properties for tracing the ORB
System properties for tuning the ORB
Java 2 security permissions for the ORB
ORB implementation classes
RMI over IIOP
Implementing the Connection Handler Pool for RMI
(Linux IA 32-bit only) Using the Java Plug-in
Installing and configuring the Java Plug-in for Mozilla
Installing and configuring the Java Plug-in for Firefox
Installing and configuring the Java Plug-in for Netscape
Locating JVM libraries for the browser Plug-in
Common Document Object Model (DOM) support
Enhanced BigDecimal
Enhanced BiDirectional support
Euro symbol support
Support for new locales
Transforming XML documents
Using an older version of Xerces or Xalan
Shipping Java applications
Service and support for independent software vendors
Accessibility
iKeyman accessibility
Large Swing menu accessibility
Keyboard traversal of JComboBox components in Swing
(Linux IA 32-bit only) Web Start accessibility
Troubleshooting
Reporting problems
Known limitations
Limitations that apply to all Linux platforms except where indicated
Linux IA 32-bit limitations
Linux PPC 32-bit and 64-bit limitations
Linux PPC 32-bit limitations
Linux PPC 64-bit limitations
Linux zSeries 64-bit limitations
Linux zSeries 32-bit and 64-bit limitations
Notices
Trademarks

Overview

The SDK for Linux is a development environment for writing applets and applications that conform to Sun's Java 1.4.2 Core Application Programming Interface (API).

Conventions

Throughout this User Guide the default installation directory of the SDK is referred to as /opt/IBMJava2-142/. The platforms listed below have the following default installation directories; use the appropriate directory for your platform when you see /opt/IBMJava2-142/:

Version compatibility

In general, any applet or application that runs in Version 1.1.8, 1.2.2 or 1.3.1 of the SDK for Linux should run correctly in this version. Applets that depend on Sun's Java 1.4.2 APIs work only on browsers that support Java 1.4.2 APIs.

There is a possible compatibility consideration if you are using the SDK as part of another product, for example WAS, and you upgrade from a previous level of the SDK, perhaps v1.4.1, to v1.4.2. If you serialized the classes with a previous level of the SDK, the classes might not be compatible. However, within v1.4.2, classes are compatible from service refresh to service refresh.

There is no guarantee that 1.4.2-compiled classes work on pre-1.4.0 SDK releases.

To read Sun's documentation on compatibility, search for it on the Sun Web site at http://java.sun.com.

Upgrading the SDK

If you are upgrading the SDK from a previous release, back up all the configuration files and security policy files before you go ahead with the upgrade.

After the upgrade, you might have to restore or reconfigure these files because they might have been overwritten during the upgrade process. Check the syntax of the new files before restoring the original files because the format or options for the files might have changed.

Information for Linux PPC64 users

Unlike PPC32, the SDK v1.4.2 is not supported on SLES 8.

Contents of the SDK

The SDK contains several development tools and a Java Runtime Environment (JRE). This section describes the contents of the SDK tools and the Runtime Environment.

Applications written entirely in Java should have no dependencies on the IBM SDK's directory structure (or files in those directories). Any dependency on the SDK's directory structure (or the files in those directories) could result in application portability problems.

Runtime Environment

Earlier versions of the IBM JRE shipped with a file called rt.jar in the jre/lib directory. From Java V1.4 onwards, this file has been replaced by multiple JAR files that reside in the jre/lib directory. Examples of these JAR files are:

This change should be completely transparent to the application. If an error is received about a missing rt.jar file in CLASSPATH, this error points to a setting that was used in Java V1.1.8 and was made obsolete in subsequent versions of Java. You can safely remove references to rt.jar in CLASSPATH.

SDK tools

Note: The User Guides and the accompanying license, copyright files, and demo directory are the only documentation that is included in this SDK for Linux. You can view Sun's software documentation by visiting the Sun Web site, or you can download Sun's Software documentation package from the Sun Web site: http://java.sun.com.

Tools not included in the IBM SDK

The following tools are not included in the IBM SDK:

Using a JPackage compatible format

From Version 1.4.2 Service Refresh 7, the IBM SDK for Java, v1.4.2 is also available in a JPackage compatible format.

To simplify managing the SDK, the various components of it are now available as separate RPMs: the base Java Runtime Environment, Development Kit, Plug-in, JDBC, Demo, Sound, Source, and Fonts. "jpackage-utils" RPM (downloadable from http://jpackage.org), which allows managing multiple Java RPMs on a system, is a prerequisite for the IBM SDKs. For more information about the JPackage specification, see http://jpackage.org.

If you install the SDK using JPackage, it will not be installed in the default location. See the "Directory Structure" section of the JPackage Java™ infrastructure design and packaging policy for details about the default JPackage installation location: http://www.jpackage.org/cgi-bin/viewvc.cgi/src/jpackage-utils/doc/jpackage-1.5-policy.xhtml?root=jpackage&view=co.

JPackage is not supported on SLES9 or SLES10 platforms.

Installing on Red Hat Enterprise Linux (RHEL) 3 (zSeries only)

The zSeries 31-bit and 64-bit SDKs depend on shared libraries that are not installed by default for Red Hat Enterprise Linux (RHEL) 3.0.

The RPM that contains these libraries is:

To include this library during RHEL 3 installation:

  1. When you reach the Package Defaults screen, select Customize the set of packages to be installed.
  2. At the Package Group Selection screen, under Development Options, select Legacy Software Development.

Installing on Red Hat Enterprise Linux (RHEL) 4 or 5

For RHEL 4 and 5, the SDK depends on shared libraries that are not installed by default.

In RHEL 4, the RPMs that contain these libraries are:

To include these libraries during RHEL 4 installation:

  1. When you reach the Package Defaults screen, select Customize the set of packages to be installed.
  2. At the Package Group Selection screen, under X Windows System, choose Details and make sure that you have selected xorg-x11-deprecated-libs.
  3. Under the Development options, select Legacy Software Development.

In RHEL 5, the RPMs that contain these libraries are:

To include these libraries during RHEL 5 installation:

  1. At the software selection screen, select Customize now.
  2. On the next screen, in the left-hand panel, select Base System; in the right-hand panel, select Legacy Software Support. These selections will install the compat-libstdc++ packages.
  3. The libXp package is required but is not available to select for installation from the install GUI. When installation is complete, open a shell, locate the libXp package on your Red Hat installation media, and install it. For example, to install on a 32-bit Intel platform:
    rpm -i /media/cdrom/Server/libXp-1.0.0-8.i386.rpm

Running Java with SELinux on RHEL 5

To run the IBM SDK for Java on Red Hat Enterprise Linux Version 5 with SELinux enabled, Java must be installed in the default directory. If Java is not installed in the default directory, enter:

chcon -R -t texrel_shlib_t path_of_sdk

(Where path_of_sdk is the path where Java is installed).

For more information about SELinux, see http://www.redhat.com/magazine/006apr05/features/selinux/

Configuring the SDK for Linux

After you install the SDK for Linux, edit your shell login script and add this directory to your PATH statement:

/opt/IBMJava2-142/bin

If you installed the SDK for Linux in a different directory, replace /opt/IBMJava2-142/ with the directory in which you installed the SDK .

Note:
(For Linux IA 32-bit Chinese users only) Because of inconsistencies in the font encodings on Red Hat Advanced Server, when you install for an environment in which you want Chinese to be the default language, it is better to install with a default language of English and then change to Chinese after the installation is complete. Otherwise, you might find that the Chinese fonts do not display.

Uninstalling the SDK for Linux

The way you remove the SDK depends on whether you installed the installable Red Hat Package Manager (RPM) package or the compressed Tape Archive (TAR) package. See Uninstalling the installable Red Hat Package Manager (RPM) package or Uninstalling the compressed Tape Archive (TAR) package for instructions.


Uninstalling the installable Red Hat Package Manager (RPM) package

To uninstall the SDK for Linux if you installed the installable RPM package:

  1. At a shell script, type: (Where "x.x" indicates the Service Refresh level: "5.0", for example.)

    As an alternative to typing at a shell script, you can use a graphical tool such as kpackage or yast2


  2. Remove from your PATH statement the directory in which you installed the SDK .
  3. (Linux IA 32-bit only) If you installed the Java Plug-in, remove the Java Plug-in files from the web browser directory.

Uninstalling the compressed Tape Archive (TAR) package

To uninstall the SDK for Linux if you installed the compressed TAR package:

  1. Remove the SDK files from the directory in which you installed the SDK.
  2. Remove from your PATH statement the directory in which you installed the SDK.
  3. (Linux IA 32-bit only) If you installed the Java Plug-in, remove the Java Plug-in files from the web browser directory.

Using the SDK

The Java tools are programs that are run from a shell prompt; they do not have a Graphical User Interface (GUI).

The following sections give information about using the SDK for Linux.


Obtaining the IBM build and version number

To obtain the IBM build and version number, at a shell prompt type:

java -version

The just-in-time (JIT) compiler

The just-in-time (JIT) compiler (libjitc.so) dynamically generates machine code for frequently used bytecode sequences in Java applications and applets while they are running.

The SDK for Linux includes the JIT (libjitc.so), which is enabled by default. You can disable the JIT to help isolate a problem with a Java application, an applet, or the compiler itself.

To disable the JIT, at a shell prompt in the window where you will run the application, type:

    export JAVA_COMPILER=NONE

To enable the JIT, type at a shell prompt:

    export JAVA_COMPILER=jitc

To verify whether or not the JIT is enabled, type at a shell prompt:

    java -version

If the JIT is in use, a message is displayed that includes:

(JIT enabled: jitc)

If the JIT is not in use, a message is displayed that includes:

(JIT disabled)

PATH considerations

After installing the SDK for Linux, you can run a tool by typing its name at a shell prompt with a filename as an argument.

You can specify the path to a tool by typing the path before the name of the tool each time. For example, if the SDK for Linux software is installed in /opt/IBMJava2-142/bin, you can compile a file named myfile.java by typing the following at a shell prompt:

  /opt/IBMJava2-142/bin/javac myfile.java

To avoid typing the full path each time:

  1. Add the following directories to the PATH environment variable:
  2. Compile the file with the javac tool. For example, compile the file myfile.java by typing the following at a shell prompt:

      javac myfile.java

    The PATH environment variable enables Linux to find executable files, such as javac, java, and javadoc, from any current directory. To display the current value of your PATH, type the following at a shell prompt:

      echo $PATH

To change the PATH environment variable:

  1. Edit your shell startup file (usually .bash_profile, .profile, or .login depending on the shell) and add the absolute paths to the PATH environment variable as follows:
  2. Log on again or run the updated shell script to activate the new PATH setting.

CLASSPATH considerations

The CLASSPATH tells the SDK for Linux tools, such as java, javac, and javadoc, where to find the Java class libraries. If you keep the bin and lib directories under the same parent directory level, the executable files can find the classes.

You need to set the CLASSPATH explicitly only if one of the following applies:

To display the current value of your CLASSPATH, type the following at a shell prompt:

  echo $CLASSPATH

If you plan to develop and run applications that use different runtime environments, including other versions that you have installed separately, you must set the CLASSPATH (and PATH) explicitly for each application. If you plan to run multiple applications simultaneously and use different runtime environments, be sure that each application is run in its own shell.

If you want to run only one version of Java at a time, you can use a shell script to switch between the different runtime environments.

The -jar <jarfile> option

If the -jar option is specified, the named .jar file contains class and resource files for the application, with the startup class indicated by the Main-Class manifest header.

From Version 1.4.2 Service Refresh 4, using the -jar command-line option will make the .jar file the source of all user classes; all other user CLASSPATH settings will be ignored. This change was made to ensure compatibility with the Sun JVM.

To be able to use a .jar file with other CLASSPATH settings, add the .jar file to the CLASSPATH as above, and specify the startup class manually.

Determining whether your application is running on a 32-bit or 64-bit JVM

Some Java applications must be able to determine whether they are running on a 32-bit JVM or on a 64-bit JVM. The system property com.ibm.vm.bitmode allows you to determine the mode in which your JVM is running. It takes the following values:

You can set the com.ibm.vm.bitmode from within your application code using the call:

System.setProperty("com.ibm.vm.bitmode", "64");

Otherwise, you can set the property when you start the JVM:

java -Dcom.ibm.vm.bitmode=64 MyApplication

Debugging Java applications

To debug Java programs, you can use the Java Debugger (JDB) application. This debugger communicates with the Java Platform Debugger Architecture (JPDA) that is provided by the SDK for Linux.

Sun's documentation for using jdb assumes that the JVM that is to be debugged is a HotSpot JVM. However, IBM implementations of the Java Virtual Machine (JVM) always run as a Classic JVM. When using IBM's jdb therefore, always assume that the -classic option has been implicitly specified and follow the guidance for debugging a Classic JVM. Specify the -Xnoagent option, unless the agent class is required in which case specify the -Xbootclasspath option to locate it explicitly.

Java Debugger (JDB)

A Java Debugger is included in the SDK for Linux. The JDB application runs the class com.sun.tools.example.debug.tty.TTY. The Java Virtual Machine Debugging Interface (JVMDI) is not supported.

The new JDB application uses the JPDA and enables the jdb example tool to attach to a listening Virtual Machine (VM) or to start a new debug session. It is invoked by the jdb command and can be used in the same way as the oldjdb was.

You can use the JDB application to debug remote Java applications, including Java applications that are running on remote machines over a TCP/IP link. To debug a remote Java program, start the java program as follows:

java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,
suspend=y -Djava.compiler=NONE<other args> <myapp>
 <myapp class args>

The port on which the JPDA is listening is displayed. At the remote debugging machine, type:

jdb -attach <machine name or ip address>:<port>

When you launch a debug session using the dt_socket transport, be sure that the specified ports are free to use.

For more information on JDB and JPDA and their usage see the following Web sites:


Working with applets

Running applets with the Applet Viewer

With the Applet Viewer, you can run one or more applets that are called by reference in a Web page (HTML file) by using the APPLET tag. The Applet Viewer finds the APPLET tags in the HTML file and runs the applets, in separate windows, as specified by the tags.

Because the Applet Viewer is for viewing applets, it cannot display a whole Web page that contains many HTML tags. It parses only the APPLET tags and no other HTML on the Web page.

To run an applet with the Applet Viewer, type the following at a shell prompt:

   appletviewer name

where name is one of the following:

For example, to invoke the Applet Viewer on an HTML file that calls an applet, type at a shell prompt:

  appletviewer $HOME/filename.html

where filename is the name of the HTML file.

For example, http://java.sun.com/applets/NervousText/example1.html is the URL of a Web page that calls an applet. To invoke the Applet Viewer on this Web page, type at a shell prompt:

appletviewer http://java.sun.com/applets/NervousText/example1.html


The Applet Viewer does not recognize the charset attribute of the <META> tag. If the file that appletviewer loads is not encoded as the system default, an I/O exception might occur. To avoid the exception, use the -encoding option when you run appletviewer. For example:

appletviewer -encoding JISAutoDetect sample.html

Debugging applets with the Applet Viewer

You can debug applets by using the -debug option of the Applet Viewer. When debugging applets, you are advised to invoke the Applet Viewer from the directory that contains the HTML file that calls the applet. For example:

     cd demo/applets/TicTacToe
     ../../bin/appletviewer -debug example1.html

You can find documentation about the debugger and its API at the Sun Web site: http://java.sun.com.


Working with floating stacks

On a nonfloating stack Linux system, regardless of what is set for -Xss, a minimum native stack size of 256 KB for each thread is provided. On a floating stack Linux system, the -Xss values are honored. Therefore, if you are migrating from a non floating stack Linux system, you must ensure that any -Xss values are large enough and are not relying on a minimum of 256 KB.

(Linux IA 32-bit only) Particular Linux distributions - Red Hat, for example - have enabled a GLIBC feature called 'floating stacks'. Because of Linux kernel limitations, the JVM does not run on SMP hardware with floating stacks enabled if the kernel level is less than 2.4.10. In this environment, floating stacks must be disabled before the JVM, or any application that starts the JVM, is started. On Red Hat, use this command to disable floating stacks by exporting an environment variable:

export LD_ASSUME_KERNEL=2.2.5

Switching the input method in DBCS languages

On double-byte character set (DBCS) systems, if you want to switch the input method, you should use java.util.prefs.Preferences class instead of IBMJAVA_INPUTMETHOD_SWITCHKEY and IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS environment variables. See Sun's Input Method Framework Specification in detail.

CORBA support

The Java 2 Platform, Standard Edition (J2SE) supports, at a minimum, the specifications that are defined in the Official Specifications for CORBA support in J2SE V1.4 at http://java.sun.com/j2se/1.4.2/docs/api/org/omg/CORBA/doc-files/compliance.html. In some cases, the IBM J2SE ORB supports more recent versions of the specifications.

Support for GIOP 1.2

This SDK supports all versions of GIOP, as defined by chapters 13 and 15 of the CORBA 2.3.1 specification, OMG document formal/99-10-07, which you can obtain from:

http://www.omg.org/cgi-bin/doc?formal/99-10-07

Bidirectional GIOP is not supported.

Support for Portable Interceptors

This SDK supports Portable Interceptors, as defined by the OMG in the document ptc/01-03-04, which you can obtain from:

http://www.omg.org/cgi-bin/doc?ptc/01-03-04

Portable Interceptors are hooks into the ORB through which ORB services can intercept the normal flow of execution of the ORB.

Support for Interoperable Naming Service

This SDK supports the Interoperable Naming Service, as defined by the OMG in the document ptc/00-08-07, which you can obtain from:

http://www.omg.org/cgi-bin/doc?ptc/00-08-07

The default port that is used by the Transient Name Server (the tnameserv command), when no ORBInitialPort parameter is given, has changed from 900 to 2809, which is the port number that is registered with the IANA (Internet Assigned Number Authority) for a CORBA Naming Service. Programs that depend on this default might have to be updated to work with this version.

The initial context that is returned from the Transient Name Server is now an org.omg.CosNaming.NamingContextExt. Existing programs that narrow the reference to a context org.omg.CosNaming.NamingContext still work, and do not need to be recompiled.

The ORB supports the -ORBInitRef and -ORBDefaultInitRef parameters that are defined by the Interoperable Naming Service specification, and the ORB::string_to_object operation now supports the ObjectURL string formats (corbaloc: and corbaname:) that are defined by the Interoperable Naming Service specification.

The OMG specifies a method ORB::register_initial_reference to register a service with the Interoperable Naming Service. However, this method is not available in the Sun Java Core API at Version 1.4.2. Programs that need to register a service in the current version must invoke this method on the IBM internal ORB implementation class. For example, to register a service "MyService":

((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MyService",
serviceRef); 

where orb is an instance of org.omg.CORBA.ORB, which is returned from ORB.init(), and serviceRef is a CORBA Object, which is connected to the ORB.This mechanism is an interim one, and is not compatible with future versions or portable to non-IBM ORBs.

System properties for tracing the ORB

A runtime debug feature provides improved serviceability. You might find it useful for problem diagnosis or it might be requested by IBM service personnel. Tracing is controlled by three system properties.

For example, to trace events and formatted GIOP messages, type:

 java -Dcom.ibm.CORBA.Debug=true  
		-Dcom.ibm.CORBA.CommTrace=true myapp   

Do not turn on tracing for normal operation, because it might cause performance degradation. Even if you have switched off tracing, FFDC (First Failure Data Capture) is still working, so that only serious errors are reported. If a debug output file is generated, examine it to check on the problem. For example, the server might have stopped without performing an ORB.shutdown().

The content and format of the trace output might vary from version to version.

System properties for tuning the ORB

The following properties help you to tune the ORB:

Java 2 security permissions for the ORB

When running with a Java 2 SecurityManager, invocation of some methods in the CORBA API classes might cause permission checks to be made, which might result in a SecurityException. Affected methods include the following:

Table 1. Methods affected when running with Java 2 SecurityManager
Class/Interface Method Required permission
org.omg.CORBA.ORB

init

java.net.SocketPermission resolve

org.omg.CORBA.ORB

connect

java.net.SocketPermission listen

org.omg.CORBA.ORB

resolve_initial_references

java.net.SocketPermission connect

org.omg.CORBA.
portable.ObjectImpl

_is_a

java.net.SocketPermission connect

org.omg.CORBA.
portable.ObjectImpl

_non_existent

java.net.SocketPermission connect

org.omg.CORBA.
portable.ObjectImpl

OutputStream _request (String, boolean)

java.net.SocketPermission connect

org.omg.CORBA.
portable.ObjectImpl

_get_interface_def

java.net.SocketPermission connect

org.omg.CORBA.
Request

invoke

java.net.SocketPermission connect

org.omg.CORBA.
Request

send_deferred

java.net.SocketPermission connect

org.omg.CORBA.
Request

send_oneway

java.net.SocketPermission connect

javax.rmi.
PortableRemoteObject

narrow

java.net.SocketPermission connect

If your program uses any of these methods, ensure that it is granted the necessary permissions.

ORB implementation classes

The ORB implementation classes in this release are:

These are the default values, and you are advised not to set these properties or refer to the implementation classes directly. For portability, make references only to the CORBA API classes, and not to the implementation. These values might be changed in future releases.

RMI over IIOP

Java Remote Method Invocation (RMI) provides a simple mechanism to do distributed Java programming. RMI over IIOP (RMI-IIOP) uses the Common Object Request Broker Architecture (CORBA) standard Internet Inter-ORB Protocol (IIOP protocol) to extend the base Java RMI to perform communication. This allows direct interaction with any other CORBA Object Request Brokers (ORBs), whether they were implemented in Java or another programming language.

The following documentation is available:

http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf

Implementing the Connection Handler Pool for RMI

Thread pooling for RMI Connection Handlers is not enabled by default.

To enable the connection pooling implemented at the RMI TCPTransport level, set the option

-Dsun.rmi.transport.tcp.connectionPool=true (or any non-null value) 

This version of the Runtime Environment does not have any setting that you can use to limit the number of threads in the connection pool.

(Linux IA 32-bit only) Using the Java Plug-in

The Java Plug-in is a Web browser plug-in. If you use the Java Plug-in, you can bypass your Web browser's default JVM and use instead a Runtime Environment for running applets or beans in the browser.

The Java Plug-in is documented by Sun at: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/.

The Java Plug-in is supported on Netscape 4, Netscape 6, Mozilla 1.4, 1.6, and 1.8, and Firefox 2.0 and 3.0, as provided by default with your distribution.

Installing and configuring the Java Plug-in for Mozilla

Mozilla 1.4 and later are compiled with gcc 3.x. So a gcc 3.x compatible version of the Java plugin must be used. From v1.4.2 onwards, IBM SDK for Linux is being shipped with an additional gcc3 compiled plug-in library (libjavaplugin_ojigcc3.so), to make the plug-in compatible with the later updates of Mozilla browser.

To make the Java Plug-in available to all users:

  1. Log in as root.
  2. Change to your Mozilla plug-ins directory (this could be different on some Linux distributions) .
    cd /usr/local/mozilla/plugins/
  3. Create a symbolic link to libjavaplugin_ojigcc3.so.
    ln -s /opt/IBMJava2-142/jre/bin/libjavaplugin_ojigcc3.so.
Note:
libjavaplugin_ojigcc3.so should be symbolically linked instead of copied; otherwise, it will not be able to find the location of the JVM.

For earlier versions of Mozilla (below 1.4),

To make the Java Plug-in available to all users:

  1. Log in as root.
  2. Change to your Mozilla plug-ins directory (this could be different on some Linux distributions).
    cd /usr/local/mozilla/plugins/
  3. Create a symbolic link to libjavaplugin_oji.so.
    ln -s /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so.
Note:
libjavaplugin_oji.so must be symbolically linked instead of copied; otherwise, it will not be able to find the location of the JVM.

Installing and configuring the Java Plug-in for Firefox

To make the Java Plug-in available to all users:

  1. Log in as root.
  2. Change to your Firefox plug-ins directory (this could be different on some Linux distributions) .
    cd /usr/local/mozilla-firefox/plugins/
  3. Create a symbolic link to libjavaplugin_ojigcc3.so.
    ln -s /opt/IBMJava2-142/jre/bin/libjavaplugin_ojigcc3.so.
Note:
libjavaplugin_ojigcc3.so must be symbolically linked instead of copied; otherwise, it will not be able to find the location of the JVM.

Installing and configuring the Java Plug-in for Netscape

To install and configure the Java Plug-in for Netscape 6, make a symbolic link from the library file /opt/IBMJava2-142/jre/bin/javaplugin_oji.so to your browser's plugins directory (/browser-install-path/plugins).

  1. Log in as root.
  2. Change to your Netscape plugins directory (this could be different on some Linux distributions).
    cd /usr/local/netscape/plugins/
  3. Put a symbolic link to the javaplugin_oji.so into the plugin directory.
    ln -s /opt/IBMJava2-142/jre/bin/javaplugin_oji.so .
Note:
javaplugin_oji.so should be symbolically linked instead of copied; otherwise, it will not be able to find the location of the JVM.

To install and configure the Java Plug-in for Netscape 4, make a symbolic link from the library file /opt/IBMJava2-142/jre/bin/javaplugin.so to your browser's plugins directory (/browser-install-path/plugins).

To make the Java Plug-in available to the current user:

  1. Create a directory called plugins under the $HOME/.netscape directory if it does not already exist.
  2. Make a symbolic link from the library file /opt/IBMJava2-142/jre/bin/javaplugin.so to /$HOME/.netscape/plugins.

To make the Java Plug-in available to all users:

  1. Log in as root.
  2. Put a symbolic link to the library file /opt/IBMJava2-142/jre/bin/javaplugin.so into the plugin directory (usually /usr/local/netscape/plugins/, although this might vary on some distributions).
    ln -s /opt/IBMJava2-142/jre/bin/javaplugin.so \
       /usr/local/netscape/plugins/
Note:
javaplugin.so should be symbolically linked instead of copied; otherwise, it will not be able to find the location of the JVM.

Locating JVM libraries for the browser Plug-in

From Java 1.4.2 Service Refresh 6, you no longer need to set the LD_LIBRARY_PATH environment variable to use the browser Plug-in.

Common Document Object Model (DOM) support

Because of limitations in particular browsers, you might not be able to implement all the functions of the org.w3c.dom.html package.

Enhanced BigDecimal

The SDK includes an enhanced BigDecimal class (com.ibm.math.BigDecimal) for Java programming. It is provided (with its supporting class MathContext) as an alternative to the java.math.BigDecimal class.

If you are using the java.math.BigDecimal class in a Java program, and you want to access the enhanced BigDecimal class, you must change the import statement in your source code as shown:

Change import java.math.*; to import com.ibm.math.*;

You do not need to change any other code.

Enhanced BiDirectional support

The IBM SDK includes enhanced BiDirectional support. For more information, see http://www.ibm.com/developerworks/java/jdk/bidirectional/index.html.

Euro symbol support

The IBM SDK sets the Euro as the default currency for those countries in the European Monetary Union (EMU) for dates on or after 1 January, 2002. From 1 January, 2008, Cyprus and Malta also have the Euro as the default currency.

To use the old national currency, specify -Duser.variant=PREEURO on the Java command line.

If you are running the UK, Denmark, or Sweden locales and want to use the Euro, specify -Duser.variant=EURO on the Java command line.

In V1.4.2 SR6, the default for the Slovenian locale is set to the Euro. If you install SR6 before 1 January 2007, you might want to change the currency to the Tolar.

Support for new locales

The IBM SDK for Linux, v1.4.2 (Linux IA 32-bit and zSeries only) supports the following new locales:

The fonts from these locales do not work on AWT components.

Note that even though the SDK supports these locales, the Linux operating system does not have the fonts for them.

From Service Refresh 8, the following new locale is added: Serbia (SE), with these three new locale variations:

The existing locale variations for the former Serbia and Montenegro are maintained as before. The 3-letter country code SRB, corresponding to the 2-letter country code RC, is also added.

Transforming XML documents

The IBM SDK contains the XSLT4J 2.6 processor and the XML4J 4.3 parser that conform to the JAXP 1.2 specification. These tools allow you to parse and transform XML documents independently from any given XML processing implementation. By using "Factory Finders" to locate the SAXParserFactory, DocumentBuilderFactory and TransformerFactory implementations, your application can swap between different implementations without having to change any code.

The XSLT4J 2.6 processor allows you to choose between the original XSLT Interpretive processor or the new XSLT Compiling processor. The Interpretive processor is designed for tooling and debugging environments and supports the XSLT extension functions that are not supported by the XSLT Compiling processor. The XSLT Compiling processor is designed for high performance runtime environments; it generates a transformation engine, or translet, from an XSL stylesheet. This approach separates the interpretation of stylesheet instructions from their runtime application to XML data.

The XSLT Interpretive processor is the default processor. To select the XSLT Compiling processor you can:

To implement properties in the jaxp.properties file, copy jaxp.properties.sample to jaxp.properties in /opt/IBMJava2-142/jre/lib. This file also contains full details about the procedure used to determine which implementations to use for the TransformerFactory, SAXParserFactory, and the DocumentBuilderFactory.

To improve performance when you transform a StreamSource object with the XSLT Compiling processor, specify the com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager class as the provider of the service org.apache.xalan.xsltc.dom.XSLTCDTMManager. To determine the service provider, try each step until you find org.apache.xalan.xsltc.dom.XSLTCDTMManager:

  1. Check the setting of the system property org.apache.xalan.xsltc.dom.XSLTCDTMManager.
  2. Check the value of the property org.apache.xalan.xsltc.dom.XSLTCDTMManager in the file /opt/IBMJava2-142/lib/xalan.properties.
  3. Check the contents of the file META-INF/services/org.apache.xalan.xsltc.dom.XSLTCDTMManager for a class name.
  4. Use the default service provider, org.apache.xalan.xsltc.dom.XSLTCDTMManager.

The XSLT Compiling processor detects the service provider for the org.apache.xalan.xsltc.dom.XSLTCDTMManager service when a javax.xml.transform.TransformerFactory object is created. Any javax.xml.transform.Transformer or javax.xml.transform.sax.TransformerHandler objects that are created by using that TransformerFactory object will use the same service provider. You can change service providers only by modifying one of the settings described above and then creating a new TransformerFactory object.

Using an older version of Xerces or Xalan

If you are using an older version of Tomcat, this limitation might apply.

If you are using an older version of Xerces or Xalan in the endorsed override, you might get a null pointer exception when you start up your application. This exception occurs because these older versions do not handle the jaxp.properties file correctly.

To avoid this situation, use one of the following workarounds:

Shipping Java applications

A Java application, unlike a Java applet, cannot rely on a Web browser for installation and runtime services. When you ship a Java application, your software package probably consists of the following parts:

To run your application, a user needs the Runtime Environment for Linux. The SDK for Linux software contains a Runtime Environment. However, you cannot assume that your users have the SDK for Linux software installed.

Your SDK for Linux software license does not allow you to redistribute any of the SDK's files with your application. You should ensure that a licensed version of the SDK for Linux is installed on the target machine.

Service and support for independent software vendors

If you are entitled to services for the Program code pursuant to the IBM Solutions Developer Program, contact the IBM Solutions Developer Program through your normal method of access or on the Web at: http://www.developer.ibm.com.

If you have purchased a service contract (that is, IBM's Personal Systems Support Line or equivalent service by country), the terms and conditions of that service contract determine what services, if any, you are entitled to receive with respect to the Program.

Accessibility

The User Guides that are supplied with this SDK and the Runtime Environment have been tested by using screen readers. You can use a screen reader such as the Home Page Reader or the JAWS screen reader with these User Guides.

To change the font sizes in the User Guides, use the function that is supplied with your browser, usually found under the View menu option.

For users who require keyboard navigation, a description of useful keystrokes for Swing applications is in "Swing Component Keystroke Assignments" at http://java.sun.com/j2se/1.4/docs/api/javax/swing/doc-files/Key-Index.html

iKeyman accessibility

The iKeyman tool has a GUI only; however, the IBM SDK for Linux, v1.4.2 provides the command-line tool IKEYCMD, which has the same functions that iKeyman has. IKEYCMD allows you to manage keys, certificates, and certificate requests. You can call IKEYCMD from native shell scripts and from programs that are to be used when applications need to add custom interfaces to certificate and key management tasks. IKEYCMD can create key database files for all the types that iKeyman currently supports. IKEYCMD can also create certificate requests, import CA signed certificates, and manage self-signed certificates.

To run an IKEYCMD command, enter:

java [-Dikeycmd.properties=<properties file>]com.ibm.gsk.ikeyman.ikeycmd
<object><action>[options]

where:

<object>
is one of the following:
-keydb
Actions that are taken on the key database (either a CMS key database file, a WebDB keyring file, or SSLight class)
-version
Displays version information for IKEYCMD
<action>
The specific action that is to be taken on the object. This action is one of the following:
-cert
Actions that are to be taken on a certificate
-certreq
Actions that are to be taken on a certificate request
-Dikeycmd.properties
Specifies the name of an optional properties file to use for this Java invocation. A default properties file, ikeycmd.properties, is provided as a sample file that can be changed and used by any Java application.
-help
Displays help for the IKEYCMD invocations.
Note:
The object and action keywords are positional and must be in the specified sequence. However, options are not positional and can be in any sequence, provided that they are specified as an option and operand pair.

Large Swing menu accessibility

If you have a Swing JMenu that has more entries than can be displayed on the screen, you can navigate through the menu items by using the down or up arrow keys.

Keyboard traversal of JComboBox components in Swing

If you traverse the drop-down list of a JComboBox component with the cursor keys, the button or editable field of the combo box does not change value until an item is selected. This is the desired behavior for this release and improves accessibility and usability by ensuring that the keyboard traversal behavior is consistent with mouse traversal behavior.

(Linux IA 32-bit only) Web Start accessibility

The IBM Java Web Start application can be used in three modes:

Most Web Start use is from Web sites that contain .jnlp files, and is therefore accessible.

IBM Java Webstart v1.4.2 contains several accessibility and usability improvements over the previous release, including better support for screen readers and improved keyboard navigation.

You can use the command line only to launch a Java application that is enabled for Web Start. To change preference options, you must edit a configuration file, .java/.deployment/.deployment.properties in the user's home directory. Take a backup before you edit the file with an accessible editor. Note that not all the preferences that can be set in the Web Start Application Manager can be set from the configuration file.

Troubleshooting

If you find a problem after you install the SDK for Linux, check the following list.

You will find more help with problem diagnosis in the IBM JVM Diagnostics Guide, at http://www.ibm.com/developerworks/java/jdk/diagnosis/142.html.

Reporting problems

The SDK is provided as is, with no support unless you are entitled by means of an IBM support contract. For information on known problems and FAQs, refer to: http://www.ibm.com/developerworks.

You can report problems to the ibm.software.java.linux news group. This news group is monitored, but solutions to specific reports are not guaranteed. The newsgroup is available from the news server news://news.software.ibm.com.

When you report a problem, provide the following information:

  1. Describe in detail:
  2. Give details of which operating system level and version you are using, window manager name and version, and the output from java -version.
    uname -a
    java -version

  3. Describe precisely how to reproduce the problem.
  4. Include a javadump either from the application that fails, or if this is not possible, from any Java application. (A javadump is generated automatically when a failure occurs. You can generate a javadump by sending a SIGQUIT to the java process. Send a SIGQUIT with CTRL+\ from the command shell, or kill -QUIT <pid> from the command line.)
  5. Make a test case available. (The simpler the test case, the faster the problem can be addressed.)
  6. If your e-mail address is different from the one that is given in the newsgroup, provide your e-mail address.

Known limitations

The following sections explain known limitations of the SDK and Runtime Environment for Linux.

Limitations that apply to all Linux platforms except where indicated

Linux IA 32-bit limitations

Linux PPC 32-bit and 64-bit limitations

Linux PPC 32-bit limitations

Linux PPC 64-bit limitations

Linux zSeries 64-bit limitations

The following limitations apply to users of Chinese, Taiwanese, and Korean on Linux zSeries 64-bit:

Linux zSeries 32-bit and 64-bit limitations

Notices

This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.

IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to:

For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to:

The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law:

INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.

This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the information. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this information at any time without notice.

Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.

IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.

Licensees of this program who wish to have information about it for the purpose of enabling (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact:

Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.

The licensed program described in this document and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement or any equivalent agreement between us.

Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurement may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.

Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.

Trademarks

IBM, developerWorks, iSeries, pSeries, PowerPC, AS/400, and zSeries are trademarks or registered trademarks of International Business Machines Corporation in the United States, or other countries, or both.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

Intel, Intel logo, Intel Inside, Intel Inside logo, Intel Centrino, Intel Centrino logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.

UNIX is a registered trademark of The Open Group in the United States and other countries.

Other company, product, or service names may be trademarks or service marks of others.

This product is also based in part on the work of the FreeType Project. For more information about Freetype, see http://www.freetype.org.

This product includes software developed by the Apache Software Foundation http://www.apache.org/.