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 - the most recently available Java Software Development Kits (updates chapters 13, "Blackdown - The Official Linux Port", and 25, "The IBM SDK Port", and introduces newer ports not discussed in the book).
JDK Glibc Dependencies Changes - updated information on the dependencies between JDK releases and the C library (updates libc dependency information discussed in chapter 13, "Blackdown - The Official Linux Port").
JDK Display Depth Support Improved - Good news about supporting various display depths in AWT/Swing applications (updates information on X server display modes discussed in chapter 56, "X Window System Tips and Tricks").
New JIT Availability - Discusses a Just-In-Time Compiler not mentioned in the book (updates information in chapter 33, "Just-In-Time Compilers").
Java Plug-in for Netscape Now Available - Now you can run JDK1.2 applets from Netscape on Linux (updates information on Java Plug-in availability in chapter 50, "Deploying Applets with Java Plug-in").
New SDKs Fix JBuilder Problems - Two SDK ports that became available since publication of the book support the Inprise JBuilder product (updates information about JDK support of JBuilder in chapter 43, "Inprise JBuilder").
Using the Java Invocation API - This provides some important missing information on using the Java Invocation API, which invokes a JVM from a native application, on Linux (updates information from chapter 55, "Mixing Java and Native Code on Linux").
Errata - Corrections to miscellaneous errors and omissions in the book.
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.
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.
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.
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.
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:
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.
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.
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