JavaFX 1.3 SDK Release Notes

April 2010  
The JavaFX 1.3 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 in 1.3
System Requirements
Comparison Between JDK 5 and JDK 6 on Windows
Comparison Between JDK 5 and JDK 6 on Mac
JavaFX Differences on OpenSolaris and Linux
Comparison Between Desktop and Mobile
Comparison Between Desktop and TV
Known Bugs, Issues, and Limitations
More Information
 
What's New in 1.3

The JavaFX 1.3 SDK is a significant update to the JavaFX 1.2 SDK and includes new UI controls and layout changes, performance improvements, development of applications for TV, and more. For a complete list of improvements see the What's New in JavaFX 1.3 document.

Your deployed JavaFX 1.2 applications will continue to run if they use the 1.2 runtime supplied by dl.javafx.com. However, you can take advantage of JavaFX 1.3 features by rebuilding your JavaFX 1.2 applications with the JavaFX 1.3 SDK. When you do, check the Migration Guide to see where any code adjustments might be required.

System Requirements

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

Comparison Between JDK 5 and JDK 6 on Windows

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.
Application and Deployment
The differences are as follows:
  • Window transparency works only with JDK 6 update 10 at minimum.
  • JavaScript to JavaFX Script communication works only with JDK 6 update 10 at minimum.
  • The dragging of an applet outside the browser works only with JDK 6 update 10 at minimum.
  • An applet using at minimum JDK 6 update 10 is launched using JNLP.
  • Runtime arguments (for example, -Xint) can be passed from an HTML or JNLP file if an applet is launched using JRE 6 update 10 at minimum.
Fonts
No support is provided for kerning, ligatures, or tracking (letter spacing) in JDK 5.
 
Comparison Between JDK 5 and JDK 6 on Mac

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

Feature
Differences
Animation and Graphics
JDK 5 uses the Apple Quartz renderer, which might cause some rendering issues. (See known issues 7671 and 7979.) JDK 6 uses the Oracle Java2D renderer. The Oracle Java2D renderer provides better performance for simple primitives and alias primitives.
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.
Application and Deployment
Some of the application and deployment features are only available with the new JDK 6 Update 10, which is not available on Mac OS X. For a list of features available with JDK 6 Update 10, please refer to the Application and Deployment section of Comparison Between JDK 5 and JDK 6 on Windows for more details.
Fonts
No support is provided for kerning, ligatures, or tracking (letter spacing) in JDK 5.
 
JavaFX Differences on OpenSolaris and Linux

A beta release of the JavaFX 1.3 SDK is provided for the Ubuntu Linux and the OpenSolaris operating systems.

Media capabilities for JavaFX are still in development (or Alpha) on Ubuntu Linux and OpenSolaris and therefore should not be used at this time.

The following table offers a list of differences between these two platforms.

Ubuntu 8.04
OpenSolaris 2009.06
By default there is only GNU JRE 1.5.0 (gcj) and the Eclipse Java Compiler 3.3.1 (the latter in /etc/alternatives).
By default there is only JRE 6 Update13 and no JDK.
Stage transparency is disabled, due to an underlying bug in the JDK.
Stage transparency is disabled, due to an underlying bug in the JDK.
JavaFX browser applets require the new Java Plug-in found in JDK 6 Update 10 or later. The new Java Plug-in must be configured manually.
JavaFX browser applets require the new Java Plug-in found in JDK 6 Update 10 or later. The new Java Plug-in must be configured manually.
 
Comparison Between Desktop and Mobile

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 on 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

  • 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

The following classes were added to the common profile in 1.3, but are not implemented on mobile. Use of these classes will not prevent an application to run on mobile, but will have no effect.

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

Support for JavaFX TV is based on the common profile. Most applications for the desktop can also be ported to the TV environment.

Known Bugs, Issues, and Limitations

Application and Deployment | CSS | Graphics | Media | Mobile | Production Suite Graphics | Samples | TV | UI Controls

Application and Deployment

  • Issue RT-6921: Memory leak in JavaFX applets.

    Description: On Mac OS X, running several JavaFX applets in succession or reloading the same JavaFX applet several times in a row might cause an out-of-memory error. This error prevents subsequent execution of JavaFX applets, and in some cases, might cause your browser to crash. This bug is most noticeable on the Firefox browser.

    Workaround: Use of the Safari browser is recommended.

