Java Development Kit for SCO Operating Systems 1.1-1 Release Notes


Contents

License
Introduction
Documentation
Using JDK 1.1 for SCO
Extensions to Sun JDK 1.1
Native Methods
JDBC
Implementation Notes
Known Problems

License

Please read the license.txt file for the license terms of this SCO product.

Introduction

These are the release notes for the Java Development Kit (JDK) for SCO Operating Systems, Release 1.1-1.

This product is a full implementation of Sun Microsystems' Java Development Kit 1.1. It enables SCO OEMs, ISVs, and end users to develop and/or execute Java applications.

This JDK product is being released on all three SCO operating system platforms: OpenServer (5.0.0, 5.0.2, 5.0.4), UnixWare (2.1.2), and Gemini beta release. ("Gemini" is SCO's code name for the successor operating system to OpenServer and UnixWare, due to be released later in 1997. Its official name has not been announced at the time of writing of these release notes, and so "Gemini" is used here instead.)

For the most part the JDK is identical for all three platforms, and everything in these release notes applies to all three platforms unless otherwise noted.

The JavaSoft documentation enclosed with this product contains a full description of the different parts of the JDK, but what follows here is an overview.

The JDK includes the essential runtime engine of Java, that is, the equivalent of an OS's kernel and libraries:

The JDK also includes Java development tools:

The JDK also includes additional components to support distributed applications and database access:

Note that the SCO release number 1.1-1 refers to "1.1" as the base release from Sun, and "-1" as SCO's version within that base.

Installation

It is important to note that there is just one JDK binary distribution on the CD-ROM. It is built for execution on Gemini, but is able to run on OpenServer by virtue of the Gemini Compatibility Module for OpenServer, and likewise on UnixWare by virtue of the Gemini Compatibility Module for UnixWare.

Because of this, there are a few differences in how the JDK is installed on each platform:

OpenServer

First note that an OpenServer 5.0.0 system must at least have the Net-100 supplement installed on it. But we recommend an upgrade to OpenServer 5.0.2 or 5.0.4.

Mount the CD-ROM and install (a pre-release version of) the Gemini Compatibility Module for OpenServer (package name preUDK-OS):

# mount -r /dev/cd0 /mnt # pkgadd -d /mnt preUDK-OS

When that installation is complete, install the JDK itself (package name jdk):

# pkgadd -d /mnt jdk

UnixWare

First you must bring your system up to UnixWare 2.1.2 level, if it is not already there. For your convenience, the UnixWare 2.1.1 (from 2.1) and 2.1.2 (from 2.1.1) updates are included on this CD-ROM in UnixWare-update/upd211 and UnixWare-update/upd212 directories respectively.

Once that is done, mount the CD-ROM and install (a pre-release version of) the Gemini Compatibility for UnixWare (package name preUDK-UW):

# mount -F cdfs -r /dev/cdrom/* /mnt # pkgadd -d /mnt preUDK-UW

If your machine has more than one CD-ROM drive, specify the CD-ROM device exactly (e.g. /dev/cdrom/c0b0t6l0).

When that installation is complete, install the JDK itself (package name jdk):

# pkgadd -d /mnt jdk

Alternatively, the graphical desktop tool App_Installer may be used to install these packages.

Note that you may need to increase certain system memory limits; see Using JDK 1.1 for SCO below.

Gemini Beta

Mount the CD-ROM and install the JDK (package name jdk):
# mount -F cdfs -r /dev/cdrom/* /mnt # pkgadd -d /mnt jdk
If your machine has more than one CD-ROM drive, specify the CD-ROM device exactly (e.g. /dev/cdrom/c0b0t6l0).

Note that you may need to increase certain system memory limits; see Using JDK 1.1 for SCO below.

Documentation

Documentation for the JDK 1.1 included on the product CD-ROM consists of the following materials. All of the documentation is in HTML format and may be viewed with any browser you have installed on your system. The documentation files may be referenced from the CD-ROM directly, or in some cases from installed directories, as indicated in this table:

DocumentCD-ROM directoryinstalled directory
these release notesReleaseNotes.html
JavaSoft documentation for JDK 1.1JavaDoc-1.1/index.html/usr/java/docs/
JavaSoft demos for JDK 1.1JavaExamples-1.1//usr/java/demo/
JavaSoft tutorial for JDK 1.1JavaTutorial/index.html
JavaSoft white paper for JDK 1.1JavaWhitepaper/java-whitepaper-1.html
The Java Language Specification,
by James Gosling, Bill Joy, and Guy Steele
JavaLangSpec-1.0/
documentation on SCO's JDBC implementation
and SCO's SQL-Retriever product
see JDBC section

Note that these documents are not integrated into the graphical help system on your platform (e.g. ScoHelp).

Also note that much of this documentation is from Sun, but should be read in an SCO context. For instance, for "Solaris" read any of the three SCO platforms (OpenServer, UnixWare, Gemini). For customer support, any of the normal SCO support mechanisms should be used, rather than contacting Sun.

Using JDK 1.1 for SCO

In general, use of JDK 1.1 for SCO follows that which is described in the JavaSoft documentation.

On OpenServer and UnixWare, you will probably want to set PATH in your .profile to include the directory where the JDK commands are installed, /usr/java/bin. On Gemini this will not be necessary, since /usr/java/bin is included in the default PATH that user accounts are created with.

On UnixWare and Gemini, applications of significant size are likely to get "out of memory" errors with the default memory limits provided by the operating system. To fix this, do the following as root:

# /etc/conf/bin/idtune -m HVMMLIM 0x7FFFFFFF
# /etc/conf/bin/idtune -m HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune -m SVMMLIM 0x7FFFFFFF
# /etc/conf/bin/idtune -m SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idbuild
and then reboot to rebuild the kernel.

On all three platforms, you need to give an xhost command for your machine if you are using appletviewer (see Known Problems below).

Extensions to Sun JDK 1.1

SCO has provided only one functional extension to Sun's JDK 1.1, and it is useful only on the Gemini platform.

Java Classes as First-Class Executables

When javac is used to compile one or more classes, it will set the execute permissions bit on for the .class file if the class contains a main method. (This happens on all three platforms.)

Then, on Gemini only, you can execute a Java application simply by giving the name of the main class:

$ foo.class
Gemini will look for foo.class by use of the PATH environment variable, just as it would for any other executable.

Of course, you can always use the traditional way of executing a Java application:

$ java foo
In this case, java must be in the PATH, and foo.class must be in the CLASSPATH.

Native Methods

Both the JNI-style native methods added as of JDK 1.1 and the old-style, lower-level native methods from JDK 1.0.2 are supported in this release.

C and C++ native methods must be compiled and linked with the SCO Universal Development Kit (UDK). This means that native methods cannot be built with the existing SDK on OpenServer or UnixWare.

Some of the reasons for this requirement include:

All of these items are in the UDK but not in the existing SDK on OpenServer and UnixWare. The UDK can be used either on OpenServer or UnixWare itself, or native method dynamic libraries can be built with the UDK on Gemini and then moved to OpenServer or UnixWare.

Another important limitation with native methods is upon the kinds of system operations that a native method can do. In particular:

SCO-specific examples of the commands needed to build old- and new-style native methods with C and C++ are included in the demos part of the JDK 1.1 for SCO documentation, under the subdirectories native_c_demo, jni_c_demo, native_c++_demo, and jni_c++_demo.

JDBC

Java Database Connectivity is a standard SQL database access interface for Java, providing uniform access for Java applications to a wide range of relational databases.

The JDK 1.1 for SCO contains SCO's implementation of JDBC. This includes the SCO JDBC driver, the Sun JDBC driver manager, and a sample Java applet and application provided as JDBC demonstrators.

SCO's JDBC implementation is built upon SCO's SQL-Retriever product. Several versions of this (each is specific to OpenServer or UnixWare and to a specific database vendor's product) are provided on the JDK 1.1 for SCO CD-ROM, with a 30-day evaluation license for each. The different versions may be seen when installing SQL-Retriever.

There is no need to separately install the SCO JDBC implementation, since it is part of the JDK installation. For further documentation on the SCO JDBC implementation, see SQL-Retriever-Doc/Jovrview.htm on the CD-ROM.

It is necessary to separately install the SQL-Retriever evaluation product if you are interested in using JDBC. To do this, execute SQL-Retriever/setup on the CD-ROM.

The sample JDBC demonstrators are in directory SQL-Retriever-Doc/examples/ on the CD-ROM.

Implementation Notes

In general one of the important characteristics of Java is that it behaves in exactly the same fashion on all platforms. However there are a few areas where it may be useful to know how the JDK has been implemented on SCO platforms.

System Properties

If it is necessary for application code to determine which of the three SCO platforms it is running on, the Java class System.Properties can be queried. Here are some of the values that will be returned on all SCO platforms:
java.home=/usr/java
java.vendor=SCO
java.vendor.url=http://www.sco.com/
java.class.version=45.3

while here are values that are specific to OpenServer 5.0.x:

os.arch=Unknown
os.name=SCO_SV
os.version=2

UnixWare 2.1.2:

os.arch=x86at
os.name=UNIX_SV
os.version=2.1

and Gemini beta:

os.arch=IA32
os.name=UNIX_SV
os.version=3.0

Abstract Windowing Toolkit

This implementation uses the X Windows System, version X11R6.1, to implement the Java Abstract Windowing Toolkit.

Threads

This implementation uses Sun's "green threads" implementation of Java threads, in which the Java VM controls the scheduling and context switching of Java threads, rather than a "native threads" implementation, in which Java threads would be mapped onto an operating system library and the scheduling and context switching would be done by the operating system.

Performance

This implementation uses an assembly-coded main interpreter loop for faster bytecode execution.

Conformance

This release of JDK 1.1 for SCO has passed Sun's Java Compatibility Kit (JCK) 1.1 test suite.

Known Problems

This section contains known problems with SCO's port of JDK 1.1 to SCO platforms. For known problems with Sun's JDK 1.1 itself, see the list at Sun's website.
  1. On all three platforms, the X11R6 implementation is currently built to only use TCP/IP as a connection mechanism. This means that even when working locally, you need to issue an xhost +your_machine_name command.

  2. On OpenServer and UnixWare, the Universal Development Kit (UDK) needed to write native methods, will not yet be available when the JDK 1.1 for SCO first ships for those platforms. As an alternative, if you have access to a Gemini beta release, you can build native method dynamic libraries there and then move them to the OpenServer or UnixWare system.

  3. On OpenServer 5.0.4, an operating system panic sometimes occurs under the following conditions: The panic doesn't happen if you don't have the second swap device or if the application doesn't request enough memory to require space from the second swap device. Even then, the panic may not occur.