Updates and Errata

This part of site will collect updates and corrections to the book. I'll do my best to keep it up to date, but there's a lot going on. If you find errors or out-of-date information in the book, please send me a note so I can post updated information on this page.

Here's the update information you'll find on this page:

New JDK Availability

Since the book went to press, many more Linux JDK choices have become available, including contributions from IBM, Inprise, and Sun.

See the discussion of available Software Development Kits for more information about the various ports.

JDK Glibc Dependencies Changes

The book described the glibc dependencies of the Blackdown JDK1.1 and JDK1.2 implementations that were available at press time: versions were available for use with glibc versions 2.0 and 2.1.

More recent JDK1.1.8, JDK1.2.2 and JDK1.3 implementations rely on newer versions of glibc, which fix threading problems present in the older libraries.

See the discussion of available Software Development Kits for more information about the libc dependencies of the various ports.

JDK Display Depth Support Improved

In chapter 56, "X Window System Tips and Tricks", we discussed the limitations of current JDK1.2 implementations in supporting many display devices with 16-, 24-, and 32-bit depth. Newer JDK releases address many of these problems. If you are unable to run AWT and Swing applications due to unsupported display depths, try updating.

New JIT Availability

Since the book went to press, Inprise made available a Just-In-Time compiler usable with the Blackdown and Inprise JDK 1.2.2 ports. To use it with either JDK, install it in the appropriate directory (discussed in chapter 14, "Configuring the Linux SDK/JRE Environment", in the section "Adding JIT Compilers"). This JIT is used by the Inprise JDK by default. To use it with the Blackdown JDK, you need to specify it explicitly (as discussed in the "Adding JIT Compilers" section).

The Inprise JIT is distributed with the Inprise JBuilder product. Download and installation information is available at http://www.inprise.com/jbuilder/foundation/download/linux.html.

Java Plug-in for Netscape Now Available

Since the book went to press, newer versions of the Blackdown JDK1.2.2 have included an implementation of the Java Plug-in for Netscape - allowing you to use the Navigator browser with the JDK1.2.2 virtual machine and run JDK1.2.x applets. You can obtain the Plug-in from the Blackdown distribution mirrors. Use of the Plug-in requires a version of Netscape that uses the glibc library.

The Java Plug-in for Netscape has a bug (in Linux and in all Unix versions); if you run Netscape with a private colormap, for example:

    netscape -install

that colormap will not be used by any JDK1.2 applets run by the Plug-in. The Plug-in will use the default root colormap, meaning that it will appear in the wrong colors when Netscape has the focus.

The xwinwrap utility discussed in chapter 56 provides (after some modest enhancement) a solution to this problem. The version of that utility distributed from this site, which has been enhanced since publication of the book, allows you to work around this bug. The following invocation of Netscape will solve the problem:

    XWINWRAP_SINGLEMAP= LD_PRELOAD=/path/to/xwinwrap.so netscape

For more details, you can visit the directory containing the code, view the README file, or obtain the updated version of the library.

New SDKs Fix JBuilder Problems

In chapter 43, "Inprise JBuilder", we discussed current problems that prevent using all of JBuilder's capabilities - most notably, debugging. Those problems have since been addressed in newer JDK1.2.2 and JDK1.3 releases. Those JDKs now supply the necessary pieces to take full advantage of JBuilder3.

Using the Java Invocation API

Chapter 55, "Mixing Java and Native Code on Linux", presents a very brief discussion of the Java Invocation API - the API used to launch the JVM from native applications. It omits one important detail: native applications using the Java Invocation API must include the -lpthread option in the link line that builds the executable. This option should be used before any other library inclusions.

The pthread library provides thread-safe versions of a few symbols normally found in libc. Without these new versions, the application will not function reliably. The pthread library must be included before any explicit or implicit inclusion of libc, so the safest solution is to place it first among the library inclusions in the link line.


Chapter 45, "ArgoUML Modeling Tool" incorrectly described UML as the "User Modeling Language". The correct term is "Unified Modeling Language".

Back to Java Programming on Linux Home Page

Last Modified: 04/01/2000 10:22:09