CSS

  • Issue: RT-8141: PaintType converter causes a ClassCastException.

    Description: In CSS, using the derive function in a -fx-border-color specification causes a runtime exception. For example:
    myseparator *.line {
        -fx-border-style: dotted;
        -fx-border-color: derive(-fx-background,-20%) transparent transparent transparent;
        -fx-border-width: 1px;
        -fx-padding: 3;
         -fx-background-color: null;
    }
    Workaround: Create a new property to hold the derived value and reference that property in the -fx-border-color style. For example:
    
    myseparator *.line {
        -my-derived-background: derive(-fx-background,-20%)
        -fx-border-style: dotted;
        -fx-border-color: -my-derived-background transparent transparent transparent;
        -fx-border-width: 1px;
        -fx-padding: 3;
        -fx-background-color: null;
    }
  • Issue RT-8152: Changing the CSS style sheet at runtime causes an out-of-memory error.

    Description: Changing the CSS style sheet at runtime might leak memory. If this occurs repeatedly, the system will eventually run out of memory.

    Workaround: None.

  • Issue: RT-8164: -fx-font-size without a suffix ends up with infinity.

    Description: The CSS parser fails to convert -fx-font-size values that do not specify units. For example, the following code does not create a 24-point font size as expected:
    def text = Text {
        content: "Hello"
        style: "-fx-font-size: 24"
    }
    
    Workaround: Specify the font size units (typically using pt to denote points). For example:
    def text = Text {
        content: "Hello"
        style: "-fx-font-size: 24pt"
    }

Graphics

  • Issue RT-4763: A NullPointerException occurs when a filter effect needs an image that is too large.

    Description: A filter effect that requires too much memory might cause a NullPointerException. Most filter effects are image operations that create an image in which to perform the filtering operation. If not enough memory is available, then a NullPointerException is thrown, making the application unusable.

    Workaround: Set filter effect operations on individual shape nodes rather than on a Group containing many nodes.

  • Issue: RT-6871: Some PNG files do not display on the Mac platform.

    Description: Some PNG image files may not load correctly on Apple Mac OS X systems running an older version of the JDK. This is due to incorrect processing of the PNG meta-data.

    Workaround: Store the image in another format such as JPEG or remove the meta-data from the PNG file.

  • Issues: RT-7671: A memory leak occurs with Apple JDK 1.5.0_19 or later using the default Quartz renderer.

    Description: JavaFX applications might encounter a memory leak when running JavaFX on Mac OS X 10.4 or 10.5 systems running JDK 5, version 1.5.0_19 or later. These leaks are a result of the way memory allocation is managed in the Apple Quartz renderer, which is used by JDK 5 starting with 1.5.0_19. JDK 6 uses Oracle's Java2D renderer and does not have these problems. This primarily affects Mac OS X 10.4 and 10.5 systems, which use JDK 5 by default.

    Workaround: Use the following command when running JavaFX applications in standalone mode on the desktop or as a web start application:

    -Dapple.awt.graphics.UseQuartz=false

  • Issues: RT-7979: Various rendering issues appear on Mac OS X with JDK 1.5.0_19 or later.

    Description: JavaFX applications might encounter various rendering artifacts when running JavaFX on Mac OS X 10.4 or 10.5 systems running JDK 5, version 1.5.0_19 or later. These rendering artifacts can manifest themselves as shapes drawn slightly out of alignment with each other, or with UI controls not being clipped correctly so that they "leak" into adjacent controls. These issues are caused by bugs in the Apple Quartz renderer, which is used by JDK 5 starting with 1.5.0_19. JDK 6 uses Oracle's Java2D renderer and does not have these problems. This primarily affects Mac OS X 10.4 and 10.5 systems, which use JDK5 by default.

    Workaround: Use the following command when running JavaFX applications in standalone mode on the desktop or as a web start application:

    -Dapple.awt.graphics.UseQuartz=false

  • Issue: RT-8067, RT-8250: ImageCursor throws an IndexOutOfBoundsException when an image is picked up from a placeholder image.

    Description: JavaFX applications that create an ImageCursor using an Image that has backgroundLoading=true might encounter an IndexOutOfBounds exception, or a hotspot that is incorrectly set to (0,0). These problems are due to a bug in ImageCursor, which is accessing the Image before it is ready.

    Workaround: Set backgroundLoading=false for the Image or wait for the image to be fully loaded before creating the ImageCursor.

  • Issue: RT-8276: Occasional JOGL crashes occur when using effects on Mac OS X 10.6.3.

    Description: JavaFX applications that use charts or filter effects might experience an intermittent crash in the libjogl library when running on Mac OS X 10.6.3 systems.

    Workaround: Use the following command when running JavaFX applications in standalone mode on the desktop or as a web start application::

    -Ddecora.jogl=false

Media

  • Issue: Distributing media in JAR files is not supported.

    Description: For a complete description, see Can I include media in my JAR file?

  • Issue: RT-6415: FXM/FLV files fail on low-bandwidth networks.

    Description: FXM Media playback tends to fail during initialization on low-bandwidth networks. This issue affects the Windows platforms only. The probability of stalling correlates to the size of first video tag.

    Workaround: Add a black frame at the beginning of the video.

  • Issue: RT-8265: Some FLV files render oddly on Mac OS X 10.6.

    Description: When the Perian QuickTime component is installed, some FLV files might play with either no video or corrupted video. This problem occurs on Mac OS X 10.6.

    Workaround: None.

