Enhancements and Changes in Java 2 SDK v1.4.2

   

 

Introduction
OS & Hardware Platforms
Supported System Configurations
64-Bit Intel Itanium Processors
Virtual Machine
Runtime Performance
Client Hotspot Compiler
Server Hotspot Compiler
Core Libraries
Networking
New I/O
I/O
Internationalization
JAXP
Security
Integration Libraries
CORBA, Java IDL, and Java RMI-IIOP
Java Naming and Directory Interface API
User Interface
Java Sound Technology
Java 2D Technology
Input Methods
AWT
Swing
Deployment
Java Update (1.4.2_01 and higher)
Startup Time Improvements
Applets
Java Plug-in Technology
Java Web Start 1.4.2
Tools and Tool Architecture
Java Platform Debugger Architecture
Java Virtual Machine Profiler Interface
Java Compiler (javac)
Javadoc Tool

 

Introduction

This document summarizes some of the significant enhancements and changes introduced in Java 2 SDK, Standard Edition, 1.4.2 since version 1.4.1. For further information, see the following documents:
Release Notes - Known bugs, workarounds, and other important issues
Java Community Process Review for 1.4.2 Beta API Specification
Items in Sun's bug database are marked "bug" or "RFE" (Request for Enhancement).

OS & Hardware Platforms

For platform-dependent enhancements and changes in particular J2SE technologies, search this page for the platform name ("Windows", "Linux", or "Solaris"). Also see OS & Hardware Platforms.

Supported System Configurations

See Supported System Configurations for the list of processors, operating environments, and desktop managers supported by Java 2 Platform, Standard Edition, v 1.4.2.

64-Bit Intel Itanium Processors

With J2SE 1.4.2, Itanium IA64 processors are now fully supported. For Itanium, the 1.4.1 JRE has only a bytecode interpreter. Starting with 1.4.2, we added support for the server JIT compiler.

Developers wishing to redistribute an IA64 JRE can construct it from the SDK.

Virtual Machine

Runtime Performance

The following are enhancements to runtime performance in 1.4.2. Also see Virtual Machine release notes for issues.
  • The interpreter-only Itanium version of 1.4.1 has been enhanced by the addition of the server compiler. Performance is up to thirty times faster than for 1.4.1.

     

  • The performance of applications that make heavy use of Class.forName and related methods has been significantly improved.

     

  • Java Native Interface usage checking via the -Xcheck:jni switch is more extensive and robust than in 1.4.1.

     

  • Third-party memory managers now work properly when using JVMPI and JVMDI.

Client HotSpot Compiler

The following are enhancements to the client HotSpot compiler in 1.4.2. Also see Virtual Machine release notes for issues.
  • Improvements in compile speed and footprint.

Server HotSpot Compiler

The following are enhancements to the server HotSpot compiler in 1.4.2. Also see Virtual Machine release notes for issues.
  • Use of SSE and SSE2 instructions on IA32 platforms when they are supported by the processor and operating system.

     

  • Faster integer division by constants.

     

  • Faster floating-point division by powers of 2.

     

  • Faster NullPointerException handling.

Core Libraries

Networking

The following are important new features and enhancements to Networking in J2SE 1.4.2.

 

  • NTLM Authentication

    NTLM authentication for http and https is now supported on Windows platforms. See the Networking Properties document for details of system properties that modify the behavior of this feature. See 4626557.

     

  • Support HTTP redirect to relative URLs

    Prior to 1.4.2, we require the redirect URLs specified in the Location field of the Http response to be absolute URLs. This is specified by RFC 2616. However, several popular browsers, including IE and Netscape, support relative URLs in the Location field for redirect. Thus beginning with 1.4.2, we made our client behaviour consistent with the popular browsers. See 4726087. .

For information on known bugs and issues in networking functionality in this release, see the Networking release notes.

New I/O (NIO)

The following changes have been made to java.nio functionality in J2SE 1.4.2.
  • The finalize methods of the primitive channel classes (SocketChannel, ServerSocketChannel, etc.) have been removed ( 4777499). Performance testing revealed that the presence of these methods imposed a significant (factor of 100) garbage-collection penalty upon server-type applications that process thousands of new open channels per second. User code that deals in channels should be carefully written to close channels explicitly rather than rely upon the garbage collector to do so.

