JavaFX is a software platform for creating and delivering rich internet applications
that can run across a wide variety of devices.
JavaFX is intended to replace Swing as the standard GUI library for Java SE, but both
will be included for the foreseeable future.
The current release has support for desktop computers and web browsers on Windows, Linux,
and Mac OS X.
Before version 2.0 of JavaFX, developers used a statically typed, declarative language called
JavaFX Script to build JavaFX applications.
Because JavaFX Script was compiled to Java bytecode, programmers could also use Java
code instead.
JavaFX applications could run on any desktop that could run Java SE, on any browser that
could run Java EE, or on any mobile phone that could run Java ME.
However, JavaFX 2.0 and later is now implemented as a native Java library and therefore applications
using JavaFX are written in native Java code.
JavaFX Script has been scrapped by Oracle, but development is being continued in the
Visage project.
JavaFX 2.x does not support the Solaris operating system or mobile phones; however as Oracle
plans to integrate JavaFX to Java SE embedded 8, Java FX for ARM processors is currently
in developer preview phase.
On desktops, the current release supports Windows XP, Windows Vista, Windows 7, Windows
8, Mac OS X and Linux operating systems.
Beginning with JavaFX 1.2, Oracle has released beta versions for OpenSolaris.
On mobile, JavaFX Mobile 1.x is capable of running on multiple mobile operating systems,
including Symbian OS, Windows Mobile, and proprietary real-time operating systems.
Technical highlights Common profile
JavaFX 1.1 was based on the concept of a "common profile" that is intended to span across all
devices supported by JavaFX.
This approach makes it possible for developers to use a common programming model while building
an application targeted for both desktop and mobile devices and to share much of the code,
graphics assets and content between desktop and mobile versions.
To address the need for tuning applications on a specific class of devices, the JavaFX
1.1 platform includes APIs that are desktop or mobile-specific.
For example JavaFX Desktop profile includes Swing and advanced visual effects.
Drag-to-Install From the point of view of the end user "Drag-to-Install"
allows them to drag a JavaFX widget and drop it onto their desktop.
The application will not lose its state or context even after the browser is closed.
An application can also be re-launched by clicking on a shortcut that gets created automatically
on the user's desktop.
This behavior is enabled out-of-the-box by the Java applet mechanism since Java 6 update
10 and is leveraged by JavaFX from the underlying Java layer.
Sun touts "Drag-to-Install" as opening up of a new distribution model and allowing developers
to "break away from the browser".
Integrating graphics created with third-party tools
JavaFX 1.x included a set of plug-ins for Adobe Photoshop and Illustrator that enable
advanced graphics to be integrated directly into JavaFX applications.
The plug-ins generate JavaFX Script code that preserves layers and structure of the graphics.
Developers can then easily add animation or effects to the static graphics imported.
There was also an SVG graphics converter tool that allows for importing graphics and previewing
assets after the conversion to JavaFX format.
Design highlights Sun Microsystems licensed a custom typeface
called Amble for use on JavaFX powered devices.
The font family was designed by mobile user interface design specialists Punchcut and
is available as part of the JavaFX SDK 1.3 Release.
JavaFX platform components JavaFX 2.x platform includes the following
components: The JavaFX SDK: runtime tools.
Graphics, media web services, and rich text libraries.
Java FX 1.x also included JavaFX compiler, which is now obsolete as JavaFX user code
is written in Java.
NetBeans IDE for JavaFX: NetBeans with drag-and-drop palette to add objects with transformations,
effects and animations plus a set of samples and best practices.
For JavaFX 2 support you need at least NetBeans 7.1.1 . For Eclipse users there is a community-supported
plugin hosted on Project Kenai.
Java FX scene builder: This was introduced for Java FX 2.1 and later.
A user interface is created by dragging and dropping controls from a palette.
This information is saved as an FXML file, a special XML format.
Tools and plugins for creative tools: Plugins for Adobe Photoshop and Adobe Illustrator
that can export graphics assets to JavaFX Script code, tools to convert SVG graphics
into JavaFX Script code and preview assets converted to JavaFX from other tools
JavaFX Mobile
JavaFX Mobile was the implementation of the JavaFX platform for rich Internet applications
aimed at mobile devices.
JavaFX Mobile 1.x applications can be developed in the same language, JavaFX Script, as JavaFX
1.x applications for browser or desktop, and using the same tools: JavaFX SDK and the JavaFX
Production Suite.
This concept makes it possible to share code-base and graphics assets for desktop and mobile
applications.
Through integration with Java ME, the JavaFX applications have access to capabilities of
the underlying handset, such as the filesystem, camera, GPS, bluetooth or accelerometer.
An independent application platform built on Java, JavaFX Mobile is capable of running
on multiple mobile operating systems, including Android, Windows Mobile, and proprietary real-time
operating systems.
JavaFX Mobile was publicly available as part of the JavaFX 1.1 release announced by Sun
Microsystems on February 12, 2009.
Sun planned to enable out-of-the-box support of JavaFX on the devices by working with handset
manufacturers and mobile operators to preload the JavaFX Mobile runtime on the handsets.
JavaFX Mobile running on an Android was demonstrated at JavaOne 2008 and selected partnerships
were announced at the JavaFX Mobile launch in February, 2009.
Together with several partners as Canoo Engineering, Sun presented JavaFX in action on the latest
mobile hardware devices at the World Mobile Congress in Barcelona, 16–19 February 2009.
One of the first applications running on a mobile device was Music Pinboard Mobile.
These plans were withdrawn with the release of JavaFX 2.x which dropped support of JavaFX
Script and JavaFX mobile; the last JavaFX mobile was version 1.2.
History JavaFX Script, the scripting component of
JavaFX, began life as a project by Chris Oliver called F3.
Sun Microsystems first announced JavaFX at the JavaOne Worldwide Java Developer conference
on May 2007.
In May 2008 Sun Microsystems announced plans to deliver JavaFX for the browser and desktop
by the third quarter of 2008, and JavaFX for mobile devices in the second quarter of 2009.
Sun also announced a multi-year agreement with On2 Technologies to bring comprehensive
video capabilities to the JavaFX product family using the company's TrueMotion Video codec.
Since end of July 2008, developers could download a preview of the JavaFX SDK for Windows and
Macintosh, as well as the JavaFX plugin for NetBeans 6.1.
Major releases since JavaFX 1.1 have a release name based on a street or neighborhood in
San Francisco.
Update releases typically do not have a release name.
JavaFX 1.0 On December 4, 2008 Sun released JavaFX 1.0.
JavaFX 1.1 JavaFX for mobile development was finally
made available as part of the JavaFX 1.1 release announced officially on February 12, 2009.
JavaFX 1.2 JavaFX 1.2 was released at JavaOne on June
2, 2009.
This release introduced: Beta support for Linux and Solaris,
Built-in controls and layouts, Skinnable CSS controls,
Built-in chart widgets, JavaFX I/O management, masking differences
between desktop and mobile devices, Speed improvements.
Windows Mobile Runtime with Sun Java Wireless Client.
JavaFX 1.3 JavaFX 1.3 was released on April 22, 2010.
This release introduced: Performance improvements
Support of additional platforms Improved support for user interface controls
JavaFX 1.3.1 This version was released on August 21, 2010.
This release introduced: Quick startup time of JavaFX application.
Custom progress bar for application startup.
JavaFX 2.0 This version was released on October 10, 2011.
This release introduced: A new set of Java APIs opening JavaFX capabilities
to all Java developers, without the need for them to learn a new scripting language.
Java FX Script support was dropped permanently.
Support for high performance lazy binding, binding expressions, bound sequence expressions,
and partial bind re-evaluation.
Dropping support for JavaFX Mobile.
Oracle announcing its intent to open source JavaFX.
JavaFX runtime turning to be platform specific, utilizing system capabilities, as video codec
available on the system ; instead of implementing only one crossplatform runtime as with JavaFX
1.x . Various improvements have been made within
the JavaFX libraries for multithreading.
The Task APIs have been updated to support much more concise threading capabilities.
In addition, the scene graph has been designed to allow scenes to be constructed on background
threads and then attached to "live" scenes in a threadsafe manner.
On May 26, 2011, Oracle released the JavaFX 2.0 Beta.
The beta release was only made available for 32 and 64 bit versions of Microsoft Windows
XP, Windows Vista and Windows 7.
An Early Access version for Mac OS X was also available for members of the JavaFX Partner
Program at the time, while Linux support was planned for a future release of JavaFX.
JavaFX 2.0 was released with only Windows support.
Mac OS X support was added with JavaFX 2.1 .Linux Support was added with JavaFX 2.2 .
JavaFX 2.0 makes use of a new declarative XML language called FXML.
JavaFX 2.1 On April 27, 2012, Oracle released version
2.1 of JavaFX, which includes the following main features:
First official version for Mac OS X H.264/MPEG-4 AVC and Advanced Audio Coding
support CoolType text
UI enhancements including combo box controls, charts, and menu bars
Webview component now allows JavaScript to make calls to Java methods
JavaFX 2.2 On August 14, 2012, Oracle released version
2.2 of JavaFX, which includes the following main features:
Linux support Canvas
New controls: Color Picker, Pagination HTTP Live Streaming support
Touch events and gestures Image manipulation API
Native Packaging JavaFX 2.2 adds new packaging option called
Native Packaging, allowing packaging of an application as a "native bundle".
This gives users a way to install and run an application without any external dependencies
on a system JRE or FX SDK.
As of Oracle Java SE 7 update 6 and Java FX 2.2, JavaFX is bundled to be installed with
Oracle Java SE platform.
JavaFX 8 JavaFX is now part of the JRE/JDK for Java
8 and has the same numbering, i.e., JavaFX 8.
JavaFX 8 adds several new features, including: Support for 3D graphics
Sensor Support Printing and rich text support
Future work Oracle also announced in November 2012 the
open sourcing of Decora, a DSL Shader language for JavaFX allowing to generate Shaders for
OpenGL and Direct3D.
Platforms JavaFX is currently deployed on Windows, Mac
OS X, and Desktop Linux.
Oracle has currently an internal port of JavaFX on iOS and Android Linux.
Support for ARM is now available starting with JavaFX 8 On February 11, 2013, Richard
Bair, chief architect of the Client Java Platform at Oracle, announced that Oracle would open
source the iOS and Android implementations of its JavaFX platform in the next two months.
License There are currently various licenses for the
modules that compose the JavaFX runtime: Parts of the core JavaFX runtime are still
proprietary software and its code has not yet been released to the public,
The JavaFX compiler and an older version of the 2D Scene graph are released under a GPL
v2 license, The NetBeans plugin for JavaFX is dual licensed
under GPL v2 and CDDL.
During development, Sun explained they will roll out their strategy for the JavaFX licensing
model for JavaFX first release.
After the release, Jeet Kaul, Sun's Vice president for Client Software, explained that they will
soon publish a specification for JavaFX and its associated file formats, and will continue
to open source the JavaFX runtime, and decouple this core from the proprietary parts licensed
by external parties.
At JavaOne 2011, Oracle Corporation announced that JavaFX 2.0 would become open source.
Since December 2011, Oracle began to open source the JavaFX code under the GPL+linking
exception.
In December 2012, new portions of the JavaFX source code have been Open-Sourced by Oracle:
the animations and timelines classes the event delivery mechanism and other various
core classes the render tree interface, and the implementation
of this interface the geometry and shapes implementation
the java part of the rendering engine used in the rendering pipeline
the logging support See also
JavaFX Script JavaFX Mobile
Curl, a declarative programming language for web applications
JavaScript Related platforms and tools
Granite data services: an event-driven, cross-framework, application client container that aims at
simplifying JavaFX data-intensive application development.
References
Bibliography
External links Official website
OpenJFX website Ellison at JavaOne: Myths About JavaFX, Android,
and J2ME A JavaOne 2009 talk about JavaFx + Groovy