Mobile

  • Issue: MOBL-12: A PathTransition that uses the clip attribute of the background Node does not work on mobile devices.

    Description: Clipping is implemented for rectangular shapes only.

    Workaround: None.

  • Issue: MOBL-315: MediaView does not support some transformations.

    Description: MediaView does not support the Opacity, Rotation, and Shear transformations. Instead, MediaView stays on top of all other nodes in the same Scene content.

    Workaround: None.

  • Issue: MOBL-1303: FLV/FXM video files are not supported on the mobile emulator on Mac platforms.

    Workaround: None.

  • Issue: MOBL-1306: Some UI Controls break with the Shear and Rotate transformation.

    Workaround: None.

  • Issue: MOBL-1391: Holding down the Up, Down, Left, and Right keys does not work as expected.

    Description: The KEY_REPEAT events are not supported on mobile. Thus, when components such as List View, Text Box, and Choice Button are in an interactive state, holding down the Up, Down, Left, or Right keys does not continuously move the cursor or selection.

    Workaround: Users must repeatedly press the keys to move the cursor from line to line or from character to character.

  • Issue: MOBL-1401: Vertical separators are not visible in the mobile environment.

    Workaround: Use a Line node instead.

  • Issue: MOBL-1408: Various problems occur when getting or setting the media time during MOV playback on Mac OS X.

    Description: Getting or setting the media time during MOV playback from a JAR file might cause the mobile emulator to crash or fail to render video frames.

    Workaround: Use a different video format.

  • Issue: MOBL-1415: When an application creates a lot of images, the emulator might run out of memory.

    Workaround: None.

  • Issue: MOBL-1425: Bind to TextBox.text or PasswordBox.text causes other binds to stop working.

    Description: When an application binds to the TextBox.text or PasswordBox.text variable, the bind to the TextBoxSkin.width or PasswordBoxSkin.width value is not updated. As a result, the Text Box or Password Box does not layout properly.

    Workaround: Do not bind to the TextBox.text or PasswordBox.text variable.

Production Suite Graphics

  • Issue RT-3690: __DIR__ constant in FXD descriptions causes problems when accessed from JavaFX Script.

    Description: In FXD descriptions, the __DIR__ constant is used in the url attribute of the ImageView element to specify the location of images. However, if a url attribute containing a __DIR__ constant is accessed as a variable JavaFX Script code, the FXDLoader class does not resolve this constant to the correct path of the JAR file. Note that JavaFX images display correctly when loaded in the normal fashion; the issue only occurs when JavaFX Script code uses the FXD url attribute as a variable.

  • Workaround: Expand the __DIR__ constant explicitly in the code. For example, the url attribute in the FXD description might display the following value:

    "{__DIR__}resources/Background.png"

    This value should be changed to the explicit location of the JAR file in the JavaFX application code, such as in this example:

    "jar:file:/C:/projects/misc/LayoutTest/dist/LayoutTest.jar!/layouttest/resources/Background.png"

  • Issue RT-5883: FXD Duplicator does not support duplication of the skin variable.

    Description: The Duplicator class in the javafx.fxd package does not support duplication of the skin variable in the Control and Behavior classes.

    Workaround: None.

  • Issue RT-6988: The FXD.load() function does not work when the relative path points to the parent directory.

    Description: The FXDLoader.load() function does not work with a url value that contains a double-dot parent reference "..". For example: "{__DIR__}../prodfiles/resources/Fish.fxz"

    Workaround: Use a full path to refer to the parent directory instead of the ../ relative-path.

  • Issue RT-6998: The variable FXDNode.placeholder is ignored under certain circumstances.

    Description: The variable FXDNode.placeholder is ignored during background loading on the desktop when run on the TV platform.

    Workaround: None.

  • Issue RT-7942: During background loading of JavaFX graphics, load errors might not appear.

    Description: Some load errors might not be reported properly as exceptions when JavaFX graphics (in FXZ format) are loaded in the background.

    Workaround: None.

Samples

  • Issue: Not all JavaFX 1.3 samples compile and run on the JavaFX 1.3 mobile and TV emulators.

    Description: Only samples with the Mobile or TV Ready icon compile and run on the JavaFX Mobile or TV emulator. The icons are displayed in the left sidebar of the sample description.