Also see the NIO release notes.

I/O

On Windows 2000/XP, the default encoding for Windows locales that have no corresponding ANSI code page is changed from utf-16le to utf-8. This change provides compatibility with existing text encoded in ASCII (such as HTML files) as well as the capability of handling the writing systems of such locales.

Internationalization

The following changes have been made to internationalization functionality in J2SE 1.4.2.
  • Installation of the J2RE on Windows has changed, with impact on the supported locales. There now is a single installer, which by default installs a runtime with support for European languages if the Windows host system only supports such languages, or a runtime with support for all languages if the Windows host system supports at least one non-European language. Users can request installation of additional languages in a custom setup. For complete information on which locales and encodings are supported with which installation, see the Supported Locales and Supported Encodings documents. For general information, see internationalization.

JAXP

See JAXP known problems and issues.

Security

For full details, see Security enhancements

The following changes pertain to security-related functionality in J2SE 1.4.2. Also see Security release notes for issues.

  • The following CA (Certification Authority) certificates were added to the cacerts file in the lib/security directory of the Java installation:
    Alias name: entrustglobalclientca
    Owner: CN=Entrust.net Client Certification Authority, OU=(c)
    2000 Entrust.net Limited, OU=www.entrust.net/GCCA_CPS incorp. by ref.
    (limits liab.), O=Entrust.net
    Alias name: entrustgsslca
    Owner: CN=Entrust.net Secure Server Certification Authority, OU=(c)
    2000 Entrust.net Limited, OU=www.entrust.net/SSL_CPS incorp. by ref.
    (limits liab.), O=Entrust.net
    Alias name: entrustsslca
    Owner: CN=Entrust.net Secure Server Certification Authority, OU=(c)
    1999 Entrust.net Limited, OU=www.entrust.net/CPS incorp. by ref.
    (limits liab.), O=Entrust.net, C=US
    Alias name: entrust2048ca
    Owner: CN=Entrust.net Certification Authority (2048), OU=(c)
    1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref.
    (limits liab.), O=Entrust.net
    Alias name: entrustclientca
    Owner: CN=Entrust.net Client Certification Authority, OU=(c)
    1999 Entrust.net Limited, OU=www.entrust.net/Client_CA_Info/CPS incorp.
    by ref. limits liab., O=Entrust.net, C=US
    
  • Support for AES (the Advanced Encryption Standard) was added to the SunJCE cryptographic provider. For details see the JCE reference guide.

     

  • Support for the SHA-256, SHA-384, and SHA-512 hash algorithms was added to the Sun provider. For details see the cryptography architecture reference guide.

     

  • The SunJSSE implementation now supports a number of additional ciphersuites. They include ciphersuites using AES as a symmetric cipher and ephemeral Diffie-Hellman with RSA authentication (DHE_RSA). For details see the JSSE reference guide.

     

  • In addition to the simple X.509 based trustmanager previously available in the SunJSSE provider, it now supports a second, PKIX compliant trust manager. It is implemented utilizing the default CertPath PKIX implementation. See the JSSE reference guide for more information.

     

  • The PKIX CertPath implementation in the Sun provider has been made compliant with the recently published RFC 3280.

     

  • A number of performance related changes have been made to the certificate and PKIX implementation in the Sun provider. Depending on the usage scenario, performance can be substantially improved, in some case execution may be several times as fast as in previous releases. One of these changes is the addition of caching to the LDAPCertStore implementation, which can be configured as described in the CertPath API Programmer's Guide.

     

  • Limited support for the CRL DistributionPoints extension is now available in the Sun PKIX implementation. This allows the implementation to automatically locate and download CRLs in some cases, eliminating the need for manual configuration. This feature is disabled by default for compatibility reasons. For more information see the CertPath API Programmer's Guide.

     

  • Added Counter mode (CTR) support for all block ciphers in the SunJCE provider. For details see the JCE reference guide.

     

  • The following JGSS enhancements (RFEs) have been implemented in this release:
    • Configurable Kerberos Settings
    • Support for Slave Kerberos Key Distribution Center
    • Support TCP for Kerberos Key Distribution Center Transport
    • Kerberos service ticket is now stored in the Subject's private credentials

      For full details see New Features in Java GSS for J2SE 1.4.2.

