Sun Java Solaris Communities My SDN Account Join SDN

Article

JavaFX 1.1 SDK Release Notes

 
February 2009  
The JavaFX 1.1 Software Development Kit (SDK) contains libraries and supporting documentation for JavaFX application development. This document provides release information and known issues regarding the SDK.
 
Contents
 
What's New
System Requirements
Differences Between JDK 5 and JDK 6 on Windows and Mac OS
Differences Between the JavaFX 1.0 and JavaFX 1.1 Scripting Language
Differences Between Desktop and Mobile for the Common API for 1.1
Known Bugs, Issues and Limitations
More Information
 
What's New

JavaFX 1.1 SDK is an update to the JavaFX 1.0 SDK and includes the following changes.

Key Release Components

  • Official support for JavaFX Mobile
  • Language improvements
  • Performance and stability improvements

JavaFX 1.1 SDK

  • JavaFX Mobile Emulator enables developers to begin creating advanced and expressive mobile content.
  • Desktop Runtime update improves performance and stability.
  • Better support is provided for developing mobile or desktop applications from the same code base.

JavaFX 1.1 Platform Features

  • Support for "full screen" applications
  • Improved support for applications that need to access resources across multiple domains
  • Standard navigation method for cross-device content

Documentation

JavaFX 1.1 Language

  • Addition of all Java numeric types (float, double, long, int, short, and byte) to the type system
  • Sequence performance and footprint optimizations
  • Dynamic footprint optimizations in animations
System Requirements

The system requirements for the JavaFX 1.1 SDK are available in the JavaFX System Requirements document.

Differences Between JDK 5 and JDK 6 on Windows and Mac OS

The following table offers a comparison between JDK 5 and JDK 6 on Windows.

Feature
Differences
Animation and Graphics
Some performance issues in JDK 5 have been resolved in JDK 6.
Compiler
The reference library for the JavaFX Script API is integrated in JDK 6.
Media
Support for the 32/64 bit Intel Power makes the "fat" binary larger.
Web Services
None
Application and Deployment
Window transparency works only with JDK 6 update 10 at minimum.
Fonts
No support is provided for kerning, ligatures, or tracking (letterspacing) in JDK 5.
Local Storage
None
SDK
None
 

The following table offers a comparison between JDK 5 and JDK 6 on Mac OS.

Feature
Differences
Animation and Graphics
JDK 5 uses Apple Quartz renderer, which provides better support for alpha blending and antialiased primitives. JDK 6 uses the Sun 2-D renderer. The Sun 2-D renderer provides better performance for simple primitives and alias primitives.
Compiler
None
Media
Lower fps rates on 24 fps video samples have been experienced on JDK 5. JDK 6 tests resulted in 21 - 23 fps. JDK 5 tests resulted in 18 - 21 fps on the same hardware configuration.
Web Services
None
Application and Deployment
None
Fonts
No support is provided for kerning, ligatures, or tracking (letterspacing) in JDK 5.
Local Storage
None
SDK
None
 
Differences Between the JavaFX 1.0 and JavaFX 1.1 Scripting Language

New Language Features

  • The JavaFX 1.1 scripting languages includes Java numeric types (float, double, long, int, short, and byte).

  • The underlying implementation of Number is now float, not double.

Source Compatibility Notes

  • The JavaFX 1.1 compiler generates an error when an override is attempted on a def or a public-read var. The JavaFX 1.0 compiler does not throw such errors. Therefore, you must modify your JavaFX 1.0 source code to remove any override on a def or a public-read var.

  • The compiler is now stricter and enforces the use of the override keyword when you override a method of a superclass. You must modify existing source code to conform to this new enforcement.

Binary Compatibility Notes

  • To take advantage of the JavaFX 1.1 features, such as performance improvements, ensure that you rebuild your 1.0 JavaFX applications. When you do, you might have to adjust your code based on the source compatibility notes in the previous section.

  • Your deployed JavaFX 1.0 application will continue to run as is. These applications use the compatible 1.0.1 runtime supplied by dl.java.com.

  • Mobile applications developed with the JavaFX 1.0 runtime must be compiled with the JavaFX 1.1 runtime.
Differences Between Desktop and Mobile for the Common API for 1.1

Some functions from the common profile are not applicable for mobile devices:

  • The cursor constants listed in the javafx.scene.Cursor class do exist in the common profile. Setting cursor has no effect in mobile devices.

  • Some mouse events are different on mobile devices. For example, MouseEntered is not relevant for mobile. Therefore, the corresponding functions of the Node objects do not work in mobile applications. onMouseExited and onMouseWheelMoved are generated when a drag occurs, but general mouse movements (such as a hover) are not recorded.

