Java SE 6 Release 1 Developer Preview 6

September 12, 2006

Java SE 6 Release 1 is an implementation of Sun's Java SE 6 beta for Mac OS X v10.4. This seed is Preview 6 of Java SE 6 Release 1; it includes Java SE version 1.6.0_b88. This Developer Preview does not change the default version of Java but does replace some components of existing Java installations. If you have installed an earlier developer preview of Java SE 6 Release 1, this preview updates the existing Java SE 6 components.

Warning: This build has received only limited testing and should not be installed on a system with critical data.

To Install this Preview:

System Requirements

Java SE 6 Release 1 Developer Preview 6 requires:

Installation Instructions

Double-click "JavaSE6Release1DP6.dmg" to mount the image on your desktop. Once the image has mounted, double-click the "JavaSE6Release1.pkg" installer in the mounted image and follow the installation instructions.

How to determine if you have this build installed:

In Terminal, execute the following command at least twice:

/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java -version

You should see the following response on Intel-based Macs:

java version "1.6.0-dp"
Java(TM) SE Runtime Environment (build 1.6.0-dp-b88-34)
Java HotSpot(TM) Client VM (build 1.6.0-b88-17-release, mixed mode, sharing)

You should see the following response on PowerPC-based Macs:

java version "1.6.0-dp"
Java(TM) SE Runtime Environment (build 1.6.0-dp-b88-34)
Java HotSpot(TM) Core VM (build 1.6.0-b88-17-release, interpreted mode, sharing)

New features in this preview:

Features not yet implemented in this preview:

Known problems in this preview:

Areas to Test:

Specifying JVM Versions:

Preferred version remains J2SE 5.0

Installing Java SE 6 Release 1 DP6 leaves the preferred version of Java at 5.0. The Java Preferences utility at /Applications/Utilities/Java/Java SE 6/ can be used to control the preferred JVM. If, for example, you have a bundled Java application that specifies 1.3+ and you want to test it using Java SE 6, you can adjust the list of preferred JVMs:

  1. Launch Java Preferences.
  2. Click on the General tab.
  3. In the Applications area, drag "Java SE 6" to the first position.
  4. Click the Save button to save the changes.

Please note that when checking a version specification like 1.3+, a "first match" system is used, not a "highest match" system. For instance, specifying 1.3+ causes the first JVM listed in Java Preference to be used. If "Java SE 6" is the first listed, Java SE 6 is used.

Java on the Command Line

Please see User Switchable Java Command Line Tools.

Testing applets

This Developer Preview supports running applets in Safari. Use the Java Preferences application in the Java SE 6 folder to select "Java SE 6" as the version to be used for applets. You must relaunch Safari for the new settings to take effect.

Testing Java Web Start deployed applications

Developer Preview 6 includes the Java SE 6 version of Java Web Start. This version supports the new changes to the JNLP standard described in the change log for JSR 56, specifically in the area of association elements.

When testing Java Web Start, make sure that either all copies of Java Cache Viewer or Java Web Start are not running or that only the latest version of Java Cache Viewer (in the Java SE 6 folder) is running. Failure to do this may cause your application to run in a different version than expected.

In this release, all JNLP applications are downloaded and cached using the same version of Java Cache Viewer in the Java VM specified by the JNLP file. This is consistent with how Web Start operates on other platforms. If you notice any issues with your JNLP-based applications, please file a bug.

Why isn't my application launching? It's complaining about java.lang.UnsupportedClassVersionError: Bad version number in .class file

You have a mismatch between how the application is complied (using Java SE 6) and how it is being run (using J2SE 5.0 or earlier). Earlier versions of java cannot run applications compiled in Java SE 6 unless the javac compiler is explicitly told to generate a compatible class format (typically using the -target option, but see the Sun Java documentation for more details).

User Switchable Java Command Line Tools

This developer preview of Java SE 6 includes dynamically executable versions of /usr/bin/java, /usr/bin/javac, and other related Java command line tools.

Individual users can now change the version of Java tools for their command line using Java, available in /Applications/Utilities/Java/Java SE 6/. The "Java Application Runtime Settings" preference for launching Applications, double-clickable Jar files, and WebStart applications also changes the preferred version of Java invoked by /usr/bin/java and other Java-related tools in /usr/bin. This preference is under per-user control and is not set on a system-wide basis.

All pre-existing means of specifying the version of Java to use via the command line still work, such as:

This feature was added to provide a simple user interface for users to change their version of Java for applications or shell scripts that specifically rely on /usr/bin/java or users who only use the system provided $PATH in their shell.

Developers should not rely on the existence or behavior of the User Switchable Java Command Line Tools, as they are, by definition, under the control of the user. If it is necessary for an application to use a specific version of Java, the application developer should take appropriate steps to not rely on /usr/bin/java, but rather should use explicit paths into /System/Library/Frameworks/JavaVM.framework/Versions/1.x/Commands for shell script based invocations of Java tools.

Users who append /Library/Java/Home/bin to their $PATH continue to use the system default Java version (1.5.0).

Options for Rendering Graphics

Developers can choose between two different mechanisms for rendering graphics; one based on Quartz and another using a software-based renderer implemented by Sun. To choose between the Quartz and Sun-based renderers, use the boolean System Property

Setting this property after the application has started has no effect on which renderer is used.

To determine which renderer is enabled, read this property with System.getProperties.

Note that Sun's software based renderer is turned ON by default in this preview. Also, pixel coverage between the renderers, particularly in the case of arcs and curves, might be different in some scenarios. (the default in this preview and planned for the final release)

Why aren't images transparent with the Sun renderer. I expect them to be clear but they are black instead.

With the Sun-based renderer, createCompatibleImage(w, h) is returning an image format that has no alpha component. To use an alpha component, call createCompatibleImage( w, h, Transparency.TRANSLUCENT).

What happened to the notes on the Open GL Renderer?

The Open GL Renderer has not been removed yet, but we will likely disable this functionality in the near future.

Will the final build of Java SE 6 Release 1 have the Sun renderer on by default?


Per-Window Client Properties

This support is experimental and property names are not final. Names will most likely be changed before release for uniformity. These properties can be set on the JRootPane of a top-level JWindow, JFrame, or JDialog. These properties (except for apple.awt.windowShadow.revalidateNow) must be set before the heavyweight peer is created.

Property Default Description
apple.awt.brushMetalLook (unset) Determines if the window uses Brushed Metal texture. This client property overrides the System Property. The default behavior is undefined. This property must be set before the heavyweight peer for the Window is created.
apple.awt.draggableWindowBackground false Allows dragging of the Window via mouse-down on any part of the window that is not a heavyweight control. This client property overrides the System Property. This property must be set before the heavyweight peer for the Window is created.
apple.awt.windowShadow true Determines if the window has a shadow. This property must be set before the heavyweight peer for the Window is created.
apple.awt.windowShadow.revalidateNow Each time this property is changed to a different value (regardless of the old and new values), the window's shadow is recomputed based on the current window shape. This property can be changed at anytime. Use of this property requires that the property apple.awt.windowShadow be explicitly set to true.
apple.awt.documentModalSheet false Boolean property set on Document-modal JDialogs that determines if the dialog is shown as a sheet attached to its parent window. This property is checked each time the Dialog is made visible.
apple.awt.delayWindowOrdering false Determines if the window comes to front immediately during a drag and drop operation. If set to true, drag operations do not bring the window forward. Defaults to false (the window comes to front immediately). This property must be set before the heavyweight peer for the Window is created.
apple.awt.windowAlpha 1.0 Float property that sets the opacity for the whole window. Defaults to 1.0 (fully opaque). This property must be set before the heavyweight peer for the Window is created.
apple.awt.smallTitleBar false Determines if the window has a Utility-style titlebar. This property must be set before the heavyweight peer for the Window is created.

Bug fixes included in this release:

Bug fixes included in DP5:

Bug fixes included in DP4:

Bug fixes included in DP3:

Bug fixes included in DP2:

Bug fixes included in DP1:

Reporting Bugs:

Please report any bugs not mentioned in the "known problems" section above. Bugs not reported via the Bugreporter aren't in the bug database and cannot be tracked and fixed.

You may not distribute this build in any form to anyone.

Note: This communication is covered under the terms of your non-disclosure agreement and prototype site license agreement with Apple Computer, Inc.

2006 Apple Computer. Inc. All rights reserved. Apple, the Apple logo, AppleScript, Mac, and Macintosh, are trademarks of Apple Computer, Inc., registered in the U.S. and other countries. PowerPC is a trademark of International Business Machines Corporation, used under license therefrom. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Other product and company names mentioned herein may be trademarks of their respective companies.