Integration Libraries

CORBA, Java IDL and Java RMI-IIOP

See CORBA, IDL and RMI-IIOP known problems and issues.

Java Naming and Directory Interface API

The following notes and enhancements pertain to the Java Naming and Directory Interface (JNDI). For additional information, see the JNDI documentation.
  • Bug 4639896 fixed: Java clients are now able to automatically follow referral using ldaps

    The JNDI/LDAP service provider now supports LDAPS URLs for requesting access to an LDAP server using an SSL connection. LDAPS URLs are accepted anywhere LDAP URLs are accepted.

    In addition, if the user does not specify a port number in an LDAP URL, the default port is 389 for non-SSL connections and 636 for SSL connections. Prior to the Java 2 SDK, v 1.4.2, the port number defaults to 389 for all types of connections, including SSL.

    This change affects applications that use LDAP over SSL without explicitly specifying a port number and expect the default SSL port to be 389. 389 is the standard non-SSL port for LDAP so this configuration should be rare. The workaround is to explicitly specify the port number.

     

  • Prior to the Java 2 SDK, v 1.4.2, the DNS service provider for JNDI did not include a trailing dot ('.') when returning a fully qualified domain name. Such a name could be returned within the value of an attribute, or by a call to Context.getNameInNamespace(). With the Java 2 SDK, v 1.4.2, the trailing dot is included.

User Interface

Java Sound Technology

The following are significant bug fixes and RFEs in this release:

 

  • RFE 4558938 implemented: Port is now supported for Windows and Solaris.

     

  • (no RFE number): ALSA (Advanced Linux Sound Architecture) is now supported. This support enables RFE 4347309 listed below.

     

  • RFE 4347309 implemented: Simultaneous capture/playback is now possible with ALSA on Linux.

     

  • Bug 4302884 fixed: Now java.applet.AudioClip releases the audio device when it is no longer used.

For more details, see What's new for Java Sound in J2SE 1.4.2

Java 2D Technology

A number of 2D bugs were fixed in 1.4.2. Much of the work was in making full-screen exclusive mode more robust on Microsoft Windows. Also, bugs affecting the handling of bad font data were fixed, as was support for 24-bits/pixel for Linux displays and a bug that could cause IDEs to lock up. For details, see the 2D release notes.

Input Methods

An input method for the Thai writing system has been bundled with the Java 2 Runtime Environment (J2RE) 1.4.2, but it is disabled by default. To enable it, move the file thaiim.jar from the J2RE's lib/im directory to its lib/ext directory.

On Windows XP, you may experience problems related to the Windows Language bar, such as not being able to switch input locales ( 4772373) or the Language bar not being displayed ( 4622023). If you experience such problems, please apply the latest Windows XP Service Pack, available from Microsoft. See the Microsoft Knowledge Base for more information.

AWT

The following are important AWT bug fixes in J2SE 1.4.2.
  • Bug 4648702 fixed: On Microsoft Windows 2000 and Windows XP, a TextArea will sometimes display only a vertical scrollbar, even though the SCROLLBARS_BOTH field is set to true.

     

  • Bug 4636311 fixed: Modal dialogs may hang when run from a Runnable on release 1.3.1 and 1.4.

     

  • Bug 4385243 fixed: Unable to input text in Microsoft Windows locales that don't have an ANSI code page.
See also the AWT release notes for a more complete listing.

Swing

Release 1.4.2 includes many bug fixes and these major enhancements:
  • The Microsoft Windows XP look and feel. If you are using the system look and feel on the Windows XP platform, Swing components now match the platform.

     

  • The GTK+ look and feel. You can now customize your look and feel to a particular theme.

     

  • A major performance improvement for JFileChooser.
For more information, see the Swing 1.4.2 release notes.

Deployment

Java Update (1.4.2_01 release and higher)