Following are the desktop-specific classes and packages that are not implemented in the common profile and consequently do not work in mobile applications:

  • javafx.ext.Swing - All standard desktop UI components, such as buttons, icons, and labels

  • javafx.reflect - A package that provides reflective access to JavaFX values and types

  • javafx.scene.effect and javafx.scene.effect.light - Two packages to create visual effects, such as shadows, blurs, reflection, and lighting

  • ShapeIntersect and ShapeSubtract - Two classes in the javafx.scene.shape package to create compositions of geometric shapes

  • AppletStageExtension - A class from the javafx.stage that provides browser-specific functionality and, therefore, is not supported for mobile applications

  • FXEvaluator and StringLocalizer - Two classes from the javafx.util package
Known Bugs, Issues, and Limitations

Applet Issues

  • Issue: JavaFX application shortcuts might not be displayed on the desktop when the application is dragged on to the desktop from the browser and the browser is closed. This issue affects only Windows systems that useJDK 6 update 10.

    Workaround: Clear the Java cache and start the application again.
    1. Go to Windows Control Panel and click Java.
    2. In the Java Control Panel, click the General tab. Under Temporary Internet Files, click Settings.
    3. Click Delete Files.
    4. Start the application again.
  • Issue RT-1950: JavaFX applets fail to recognize keyboard input if more than one tab is opened in Firefox 3.0 on Windows Vista and Internet Explorer 7 on Windows XP Service Pack 3.

    Description: A JavaFX applet might become unresponsive to keyboard input events if the browser has multiple tabs opened and is loading different pages.

    Workaround: Refresh the applet page or use only a single tab when accessing the applet.
  • Issue RT-2299: Movement of applets from one monitor to another in a multiple monitor configuration is not supported.

    Description: The JavaFX 1.1 SDK does not support multiple monitor configurations in some cases. When a browser running an applet is moved from one monitor to another, and the applet is then dragged out of the browser, repainting issues might occur.

    Workaround: Move the applet back to the original screen.
  • Issue RT-3099: Applet hangs upon reload.

    Description: After you install Java for the first time on a system through the JavaFX applet load in a browser, the page is reloaded. The loading graphic might appear indefinitely.

    Workaround: Manually reload the page to force the applet to load properly.

Application and Deployment Issues

  • Issue RT-3332: JDK 6 Update 12: Launching an application through an installed shortcut fails with a NoClassDefFoundError message.

    Description: With JDK 6 Update 12, if a JavaFX applet that was created from the Netbeans IDE with Pack200 enabled is launched with a desktop shortcut that was created after dragging the applet from browser onto the desktop, it might fail with the message NoClassDefFoundError for JSException error.

    Workaround: Disable the Pack200 option from the Application category in the project's Properties dialog box, or manually remove the following two lines from <myapp>_browser.jnlp before deploying and launching the application:
    <property name="jnlp.packEnabled" value="true"/>
    <property name="jnlp.versionEnabled" value="true"/> 
  • Issue: Signed applications do not run if the application uses an invalid or self-signed certificate on a Windows system.

    Description: Signed JavaFX and Java applications do not run on Windows if the application uses an invalid or self-signed certificate.

    Workaround: Open the Java Control panel. On the Advanced tab, in the Security section, make sure that the following two checkboxes are selected:
    • Allow user to grand permissions to signed content
    • Allow user to grant permissions to content from an untrusted authority

