JavaFX

JavaFX
Developer(s) Sun Microsystems (now acquired by Oracle Corporation)
Initial release December 4, 2008 (2008-12-04)
Stable release
8[1] / March 18, 2014 (2014-03-18)
Operating system Java Runtime Environment
Platform Cross-platform
Available in Java
Type Application framework
License EULA, parts under GPL+linking exception[2]
Website www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html

JavaFX is a software platform for creating and delivering desktop applications, as well as rich internet applications (RIAs) 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.[3] JavaFX has support for desktop computers and web browsers on Microsoft 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.

JavaFX 2.0 and later is implemented as a native Java library, and 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.[4] JavaFX 2.x does not support the Solaris operating system or mobile phones; however, Oracle plans to integrate JavaFX to Java SE Embedded 8, and Java FX for ARM processors is in developer preview phase.[5]

On desktops, JavaFX supports Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, Mac OS X and Linux operating systems.[6] Beginning with JavaFX 1.2, Oracle has released beta versions for OpenSolaris.[7] 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 API 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 (or application residing in a website and is visible within the browser window) 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 (a.k.a. Media Factory) 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:

  1. 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.
  2. 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.
  3. JavaFX scene builder: This was introduced for Java FX 2.1 and later. A user interface (UI) is created by dragging and dropping controls from a palette. This information is saved as an FXML file, a special XML format.
  4. Tools and plugins for creative tools (a.k.a. Production Suite): 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 (currently not supported in JavaFX 2.x versions)

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 (incl. LG Electronics, Sony Ericsson) were announced at the JavaFX Mobile launch in February, 2009.

History

JavaFX Script, the scripting component of JavaFX, began life as a project by Chris Oliver called F3.[8]

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.[9]

JavaFX 1.0

On December 4, 2008 Sun released JavaFX 1.0.2

JavaFX 1.1

JavaFX for mobile development was finally made available as part of the JavaFX 1.1 release (named Franca[9]) announced officially on February 12, 2009.

JavaFX 1.2

JavaFX 1.2 (named Marina[9]) was released at JavaOne on June 2, 2009. This release introduced:[10]

JavaFX 1.3

JavaFX 1.3 (named Soma[9]) was released on April 22, 2010. This release introduced:[11]

JavaFX 1.3.1

This version was released on August 21, 2010. This release introduced:

JavaFX 2.0

This version (named Presidio[9]) was released on October 10, 2011. This release introduced:

Various improvements have been made within the JavaFX libraries for multithreading. The Task APIs have been updated to support much more concise threading capabilities (i.e. the JavaTaskBase class is no longer necessary since all the APIs are in Java, and the requirement to have a callback interface and Java implementation class are no longer necessary). 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.[12][13]

JavaFX 2.1

On April 27, 2012, Oracle released version 2.1 of JavaFX,[14] which includes the following main features:[15]

JavaFX 2.2

On August 14, 2012, Oracle released version 2.2 of JavaFX,[16] which includes the following main features:[17]

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.[18]

JavaFX 8

JavaFX is now part of the JRE/JDK for Java 8 (released on March 18, 2014) and has the same numbering, i.e., JavaFX 8.[19]

JavaFX 8 adds several new features, including:[20]

JavaFX 9

JavaFX 9 features are currently centered on extracting some useful private APIs from the JavaFX code to make these APIs public:

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.[25]


JavaFX Application Example

Example Code

The following is a rather simple JavaFX-based program. It displays a window (a stage) containing a button.

Hello world program in JavaFX
package javafxtuts;
 
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
 
/**
 *
 * @author http://JavaFXtuts.com
 */
public class Javafxtuts extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        // Creating the java button
        Button btn = new Button();
        // Setting text to button
        btn.setText("Hello World");
        //registering a handler for button
        btn.setOnAction(new EventHandler<ActionEvent>() {
            
            @Override
            public void handle(ActionEvent event) {
                // printing Hello World! to the console
                System.out.println("Hello World!");
            }
        });
        // Initializing the StackPane class
        StackPane root = new StackPane();
        // Adding all the nodes to the FlowPane
        root.getChildren().add(btn);
        //Creating a scene object
        Scene scene = new Scene(root, 300, 250);
        //Adding the title to the window (primaryStage)
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        // show the window(primaryStage)
        primaryStage.show();
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