Java Update is a new feature in the SDK/JRE. Its purpose is to provide the latest update of Java in a flexible, user-selectable manner. It works via a scheduler ( jusched.exe) that runs as a background process and via the Java Plug-in Control Panel Update tab, which allows users to select the type of update options that they want.

jusched.exe is launched when the user reboots the computer after installing the SDK/JRE. It runs as a background process, completely tranparent to the user, but can be viewed in the Process tab of the Windows Task Manager. Should a user not want to have it running in the background, it can be killed via End Task.

The Java Plug-in Control Panel Update tab allows the user to select the options for updating Java. The user can choose Automatic or Manual update. If the user choses Automatic, then the update schedule (daily, weekly, monthly ...) can be selected via the Advanced button, and notification about updates can be set via the Notify Me: drop-down menu (before an update is downloaded and before it is installed, or only before it is installed). Manual update is performed by pressing the Update Now button. For more detail, see the Java Plug-in Control Panel Update tab.

Startup Time Improvements

Optimizations have been made to the core libraries to reduce startup time. For a small command line application, startup time has been reduced by roughly thirty percent; for a small Swing application, by fifteen to twenty percent.

In some rare situations, one optimization related to filename canonicalization may cause inconsistent views of the host platform's file system to be briefly visible to Java applications. The optimization caches, for a short time, the results of calls to File.getCanonicalFile() and File.getCanonicalPath(). If a file is moved by another application then the canonicalization result for that file may briefly differ from its true value, although attempts to open and access the file will succeed or fail as before. Applications should not rely on the presence or absence of such inconsistencies. If an application must disable this optimization for correctness purposes then the system property -Dsun.io.useCanonCaches=false may be specified.

 

Applets

The following three applet bugs in 1.4.1 have been fixed in 1.4.2.
  • Bug 4672707 fixed: In 1.4.1, invoking modal popup dialogs from an applet's stop or destroy methods is not recommended. Using modal popup dialogs inside these methods could result in problematic behavior, including NullPointerException, the dialog box not being displayed, the dialog box remaining alive even after the applet was destroyed, or in the worst case, browser hang. This problem has been fixed in 1.4.2.

     

  • Bug 4456393 fixed: In 1.4.1, the API spec for method java.applet.getDocumentBase() states that it is supposed to return the URL of the directory of the document containing the applet. This has been corrected in 1.4.2 to specify that it returns the URL of the document itself. Also, the API spec for method java.applet.getCodeBase() states that it is supposed to return the URL of the applet. This problem has been corrected in 1.4.2 to specify that it returns the URL of the directory that contains the applet.

     

  • Bug 4740901 fixed: In 1.4.1, when deploying an applet via Java Plug-in with cache enabled, if that applet is in a JAR file that contains multiple class files, and if one of those classes calls javax.crypto.Cipher.getInstance(), operations which require access to the same jar file fail with "java.lang.IllegalStateException: zip file closed" exception. This has been fixed in 1.4.2.

     

Java Plug-in Technology

The following notes pertain to important Java Plug-in technology enhancements in this release. (RFE = Request for Enhancement)
  • The Java Plug-in is now supported for Mozilla 1.1 and later
  • RFE 4616580 implemented: The ActiveX Bridge has been reimplemented in this release. This allows JavaBeans beans to appear like ActiveX controls in ActiveX containers. The implementation differs from the original one, and developers wishing to use the ActiveX Bridge will need to repackage their beans.
  • RFE 4774842 implemented: JSObject now returns the correct DOM element type.
  • Bug 4693107 fixed: For extensions deployment, a message is sent to the Java Console if version formats are wrong.
  • Bug 4706342 fixed: Alphabetical characters (a-z) can now be used with patch numbers or milstone names in Implementation-Version numbers. E.g., 1.4.2_1a, 1.4.1-beta2.
  • Bug 4766835 fixed: When a Java applet encounters an invalid certificate, a security warning will now pop up and an exception will be thrown.
  • RFE 4523276 implemented: A single Java Plug-in Control Panel now handles all versions of installed Java Plug-ins.
  • RFE 4744180 implemented: Sun's Java is now an option via the new middleware control in Microsoft Windows XP SP1 and 2000 SP3.