Compiler Issues

  • Issue RT-1975: FX.exit() does not properly clean up when running in a browser.

    Description: Cleanup does not occur when you run a JavaFX application in a browser that contains a timeline or user action that calls FX.exit(). The embedded stage is not cleared when the exit occurs, leaving the stage still visible with its content possibly running.

    Workaround: Use FX.addShutdownAction() and bind a Boolean to the Stage/Scene content so it is cleared when an exit occurs. For example:

    
    var exitCalled: Boolean = false;
    FX.addShutdownAction(function():Void {
    // Stop any Timelines if they have been created and started
    exitCalled = true;
    });
    
    var s: Stage = Stage {
    title: "Exit Sample"
    scene : Scene {
    content: bind if (not exitCalled) [
    
    // Scene Content that will be displayed in the Browser Stage 
    ] else [] // this will clear the Browser Stage
    }
  • Issue JFXC-960: Although JavaFX Script String is a required type and cannot be null, this assignment is not enforced by the compiler.

    Description: The compiler does not enforce the assignment of null, initialization to null in an object literal, initialization to null in an initial value, cast of null value to String, argument passing, or null returned from a Java method.

    Workaround: Do not assign null values, and check for null on values coming from Java and casts.
  • Issue JFXC-2293: No error is generated if an attempt is made to override a def or a public-read variable.

    Workaround: Do not override def or public-read variables.

Graphics Issues

  • Issue RT-1935: The Node.cache attribute interacts poorly with the DropShadow effect.

    Description: The Node.cache attribute interacts poorly with some effects, including the DropShadow effect. Some filtered nodes are rendered incorrectly with the wrong location or with the wrong transform.

    Workaround: Set the Node.cache attribute to false for the affected nodes.
  • Issue RT-1694: Moving or animating a Stage window is not smooth.

    Description: When moving a Stage by using programmatic control or animating it by using a timeline, the movement is not smooth.

    Workaround: None.

  • Issue RT-3046: Hiding a full-screen Stage causes painting artifacts.

    Workaround: None.

  • Issue RT-3206: When a stage that contains Swing controls is displayed in full-screen mode, the controls are not displayed properly on JDK 6 update 7.

    Workaround: On Windows, the workaround is to upgrade to JDK 6 update 10 at minimum.

  • Issue RT-3293: ImageView does not gain focus when altering opacity on focus gain.

    Description: Changing the opacity of a node after it is shown takes the focus off the node.

    Workaround: None.

Windows-Specific Issues

  • Issue RT-3213: With a fresh installation of Windows, Java software might not install automatically.

    Description: If you freshly install Windows, when you access a JavaFX application for the first time and choose to install Java, Java might not install automatically. However, you should be directed to the Java site.

    Workaround: Download and install Java manually, then restart Firefox and reload the page.

Mac OS Specific Issues

  • Issue RT-1771: Intermittent UnsatisfiedLinkError occurs with native JNLP files.

    Description: On Mac OS, you might receive an UnsatisfiedLinkError while running a JavaFX applet.

    Workaround: Choose one of the following options:

    • Exit the browser and start again.

    • Clear the Java cache:
      1. Choose Applications > Utilities > Java > Java Preferences.
      2. Click the Security tab and click the Delete Files button.
      3. Execute the applet again.
  • Issue RT-1926: The Enter key does not work in the End User License Agreement dialog box on Safari/Mac OS X/JDK 5.

    Description: In the End User License Agreement dialog box, the Accept button is selected as the default option (highlighted), but the Enter key does not work on Mac/Safari.

    Workaround: Use a mouse click to accept the End User License Agreement.
  • Issue RT-3195: When using a self-signed certificate to run a JavaFX application on JDK 1.5 on Mac OS X, users might encounter an ArrayIndexOutOfBoundsException (AIOOB), such as the following:
    security: Loaded certificates from Deployment session certificate store
    java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
       at java.util.LinkedList.entry(LinkedList.java:368)
    
    Description: This issue occurs because the Apple JDK 1.5 will not validate self-signed certificates..

    Workaround: There is no exact workaround. The options are to run the application with no certificate or to run it with a standard certificate.
  • Issue RT-1828:

    Description: In Mac OSX 10.4 with JDK 1.5.0_16, there is a URL resolution issue with Java Web Start which prevents the launching of some JavaFX applications, which rely on externally referenced graphics, including the Java Store.

    Workaround: None

Media Issues

  • Issue 3359: MediaPlayer occasionally plays sound even when volume=0.

    Description: When a new media object is set to the player with volume=0, the player correctly reports zero volume, but occasionally sound can still be heard.

    Workaround: Set the volume to a non-zero value, and then set the volume to zero on a second line. For example:
    player.volume = 0.001;
    player.volume = 0.0; 
    
  • Issue: Media width, height, and duration are unavailable as soon as the source is set.

    Description: You expect to obtain the width, height or duration of streaming media as soon as the source is set, but instead you obtain the default value.

    Workaround: To obtain the correct value, bind the width, height, or duration to on replace. For example, var screenHeight = bind myMedia.height on replace { .. }
  • Issue: Playback stops when the current time reaches the buffer head.

    Description: When playing a streaming media over a slow network, the playback pauses if it reaches the buffer head and does not play again without user or program intervention, even though the buffer is progressing.

    Workaround: Regardless of whether you set the player to autoPlay, the workaround is to detect this pause when the current time is greater than 0 and programmatically enable play after a suitable buffer progress is detected. How much buffer progress is needed is for the application developer to decide.
  • Issue: Buffer progress is not updated on Windows if the player pauses when it reaches the buffer head.

    Description: If the application developer displays buffer progress when playing a streaming media and the media pauses because the current time reaches the buffer head, the engine it is not updated, even though the buffer is progressing inside.

    Workaround: To enable the display of the buffer progress under such conditions, fetch or pseudo-update metadata, such as volume. This action triggers the updating of the buffer progress variable.
  • Issue: On a very slow network with high network latency, playing a streaming media, even though supported by the platform, throws an UnsupportedMediaException.

    Description: On a very slow network with high latency, obtaining enough of the stream to determine the type and its metadata might not always be possible. In such cases, the engine times out and reports an UnsupportedMediaException.

    Workaround: Try playing the media again so that the engine can pick up enough data from the downloaded cache to enable further playback of the media.

Cross-Domain XML Support

  • Issue RT-1512: crossdomain.xml file is enabled.

    Description: Ordinarily, an unsigned JavaFX application may only connect back to the web server from which it originated. This restriction prevents the application from causing denial-of-service attacks by making rapid connections to arbitrary machines on the Internet. Web servers now have the facility to selectively open their data to some clients through the use of a policy file called crossdomain.xml.

    The ability to check this file has been added to the JRE Version 6 Update 10 and also to JavaFX Script Runtime version 1.1. Additional information about CrossDomain XML can be found in the Java SE Plugin 6u10 Release Notes.

Mobile Issues

  • Issue RT-2008: Media does not function on the mobile emulator.

    Workaround: Ensure that the path to QuickTime native DLLs appears on the system PATH (<QT>/QTSystem). By default, the QuickTime installer does this for you.
  • Issue RT-2802: Text selection is not supported on mobile.

    Workaround: None.
  • Issue RT-2842: Mobile supports only JPEG and PNG images.

    Workaround: None.
  • Issue RT-3304: The AbstractAsyncOperation and RemoteTextDocument APIs are not supported on mobile.

    Description: The AbstractAsyncOperation and RemoteTextDocument classes in the javafx.async package are incorrectly listed as being in the common profile. In fact they are in the desktop profile. Applications that wish to remain portable across desktop and mobile should avoid using the javafx.async package.

    Workaround: None.
  • Issue MOBL-272:. Image on Mobile Emulator has object retention problem causing Out of Memory Errors

    Description: After a number of images are loaded, the midlet may become unresponsive due to an uncaught java.lang.OutOfMemoryError exception.

    Workaround: Either exit the mobile emulator or exit the midlet. To exit the mobile emulator, select Application > Exit. To exit the midlet, select Application > AMS Home, select the application name, then select End from the menu.
  • Issue MOBL-1: Keypad navigation keys do not map to the emulator orientation.

    Description: When an application maps functionality to the navigation arrows (up, down, right, left), the mapping does not readjust when the orientation is flipped.

    Workaround: None.
  • Issue MOBL-40: Mobile emulator does not start.

    Description: Running a JavaFX application on either the command-line or in the NetBeans IDE fails and displays the error Cannot obtain device properties:null.

    Workaround: Delete your javafx-sdk folder. The default location of this folder on Windows XP is C:\Documents and Settings\username\javafx-sdk. On Windows Vista, the default location is C:\Users\username\javafx-sdk.
  • Issue MOBL-111: Invalid media duration is reported for WAV and MIDI files.

    Workaround: Use other media files, for example, MP3 and 3GP.
  • Issue MOBL-116: The MediaView.fitWidth and MediaView.fitHeight attributes do not have any effect when playback is paused.

    Workaround: Either set these attributes before pausing playback or call MediaPlayer.play() followed by MediaPlayer.pause() . These attributes then take a visible effect when playback is paused. There is no audible effect.
  • Issue MOBL-126: Bounds calculation is slightly off after a parallel transition.

    Description: On mobile, the real bounds of a path are approximated, which means the end positions might be slightly off.

    Workaround: None.
  • Issue MOBL-201: Mobile loses linear gradient with repainting of application.

    Workaround: When filling multiple shapes with one instance of gradient, do not use the translateX and translateY variables. Instead, apply the calculations directly to the centerX, centerY variables for a circle, or something similar for the shape you are filling.
  • Issue MOBL-206: MediaPlayer.stop() can resume playback when called on a paused MediaPlayer.

    Description: Calling MediaPlayer.stop() sets the current time of the underlying MMAPI player to zero, which resumes playback at the same time.

    Workaround: None.
  • Issue MOBL-224: Painting issues occur when the scaleX/Y value of a circle is nonzero.

    Description: When the stroke and fill are set for a circle and you increase the circle's scaleX/Y value above zero, a small rectangle appears in the middle of the circle.

    Workaround: None.

Samples Issues

  • Issue APP-1408: All samples in the JavaFX 1.1 SDK point to a Sun internal server.

    Description: All samples in the JavaFX 1.1 SDK point to a Sun internal server and so will fail to run. This issue affects only the case in which samples are run by clicking the Web Start link in the sample descriptions included with the stand-alone JavaFX 1.1 SDK.

    Workaround: Use the samples on javafx.com.
  • Issue: Samples are not displayed in the browser.

    Description: If you access the Internet through a proxy, you might need to modify your proxy settings.

    Workaround: For information about configuring proxy settings on the Java platform, go to the Java Networking and Proxies page.
More Information
Rate and Review
Tell us what you think of the content of this page.
Excellent   Good   Fair   Poor  
Comments:
Your email address (no reply is possible without an address):
Sun Privacy Policy

Note: We are not able to respond to all submitted comments.