TV

  • Issue: TV-228: The MediaPlayer.balance attribute does not work for media files.

    Workaround: None.

  • Issue: TV-413: The textAlignment attribute of Text Node does not work.

    Description: All text alignments (left, right, center, and justify) appear the same as left alignment.

    Workaround: None.

  • Issue: TV-637: Password boxes and text boxes set as non editable can be edited.

    Workaround: None.

  • Issue: TV-653-656: MediaTimer does not work as expected.

    Description: The MediaTimer time value might either be ignored or fired at the wrong time.

    Workaround: None.

  • Issue: TV-679: An exception occurs when MediaPlayer.repeatCount is greater than 2.

    Workaround: None.

  • Issue: TV-692: The time displayed on the TV emulator might be one hour off.

    Workaround: None.

UI Controls

  • Issue: RT-5914: Setting a Slider's snapToTicks variable to true has no effect.

    Workaround: Override the Slider's value variable and add a trigger that rounds the value to the desired unit. For example,
    def slider = Slider { 
      def UNIT = 25; 
      majorTickUnit: UNIT 
      override var value on replace { 
         slider.value = javafx.util.Math.round(slider.value/UNIT)*UNIT; 
       } 
    }
    
  • Issue: RT-7270: Creating a Slider with a large range might cause an out-of-memory error.

    Description: Creating a Slider with a large range (for example, min = 0 and max = 500,000) and setting showTickMarks to true might cause an OutOfMemoryError.

    Workaround: Set showTickMarks to false, reduce the range, or adjust majorTickUnit and minorTickCount to produce a smaller number of tick marks.

  • Issue: RT-7321: Inserting an item into a list might remove the selection.

    Workaround: Reselect the desired item after the list modification, taking care to adjust the index appropriately, if for example, an item is inserted before the selected item.

  • Issue: RT-7528: ScrollView does not honor unmanaged nodes, but rather always resizes them.

    Description: If an unmanaged node is placed inside a ScrollView, the unmanaged flag is ignored, and the node is resized to its preferred size.

    Workaround: Place the node inside a Group and then place this Group inside the ScrollView.

  • Issue: RT-7723: ListView might not lay out properly when an application first opens.

    Workaround: None.

  • Issue: RT-7737: ScrollBar implements min and max value constraints improperly.

    Description: ScrollBar changes the min and max values so that min is always less than the max. Sometimes this results in values for min and max that are different from what is set by the application.

    Workaround: Try changing the order in which min and max are set. For example, when making the range larger, try setting max and then min.

  • Issue: RT-7750: ScrollView positions its contained node improperly.

    Description: ScrollView positions its contained node improperly, if that node's bounds extend above and to the left of (0,0). Usually
    this results in the upper left portion of the node not being visible when the ScrollView is scrolled as far up and to the left as is possible.

    Workaround: Add a translation component to the contained node so that its bounds are all positive: that is, below and to the right of (0,0).

  • Issue: RT-7809: Slider.min overrides value from bind-with-inverse.

    Description: If Slider.value is bound to a variable using bind-with-inverse and that variable is initialized to some value, the Slider might ignore that value.

    Workaround: None.

  • Issue: RT-7917: Tooltips prevent keystrokes from being delivered to the focused node.

    Description: When a Tooltip is shown for a control, the Tooltip takes the keystrokes and prevents them from being delivered to the control. Once the Tooltip is hidden, keystrokes are delivered normally to the control.

    Workaround: None.

  • Issue: RT-8066: Clicking on a non-focusable ListView makes the other controls lose focus.

    Description: Clicking on a ListView might move the focus away from its current location, even if that List View is not traversable.

    Workaround: None.

  • Issue: RT-8178: The look and feel of the UI controls might be different on different platforms.

    Description: On mobile devices, the default font size of controls is larger than on desktop devices.

    Workaround: None.

  • Issue: RT-8253: The size of a TextBox or PasswordBox grows when the size of the vbox increases.

    Description: TextBoxes and PasswordBoxes have different default space filling policies and do not behave consistently relative to each other.

    Workaround: Explicitly set the hfill variable of a LayoutInfo object and place it on the TextBox or PasswordBox.

  • Issue: RT-8390: The upper and lower arrow do not appear in the Choice Box control.

    Description: The Choice Box control does not display the upper arrow and lower arrow when there is a long list of items. This problem arises because the coordinates of the popup are not set correctly relative to the screen. This issue happens only in the browser, and not on the desktop. Also, this issue occurs only on the Windows platform.

    Workaround: None.

  • Issue: RT-8479: The dropdown menu does not disappear after a mouse click.

    Description: Controls that include a pop-up menu, such as Menu, Choice Box, and Menu Button, do not hide the pop-up menu when you click elsewhere in the browser window or outside the browser. To hide the menu, you must click inside the menu. This problem occurs only in applet mode, and not on the desktop.

    Workaround: None.

More Information