ptx/JSE V1.18.0 has passed 100% of the Java Compatibility Test Kit (JCK) as provided by Sun Microsystems.
These release notes support ptx® Server Environment for the JavaTM Platform (ptx/JSE) V1.18.0 on systems running DYNIX/ptx® V4.5.x and DYNIX/ptx V4.6.x. ptx/JSE is a port of the Java Development Kit (JDKTM) 1.1.8_005 from Sun Microsystems® for IBM® NUMA systems.
These release notes and the jse(1) man page are the only documentation provided for ptx/JSE. Sun Microsystems provides extensive HTML documentation at their Web site about the Java Development Kit and the Java Platform. You should always refer first to these ptx/JSE release notes and then secondarily to the Sun HTML documentation. For more information about the jse(1) man page and the Sun HTML documentation, refer to "Product Documentation" later in these release notes.
Read these release notes before you install or run this release of ptx/JSE.
The changes in ptx/JSE V1.18.0 since ptx/JSE V1.1.2 are as follows:
ATTENTION This release and all previous ptx/JSE V1.1.x releases do not include a JDBC-ODBC Bridge.
ptx/JSE V1.18.0 is a port of JDK 1.1.8 , patch 005 and contains all features and changes that Sun Microsystems included with their release. (The previous release, ptx/JSE V1.1.2, is a port of JDK 1.1.6.)
For information on the changes in JDK 1.1.8, refer to the following URL:
http://java.sun.com/products/jdk/1.1/changes.html
For information on the changes between the FCS version of JDK 1.1.8 and the patch 005 version of the JDK, refer to the CHANGES file in the ptx/JSE installation directory, which by default is /opt/jse1.18.
For a list of bugs and changes in JDK 1.1.x, refer to the following URL:
http://java.sun.com/products/jdk/1.1/bugs.html
ptx/JSE V1.18.0 consists of the entire JDK as defined by the Java 1.1 Core API with no changes or extensions beyond those required to build and run the JDK on DYNIX/ptx. ptx/JSE V1.18.0 has passed 100% of the Java Compatibility Test Kit (JCK) as provided by Sun Microsystems. No performance enhancements have been made for DYNIX/ptx. Additionally, ptx/JSE does not contain a just-in-time compiler or a native compiler.
ptx/JSE V1.18.0 uses POSIX threads, also known as native threads. All I/O calls are non-blocking because of the multi-threaded nature of Java. For limitations when using native threads and Application Regions, refer to DYNIX/ptx System Configuration and Performance. For more information on the Java threading options, refer to the Sun documentation at:
http://java.sun.com/products/jdk/1.2/docs/tooldocs/solaris/threads.html
ptx/JSE V1.18.0 does not contain the user-level threading package provided by Sun, also known as green threads, which was present in previous versions of ptx/JSE.
The JVM in ptx/JSE V1.18.0 uses assembly language for the core interpreter. This change has improved the performance of byte-code execution. Previous releases of ptx/JSE V1.1.x used the C language for the core interpreter.
In ptx/JSE V1.18.0, swap space is only consumed as the Java application requires it. Previous releases of ptx/JSE V1.1.x preallocated the maximum size of the memory allocation pool when a Java application was started. This meant that JVM processes typically used more than 80 MB of swap space, even for very small applications. Now, the actual amount of swap space used for a given Java application depends on the complexity of the application. Swap space consumption could still expand to 80 MB for a complex Java application, but should be much less for simple Java applications.
The /opt/jse1.18 directory does not include a classes subdirectory. Instead, JDK class files are provided in a single classes.zip file. Previous releases of ptx/JSE V1.1.x included the classes directory in /opt/jse1.1.
ptx/JSE V1.18.0 no longer includes HTML documentation from Sun Microsystems. Instead, refer to Sun Microsystems Java Web Sites for JDK 1.1.x documentation. For details and URLs, refer to "Product Documentation" later in these release notes.
Several problems have been fixed. Refer to "Problems Fixed in ptx/JSE V1.18.0" for more information.
ptx/JSE V1.18.0 runs on DYNIX/ptx V4.5.x and V4.6.x. ptx/JSE requires the following software. Refer to the appropriate version of the DYNIX/ptx Release Notes for the versions of software that apply to your host.
ptx/XWM provides the graphical support for the Java Abstract Windows Toolkit (AWT) classes.
Installing ptx/JSE requires approximately 75 MB. By default, ptx/JSE is installed in the root filesystem, but it can be installed in an alternate filesystem.
The amount of swap space you should allocate for each Java program that you run depends on the complexity of each application. Swap space consumption could still expand to 80 MB for a complex Java application, but should be much less for simple Java applications.
ptx/JSE is installed with the standard ptx/INSTALL process. For DYNIX/ptx V4.6.1 instructions, refer to the DYNIX/ptx V4.6.1 and Layered Products Installation Release Notes. For DYNIX/ptx V4.5.x instructions, refer to the appropriate installation release notes.
Note that ptx/JSE V1.18.0 is currently distributed only on the "DYNIX/ptx V4.6.1 Operating System and Layered Products, Volume 1" CD-ROM. It is not available on any of the DYNIX/ptx V4.5.x CD-ROMs.
By default, ptx/JSE V1.18.0 is installed in the root filesystem under /opt/jse1.18. Alternatively, you can install ptx/JSE in a different filesystem. If you do so, /opt/jse1.18 is created as a symbolic link to the actual installation directory.
After installation, for each user that is developing or running Java applications, update the PATH environment variable so that it includes the /opt/jse1.18/bin directory.
ptx/JSE includes the CLASSPATH environment variable, which tells the Java Virtual Machine (JVM) and other Java applications where to find the class libraries. To use ptx/JSE you need not set this environment variable. However, if you are building Java applications whose classes reside in a directory structure other than that of ptx/JSE, you must designate the directories that contain the appropriate classes in the CLASSPATH environment variable. If more than one directory is designated, use colons to separate the entries.
The setting of the CLASSPATH environment variable specifies the directories that are to be searched before the standard ptx/JSE class directories are searched.
Java commands are typically initiated by executing Korn shell scripts installed in $JAVA_HOME/bin. The values of environment variables such as CLASSPATH, JAVA_HOME, and LD_LIBRARY_PATH influence the behavior of the Java commands.
If the ENV environment variable is set to expand to the pathname of a script such as $HOME/.profile, undesirable side effects can occur because $HOME/.profile could alter the contents of environment variables used by the Java command scripts.
Prior to executing Java commands, remove the environment variable definitions from any scripts referenced by ENV, or set ENV to the null string as follows:
export ENV=""
The following base tools are provided in ptx/JSE. Complete documentation on these tools and their options is available in the online JDK Tools documentation, which is located at the following URL:
http://java.sun.com/products/jdk/1.1/docs/tooldocs/solaris/index.html
The Solaris platform references in this Sun documentation apply to DYNIX/ptx platforms.
AppletViewer (appletviewer)
Runs applets without a web browser. The syntax is as follows:
appletviewer [options] urls...
Java Compiler (javac)
Compiles programs written in the Java Programming Language into bytecodes. The syntax is as follows:
javac [options] filename.java...
Java Debugger (jdb)
Helps find and fix bugs in Java programs. The syntax is as follows:
jdb [options]
Java Documentation Generator (javadoc)
Generates API documentation in HTML format from Java source code. The syntax is as follows:
javadoc [options] [package] [source.java]*
Java Interpreter (java)
Executes Java bytecodes. In other words, it runs programs written in the Java Programming Language. The syntax is as follows:
java [options] classname arguments
Java Runtime Interpreter (jre)
Runs Java applications. The jre tool is similar to the java tool, but is intended primarily for end users who do not require all the development-related options available with the java tool. The syntax is as follows:
jre [options] classname arguments
C Header and Stub File Generator (javah)
Creates C header files and C stub files for a Java class. These files provide the connective glue that allow code written in the Java Programming Language to interact with code written in other languages like C. The syntax is as follows:
javah [options] classname...
Class File Disassembler (javap)
Disassembles compiled Java files and prints out a representation of the Java bytecodes. The syntax is as follows:
javap [options] class...
Additional tools provided by ptx/JSE include tools for Remote Method Invocation (RMI), internationalization, Java Archive (JAR) files, and digital signing as follows:
Java Archive Tool (jar)
Combines multiple files into a single Java Archive (JAR) file. The syntax is as follows:
jar [options] [manifest] destination input-file [input-files]
Digital Signing Tool (javakey)
Generates digital signatures for archive files and manages the database of entities and their keys and signatures. The syntax is as follows:
javakey [options]
Native-To-ASCII Converter (native2ascii)
Converts a native encoding file to an ASCII file that includes the Unicode notation. The syntax is as follows:
native2ascii [options] [input-file [output-file] ]
Java RMI Stub Converter (rmic)
Generates objects from the names of compiled Java classes that contain remote object implementations. The syntax is as follows:
rmic [options] package-qualified-class-name(s)
Java Remote Object Registry (rmiregistry)
Creates and starts a remote object registry on the specified port of the current host. The syntax is as follows:
rmiregistry [port]
Serial Version Command (serialver)
Returns the serialVersionUID for one or more classes in a form suitable for copying into an evolving class. The syntax is as follows:
serialver [options]
ptx/JSE includes demonstration applets and applications that are provided with the JDK in the /opt/jse1.18/demo directory. For more information about these demonstration applets and applications, refer to the following URL:
http://java.sun.com/products/jdk/1.1/docs/relnotes/demos.html
These release notes and the jse(1) man page are the only documentation provided specifically for ptx/JSE.
The jse(1) man page provides an overview of ptx/JSE. To view the jse man page, enter the command man jse at the DYNIX/ptx command line prompt.
ATTENTION If your host has both ptx/JSE V1.18.0 and ptx/JSE V3.0.x installed, then only the jse(1) man page for the second or the last ptx/JSE product installed will be available. Both versions of the man page are not available at the same time. As the last install will overwrite the earlier jse(1) man page, we recommend that you save the previous man page to another location for future reference.
Additionally, Sun Microsystems provides extensive HTML documentation at their Web site about the JDK and the Java Platform. You should always refer first to these ptx/JSE release notes and then secondarily to the Sun HTML documentation.
The JDK HTML documentation includes references to Solaris and Microsoft Windows platforms. The Solaris platform references apply to DYNIX/ptx platforms; the Windows references do not. Furthermore, references in the Sun documentation about downloading and installing JDK do not apply to ptx/JSE.
The most applicable Sun Microsystems Java Web sites are as follows:
The JDK README file provides an introduction to the JDK and lists numerous URLs to other JDK pages. Refer to the following URL:
The complete JDK 1.1 documentation is available at the following URL. Note that updates beyond JDK 1.1.8_005 do not apply to ptx/JSE V1.18.0.
The Java Platform Documentation Web page contains links to general documentation, product and API documentation, core technical reference documentation, policies, and helpful tips. Refer to the following URL:
Additional information about the Java technology and the JDK, including information about previous releases of the JDK, is available from the Java Technology Home Page at the following URL:
For updates to the Sun documentation beyond JDK 1.1.8, refer to the following URL, which is maintained by Sun. Note that updates beyond JDK 1.1.8_005 do not apply to ptx/JSE V1.18.0.
This section lists the following problem report summaries:
The following problems were fixed in ptx/JSE V1.18.0:
(241420) Running the jre program on an applet class file causes a segfault.
(245386) ptx's sys/inttypes.h conflicts with ptx/JSE's typedefs_md.h
(246349) The jre script, which is located at /opt/jse1.18/bin/jre and /opt/jse1.18/jre/bin/jre, contained a syntax error in the last line of the file, which prevented a command from running.
(247077) jre script memory faults unless full path is specified
(247666) jar is invoked with verbosegc on
(251114) Date-related bug fixes recently released in Sun source patch
(253513) Hash table overflow, Sun Java Bug #4296186
(253810) Chinese input, Sun Java Bug #4105612
The following problems were fixed in ptx/JSE V1.1.2:
(240173) Invoking java from the installation directory caused it to core dump.
(240390) If a window in a Java application was resized and later the contents of that window's menu bar were changed (for example, a menu title was changed, enabled, or disabled), the window lost its resized dimensions and returned to its original size.
(241397) The javah -trace script created a C code file that could not be compiled.
(241747) ptx/JSE V1.1.1 only provided separate class files which required the CLASSPATH environment variable to point to the directory that contained these files. ptx/JSE V1.1.2 also provides a classes.zip file that can be referenced in the CLASSPATH environment variable.
(242031) The java script did not use fully-qualified pathnames when executing commands like basename and dirname. This situation required that the PATH environment variable for anyone executing java be set to /bin. Now java uses fully-qualified pathnames so the PATH environment variable does not need to be set to /bin for java to work.
(242220) Sometimes after resizing a window, a menu drop down list for that window was not positioned where it was expected to be.
(243266) ptx/JSE V1.1.1 is not Year 2000 compliant. ptx/JSE V1.1.2, which is based on JDK 1.1.6, is Year 2000 compliant.
(243796) ptx/JSE shared libraries did not have execute permission. Now ptx/JSE shared libraries have execute permission, which can reduce the time required for programs to begin execution when the shared library code does not need to be reloaded.
(243798) ptx/JSE did not include the Java Runtime Interpreter (jre) files under one directory. Now the full set of JRE files are included under one directory, jse/opt/jre.
(243801) When a host connection was refused, the JVM incorrectly threw a java.net.SocketException when it should have thrown a java.net.ConnectException.
(243832) Java programs written with ptx/JSE V1.1.1 could not send User Datagram Protocol (UDP) datagrams (Java class DatagramPacket). This problem was initially fixed in Fastpatch #243832, which is not required with ptx/JSE V1.1.2.
The following problems have been fixed in ptx/JSE V1.1.1:
(239502) Java client applications sometimes failed to connect to an X11 WindowTM server.
(239970) ptx/JSE did not properly map some function calls in the native code that was used in Java programs to the appropriate system function.
(240012) ptx/JSE incorrectly utilized timeslicing, which resulted in a high number of system calls even when an application was in an idle state.
(240062) The read system call and write system call did not check for EINTR, which caused incomplete reads of class files when running Java across the network and resulted in the error message No Class Def Found.
(240308) The Java Virtual Machine did not properly handle a NULL return from XLoadQueryFont when the requested font was unavailable from the X emulator. This problem was seen when running the AppletViewer from the ReflectionTM X emulator on Microsoft Windows 95 or Windows NT®.
(240627) ptx/JSE generated excessive systems calls because the SIGPOLL signal was not being received.
(240714, 240970, 241048) Windows in client applications sometimes did not allow input to be entered.
(240948) The java.version property did not contain the version string 1.1, which caused some Java applications not to run. This problem was first seen on the Tengah® Java Application Server from WebLogic®.
(241626) Java appeared to crash CommandPoint Clusters with segv.
(241718) VolanoMark crashed with segv.
As a supported IBM customer, you should always call with questions and to report problems. If you report a problem regarding running a bytecode file and the problem can be reproduced on another platform (such as Microsoft Windows), we will forward it to Sun and track resolution of the problem with Sun. If we determine that the problem is unique to ptx/JSE, then we will determine the resolution of the problem.
However, because ptx/JSE is a direct port of the Sun-provided JDK, IBM cannot add to or modify the behavior of the JDK, including the API set. Any enhancement request of this nature will be forwarded to Sun.
There are currently no ptx/JSE problem reports.
For information on the problems reported to Sun Microsystems against the JDK, you can register free online as a member of the Java Developer Connection and refer to the following URL:
http://developer.javasoft.com/developer/bugParade/index.html
This sections lists common questions and answers about ptx/JSE in the following areas:
Q: Why is the Java Language Debugger (jdb) not working properly? Why does it tell me it requires a password when I'm running it locally?
The Java Language Debugger (jdb) is launched from a script, which runs the rc file for your default shell. If that rc file starts other processes or is set to echo all script commands, the jdb will think you are starting it to debug one of the processes running remotely. Check your default rc file and make sure it is not starting such processes.
Q: Why do I keep getting failures when I try to access shared objects or classes that I should have visibility to?
If your shared object files or class files are accessed over an automounted filesystem, the open call may be getting a SIGALRM failure because of the time it takes the automounter to open the files. Try accessing the files from a local or non-automounted filesystem.
Q: When I set the environment variable LC_CTYPE to any value (including English), why does it sometimes trigger a segfault in some Motif calls?
This is a problem (report 238425) in ptx/WINDOWS (DYNIX/ptx V4.4.4 and earlier) and ptx/XWM (DYNIX/ptx V4.4.5 and later), which are used by ptx/JSE. The workaround is to unset the LC_CTYPE environment variable.
Q. What happens if I try to use the audio application programming interface (API)?
A message is generated when the audio implementation cannot find a sound card on the NUMA system. Otherwise, the application or applet should run normally, except that there will be no sound. The message generated by JDK on any platform without a sound card is the following:
audio device busy (attempt 1 out of 5)
audio player exit
Q: Why am I getting connect errors when I try to use sockets in a native method?
If you write native methods that make calls on sockets or call methods in a Java API that uses sockets, those native methods must be compiled to use BSD sockets and not ABI sockets. This is because the Java Virtual Machine (JVM) is compiled with BSD sockets.
Q: Are there any other problems that I might encounter when writing native methods?
It is possible to get different results from mathematical expressions in a native method than in the Java Virtual Machine (JVM) when dealing with divide-by-zero, remainder-by-zero, square root of negative numbers, rollover from INT_MAX and INT_MIN, not-a-number, infinity, or negative zero. This is because the JVM has explicitly-defined behavior under these "edge conditions" which may differ from some C compiler implementations.
Q. Why does the JVM fail with a segmentation violation during execution of a Java native method?
The Java Virtual Machine (JVM) executable is linked using the ld(1) command with the -z nopage0 option. This option tells ld not to bind anything to address zero, which will allow runtime detection of null pointers. However, null pointer references from Java native methods will cause the JVM to terminate due to a segmentation violation. Developers should take care to avoid null pointer references in Java native method code. If Java native method code is tested from executables other than the JVM, the executables should be linked with -z nopage0 to ensure early detection of null pointer references.
Q: Why are my Java-based GUIs displayed improperly?
The Java Abstract Windows Toolkit (AWT) on UNIX platforms is built on top of Motif® and X Windows. For this reason, you may need to experiment with the settings in the X Windows resource files (.Xdefaults file and .xsession file) to get the desired GUI display. For example, in some cases, the setting of the borderWidth resource has been seen to affect the display of Java GUIs. Appearance problems that you see in Java GUIs, for example, a GUI element not appearing in the desired location, are generally X Windows issues. On the other hand, a functionality problem, such as data that cannot be entered into a GUI element, are usually Java issues, and not X Windows related.
If you are using Exceed®, make sure you are running one of the most current versions, which is at least Exceed V5.1.3 or later. Earlier versions of Exceed that were using multiple-window mode have been seen to improperly display Java GUIs.
Q: Why is the color red not displayed and the green and blue colors reversed when GUI objects are built with the Abstract Window Toolkit (AWT)?
Check the color display settings on your user interface device. If you are using 16-bit color, use either 256 colors or 24-bit color settings instead to clear up the problem.
Q: Why do my Java-based applications hang when run on an X server?
The JDK reference code from Sun Microsystems does not support the use of some X servers. For this reason, ptx/JSE does not support X servers that are not supported by the JDK reference code.