Microsoft SDK for Java version 4.0 Release Notes

Microsoft VM Updates

This topic covers the following updates to the Microsoft virtual machine (Microsoft VM), build 3167 through build 3234:

Fixes since VM Build 3188 and included in VM Build 3234 (SDK for Java 4.0)
Fixes since VM Build 3186 and included in VM Build 3188
Fixes since VM Build 3182 and included in VM Build 3186
Fixes since VM Build 3181 and included in VM Build 3182
Fixes since VM Build 3177 and included in VM Build 3181
Fixes since VM Build 3167 (SDK for Java 3.2) and included in VM Build 3177

Note for Alpha   Microsoft® Windows® Foundation Classes (WFC), JIT and profiler fixes do not apply to the Microsoft VM for Alpha architectures, as these features are not available on the Compaq DIGITAL Alpha architectures. Basic VM and debugger fixes do apply to the Alpha platform.

Fixes since VM Build 3188 and included in VM Build 3234 (SDK for Java 4.0)
Fixed a NullPointerException bug when calling java/awt/Graphics.clearRect( ) on a java/awt/PrintGraphics that did not have a background color selected.
Using the Clipboard accelerator keys in a java/awt/TextComponent no longer throws a SecurityException in some scenarios.
Fixed an AWT bug where the Graphics object passed to a lightweight component's update method would not have the correct clipping applied.
Fixed an AWT bug where, after reshaping a lightweight component, the parent's component may not properly repaint.
Fixed a java/awt/image/PixelGrabber bug where off-screen images would not return the correct RGB values when running on some video drivers.
java/lang/Class.forName(null) correctly throws a ClassNotFoundException, not a StringIndexOutOfBoundsException.
The localization data returned by the java.text classes has been updated to more closely match Microsoft® Win32® and later JDKs.
java/text/Collator.setStrength(Collator.IDENTICAL) no longer throws an IllegalArgumentException.
Fixed a bug where java/text/ChoiceFormat.parse(String, ParsePosition) would not start at the correct position.
Fixed a bug where java/text/MessageFormat.parse(String, ParsePosition) would not accept the same input as later JDKs.
Fixed the Java to native marshaling of the @com.struct com/ms/com/COAUTHIDENTITY when the class is used as a top-level structure (such as a call to CoSetProxyBlanket).
The string getter and setter methods of com/ms/lang/RegKey use the Unicode registry APIs on Microsoft® Windows NT® instead of truncating the data to ANSI.
Fixed an access violation in the native implementation of the java/util/zip classes when dealing with some corrupt .zip files.
Fixed the automatic dispatch marshaling of byref VARIANTs to java/lang/Object to behave like non-byref VARIANTs to java/lang/Object (previous versions would coerce the byref VARIANT to a VT_R8 value).
Fixed a bug where IJavaEventMonitorIDInfo2::GetObjectField would return non-existent fields in some variable-size classes, and IJavaEventMonitorIDInfo2::GetArrayElement would return non-existent elements past the end of the array for arrays of objects and for any array if object aging was enabled.
Fixed the RNI API Class_CopyConstantPoolItem to work correctly for CP_MethodRef, CP_FieldRef, and CP_ClassRef entry types.
The wininet-based HTTP URLConnection now recognizes the Microsoft® Internet Explorer version 5 autoproxy settings, and handles proxy authentication.

Fixes since VM Build 3186 and included in VM Build 3188
Fixed a problem where FontMetrics.charWidth() could return incorrect values, notably when the GulimChe font (a Korean language font) was in use.
Fixed an issue with the implementation of the IDispatch interface that the VM automatically exposes for Java objects. Under some circumstances, this issue caused the method IDispatch::GetIdsOfNames to return the wrong DISPID for class members with long names (more than 15 characters).
Fixed a GDI leak in java.awt.PrintJob.
Security fix.

Fixes since VM Build 3182 and included in VM Build 3186
Fixed issues with the just-in-time (JIT) compiler.
For AWT-based ActiveX controls, the implementation of IOleInPlaceActiveObject::TranslateAccelerator now consumes WM_CHAR messages.
Fixed a memory leak related to ThreadGroups when debugging Java code.
Security fix.

Fixes since VM Build 3181 and included in VM Build 3182
Fixed issues with the Just-In-Time (JIT) compiler.
Fixed issues related to debugging Java code on multiple processor systems.
Fixed a hang when calling java/applet/AppletContext.showDocument from script code running on the browser thread.

Fixes since VM Build 3177 and included in VM Build 3181
Fixed issues with the Just-In-Time (JIT) compiler.
Fixed a memory leak on thread detach when debugging is enabled.
Updated WFC (build 8475).
Fixed issues related to debugging Java code on multiple processor systems.
Fixed issue related to COM interface pointers that are aggregated with the free-threaded marshaler (FTM) or are marshaled into the virtual machine with threading=NONE are marked as needing to be cleaned up on the thread that originally received the pointer. This behavior matches that of build 2925 and earlier. Prior to this change, build 3154 and later would release the interface pointer on the virtual machine's single STA host thread. With this change, the "FTMChecksDisabledForADO" registry switch should no longer be required.
Fixed a problem where a class registered as a COM class could be loaded twice if the class is located in a package and another class from the same DLL or class loader had previously referenced the class.
Fixed a memory leak on thread detach if the thread had called java/lang/Double.valueOf or java/lang/Float.valueOf.
JNI's DeleteLocalRef will add the deleted reference to a free list for future calls to CreateLocalRef instead of waiting until the JNI method returned before freeing the references.
java/awt/Window.toFront now brings the window to the top of the z-order list.
The peer for java/awt/Scrollbar now correctly detects a down click in a "tiny" scrollbar where there is not enough space to render the scrollbar thumb.
When the drop-down window is visible, the peer for java/awt/Choice now consumes the KeyEvent.VK_ESCAPE and KeyEvent.VK_ENTER keys before the java/awt/Choice object can see the key press. This behavior matches that of build 2925 and earlier. This change makes implementing Win32 style dialogs easier.
java/text/SimpleDateFormat's constructor now defaults to the system's current time zone instead of the first time zone of the system's locale (for US English, the default would always be PST/PDT).

Fixes since VM Build 3167 (SDK for Java 3.2) and included in VM Build 3177
Fixed issues with the garbage collector when dealing with very large heaps.
Fixed issues with the Just-In-Time (JIT) compiler.
Updated WFC (build 8443).
Added support to print applets using a metafile surface instead of a bitmap surface by checking for the existence of a "__PrintUsingMetafile" <param> tag.
Fixed a crash when using the VM's profiling support to with Java serialization.
Fixed the IDispatch marshaling of VT_CY to be consistent with vtable marshaling. The IDispatch marshaler would coerce the VARIANT to VT_I4 instead of VT_CY while the vtable marshaler would preserve the full 64-bit value.
On jview shutdown, the VM now calls CoFreeUnusedLibraries on it host STA thread to avoid crashing inside a Microsoft® Visual Basic® COM DLL.
Added support for the "MS932" and "ASCII" byte/character encoders.
Fixed a deadlock in java/awt/List's and java/awt/Choice's peer when adding items from one thread while the event dispatch thread is painting the control's items.
Component.setForeground did not repaint the control as was done in earlier versions of the Microsoft VM and other Java virtual machines.
The applet image cache could generate security exceptions when the cache contained images from different base URLs.
java/awt/Dialog.toFront now brings the dialog to the top of the z-order list.
Fixed an AWT problem where showing a modal java/awt/Dialog that had previously been hidden could result in the dialog being disabled.

  © 1997-1999 Microsoft Corporation. All rights reserved.