|
Enhancements and Changes
Java 2 SDK,
Standard Edition
Version 1.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:
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
|