Java Web Start 1.4.2

The following enhancements ( RFEs) have been implemented in this release:
  • RFE 4474876 implemented: Every time JAWS is run, it automatically detects all "registered" JREs on the computer.

    There are two types of JREs recognized by JAWS: registered and unregistered. A registered JRE is one that is recorded in the system or package registry, i.e., the system registry on Windows, the package database on Solaris, and the RPM database on Linux. An unregistered JRE is not recorded in a registry; for example a JRE mounted on a network drive in an unregistered JRE.

     

  • RFE 4723794 implemented: There is now a combined control panel infrastructure used for the Java deployment products, including Java Plug-in and Web Start. If you have taken advantage of knowing certain undocumented information, such as the Java Web Start cache location or the configuration file format and location, you could be affected.

     

  • RFE 4531885 implemented: JNLP URLs are now directly openable from the JAWS Application Manager and can be bookmarked. Moreover, they may be .html or .jnlp files.

     

  • RFE 4696477 implemented: Java Web Start now dynamically imports certificates in much the same way as browsers do, making use of https much easier for users.

Tools and Tool Architecture

Java Platform Debugger Architecture (JPDA)

The following enhancements have been made to JPDA in 1.4.2:
  • New functions have been added to JVMDI to allow multiple threads to be suspended/resumed in one call:
    jvmdiError SuspendThreadList(jint reqCount, 
                                 jthread *reqList, 
                                 jvmdiError *results)
    
    jvmdiError ResumeThreadList(jint reqCount,
                                jthread *reqList, 
                                jvmdiError *results)
    

    Also, a JVMDI capability has been added so a VM can advertise that it has implemented these functions.

    These functions are used in JDK1.4.2 and result in substantial performance improvements when a debuggee has many threads.

    The equivalent functions have been added to JVMPI.

     

  • These previously unimplemented JVMDI functions have been implemented:
    jvmdiError GetOwnedMonitorInfo(jthread thread, 
                                   JVMDI_owned_monitor_info *infoPtr)
    
    jvmdiError GetCurrentContendedMonitor(jthread thread,
                                          jobject *monitorPtr)
    

Java Virtual Machine Profiler Inteface (JVMPI)

See the JVMPI release notes for known problems.

Java Compiler (javac)

The following enhancments and bug fixes have been made to the javac source compiler in the Java 2 SDK.
  • RFE 4626998 implemented: Added -cp synonym for -classpath option to set classpath.

     

  • RFE 4515858 implemented: Added -Xbootclasspath/p: option to prepend to bootclasspath.

     

  • RFE 4253402 implemented: Added -Xmaxerrors and -Xmaxwarns to increase the number of errors and warnings printed by javac.

     

  • Bug 4707960 fixed: javac now warns when non-ASCII digits are used where ASCII digits are required (preventing some crashes).

     

  • Bug 4725650 fixed: javac no longer extends the scope of local classes in a switch-block-group to the next switch-block-group.

     

  • Bug 4381996 fixed: javac no longer generates the jsr instruction, instead inlining the finally clause.

     

  • Bug 4175911 fixed: Miranda methods are now marked Synthetic in the class file.

     

  • Bug 4635044 fixed: javac now correctly implements the rules for determining the correct default enclosing instance for class creation expressions and superclass constructor invocations.

     

  • Bug 4329886 fixed: The byte code that javac now generates for cloning an array uses the array's type as the qualifying type for the clone method invocation when -target 1.4.2 is specified.

     

  • Bug 4642850 fixed: javac now correctly no longer allows "+=" string concatenation with an Object variable on the left-hand side.

     

  • Bug 4615601 fixed: javac no longer falsely detects duplicate local class declarations.

     

Javadoc Tool

The Javadoc tool has a couple of new features and many bug fixes. For details, see What's New in Javadoc 1.4.2. Also see the Javadoc known problems.

The new features include:

  • RFE 4525039 implemented: Serial version UID is now included in the generated serialized form specification.

Tool Compatibility

RFE = Request For Enhancement

Enhancements and Changes
Java 2 SDK, Standard Edition
Version 1.4.2

Japanese

Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.