Platforms

As of March 2014 JavaFX is deployed on Windows, Mac OS X, and Desktop Linux.[26] Oracle has an internal port of JavaFX on iOS and Android Linux.[27][28] Support for ARM is available starting with JavaFX 8[1] 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.[29][30] Starting with version 8u33 of JDK for ARM, support for JavaFX Embedded has been removed.[31] Support will continue for x86-based architectures.[32]

License

There are various licenses for the modules that compose the JavaFX runtime:

During development, Sun explained they will roll out their strategy for the JavaFX licensing model for JavaFX first release.[37] 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.[38]

At JavaOne 2011, Oracle Corporation announced that JavaFX 2.0 would become open source.[39] Since December 2011, Oracle began to open source the JavaFX code under the GPL+linking exception.[2][40]

In December 2012, new portions of the JavaFX source code have been Open-Sourced by Oracle:[41]

See also

References

  1. 1 2 "1 JavaFX Overview (Release 8)". Docs.oracle.com. Retrieved 2016-08-01.
  2. 1 2 "OpenJFX Project". Oracle Corporation. Retrieved 2011-12-07.
  3. "JavaFX FAQ". Oracle.com. Retrieved 2016-08-01.
  4. "Google Code Archive - Long-term storage for Google Code Project Hosting". Code.google.com. Retrieved 2016-08-01.
  5. "JavaFX Supported Configurations". Oracle.com. 2014-04-08. Retrieved 2016-08-01.
  6. "Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle". Java.sun.com. Retrieved 2016-08-01.
  7. "F3 ( Chris Oliver's Weblog)". 2012-01-06. Retrieved 2016-08-20.
  8. 1 2 3 4 5 "Repositories and Releases". 2013-06-29. Retrieved 2013-10-18.
  9. Marinacci, Joshua (2009-06-09). "Top 5 Most Important Features in JavaFX 1.2". Retrieved 2009-06-12.
  10. "JavaFX 1.3 Released, Improves User Experiences". 2010-04-22. Retrieved 2010-04-25.
  11. Meyer, David (2011-10-06). "JavaFX 2.0 arrives and heads for open source". ZDNet. Retrieved 2011-10-09. The update introduces a new XML-based markup language called FXML, which is aimed at defining user interfaces. Other scripting languages, such as Groovy, JRuby and Scala, can also be used to write apps in JavaFX 2.0, as can the Java development tools NetBeans and Eclipse.
  12. Greg Brown (2011-08-15). "Introducing FXML" (PDF). Retrieved 2011-10-09.
  13. "JDK 7u4 and JavaFX 2.1 released, now also including Mac OS X | Across the Universe". Terrencebarr.wordpress.com. 2012-04-27. Retrieved 2016-08-01.
  14. "JavaFX 2.1 Release Notes". Oracle Corporation. Retrieved 2012-05-05.
  15. "What's new in JavaFX 2.2 (The JavaFX Blog)". Blogs.oracle.com. Retrieved 2016-08-01.
  16. "JavaFX 2.2 Release Notes". Oracle Corporation. Retrieved 2012-10-02.
  17. "JavaFX FAQ". Oracle. Retrieved 11 April 2013.
  18. "JavaFX FAQ". Oracle Corporation. Retrieved 2012-05-05.
  19. "JavaFX Roadmap". Oracle Corporation. Retrieved 2012-11-24.
  20. Chien Yang. "3D Features Planned for Version 8". Oracle Corporation. Retrieved 2012-11-24.
  21. "3D Features Planned for Version 8". Oracle Corporation. Retrieved 2012-11-24.
  22. Jonathan Giles (2015-01-14). "JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization". Oracle Corporation. Retrieved 2016-01-17.
  23. Richard Bair (2012-11-06). "Open Sourcing: decora-compiler". Oracle Corporation. Retrieved 2012-11-24. I'm going to be open sourcing today another one of our projects called decora-compiler. We have our own DSL for shader languages called Decora. What we do is generate shaders for OpenGL and D3D from this language. We also generate Java code and SSE native code. For some shaders, we ended up generating them and then hand-tweaking them from there
  24. "General Availability Download". Oracle Corporation. Retrieved 2013-01-05.
  25. Richard Bair (2012-12-03). "Porting JavaFX". Mail.openjfx.dev.java.net. Retrieved 2013-01-05.
  26. Tomas Brandalik (2012-12-07). "Survey: JavaFX on tablets and mobile devices". Retrieved 2013-01-05.
  27. Richard Bair (2013-02-16). "February Open Source Update". Oracle Corporation. Retrieved 2013-02-13. We’re also going to open source our iOS and Android implementations over the next couple months.
  28. "Oracle Announces Open Source JavaFX for iOS and Android". Infoq.com. 2013-02-13. Retrieved 2013-02-16. Oracle has announced plans to open source the iOS and Android implementations of its JavaFX UI platform "over the next couple of months", allowing developers to use the technology to write cross-platform applications for those platforms for the first time.
  29. "JDK for ARM 8u33 release notes". Oracle Corporation. 2013-02-16. Retrieved 2015-03-09. Starting with JDK 8u33, JavaFX Embedded is removed from the ARM bundle and is not supported.
  30. Dalibor Topic (2013-01-27). "Raspberry Pi's mailing list: Where's JavaFX in recent Java 8u33 for the ARM ?". Retrieved 2015-03-09. JavaFX continues to be provided as a fully supported part of the Oracle JDK 8 product on x86 platforms (Windows, Linux, Mac).
  31. 1 2 "JavaFX Downloads". Openjfx.dev.java.net. Retrieved 2008-06-07.
  32. "February Open Source Update". JavaFX News, Demos and Insight // FX Experience. 2013-02-11. Retrieved 2016-05-25.
  33. "OpenJFX Compiler Project". Openjfx-compiler.dev.java.net. Retrieved 2008-06-07.
  34. "Project Scene Graph home". Scenegraph.dev.java.net. Retrieved 2008-06-07.
  35. "Will JavaFX technology be released in open source?". Retrieved 2008-06-07. Sun will continue to engage the OpenJFX community as we release JavaFX products. This fall we will be rolling out our open source strategy for JavaFX technology concurrent with the release of version 1 of JavaFX Desktop
  36. Kaul, Jeet (2008-12-16). "JavaFX — the road ahead". Archived from the original on December 17, 2008. Retrieved 2009-01-03. Sun is committed to open standards and open source, and specifications are coming soon(...)There are some dependencies on licensed code that cannot be open sourced. We are working towards decoupling the dependencies so that the non-proprietary portions can be open sourced. Currently the JavaFX compiler, Netbeans JavaFX plugin and Eclipse JavaFX plugin are already being developed in the open source. The scene graph is out in the open. We will put the core runtime out in the open over time.
  37. Meyer, David (2011-10-06). "JavaFX 2.0 arrives and heads for open source". ZDNet. Retrieved 2011-10-09. At the event, Oracle also announced plans to make the JavaFX platform open source. It has submitted a proposal to the OpenJDK Community, and its first contribution will include the JavaFX user interface controls and related libraries. "Other JavaFX components are planned to follow in multiple phases," the company said.
  38. Richard Bair (2011-12-02). "Call for patches". Oracle Corporation. Retrieved 2011-12-07. Hey guys, Just a note to indicate that the UI controls have been open sourced into openjdk
  39. Pavel Safrata (2012-12-18). "More of JavaFX open-sourced". Oracle Corporation. Retrieved 2013-01-05. Hello everyone, today we open-sourced another part of JavaFX. Following projects are now part of OpenJFX

Bibliography

External links

This article is issued from Wikipedia - version of the 12/1/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.