JavaFX

Last updated
JavaFX
Developer(s) Oracle Corporation
Initial releaseDecember 4, 2008;15 years ago (2008-12-04)
Stable release
21.0.2 / January 16, 2024;7 months ago (2024-01-16) [1]
Repository
Operating system Java
Platform Cross-platform
Available in Java
Type Application framework
License GPL+classpath exception [2]
Website

JavaFX is a software platform for creating and delivering desktop applications, as well as rich web applications that can run across a wide variety of devices. JavaFX has support for desktop computers and web browsers [ citation needed ] on Microsoft Windows, Linux (including Raspberry Pi), and macOS, as well as mobile devices running iOS and Android, through Gluon Mobile.

Contents

With the release of JDK 11 in 2018, Oracle made JavaFX part of the OpenJDK under the OpenJFX project, [3] in order to increase the pace of its development. [4]

Open-source JavaFXPorts works for iOS (iPhone and iPad) and Android. [5] The related commercial software created under the name "Gluon" supports the same mobile platforms with additional features plus desktop. [6] This allows a single source code base to create applications for the desktop, iOS, and Android devices.

Features

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, the JavaFX Desktop profile includes Swing and advanced visual effects.

For the end user, the "Drag-to-Install" feature enables them to drag a JavaFX widget - an application residing in a website - 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 the Java 6u10 update, 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".

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 the layers and structure of the graphics. Developers can then add animation or effects to the static graphics imported. There is also an SVG graphics converter tool (also known as Media Factory) that allows for importing graphics and previewing assets after the conversion to JavaFX format. [7]

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 before 2.0 could run on any desktop that could run Java SE, just like it is with the current versions. [8]

JavaFX 2.0 and later is implemented as a Java library, and applications using JavaFX are written in normal Java code. The scripting language was scrapped by Oracle, however the development of it continued for a few years in the Visage project, finally ending in 2013. [9] [10]

Sun Microsystems licensed a custom typeface called Amble for use on JavaFX-powered devices. The font family was designed by mobile user interface design specialist Punchcut and is available as part of the JavaFX SDK 1.3 Release.

WebView

WebView, the embedded web browser component, uses the WebKit browser engine. It supports the usual HTML5 features such as canvas, media, meter, progress, details and summary tags as well as MathML, SVG, JavaScript and CSS. WebAssembly support is not enabled.

JavaFX Mobile

JavaFX Mobile was the implementation of the JavaFX platform for rich web 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.

Components

The JavaFX platform includes the following components:

History

Releases after version bump

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

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

Example of simple 3D scene using JavaFX. JavaFX - 3D shapes with materials adjusted.png
Example of simple 3D scene using JavaFX.

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

Oracle announced their intention to stop bundling JavaFX in their build of JDK 11 and later. [17] It is no longer bundled with the latest version.

JavaFX 11 was first shipped in September 2018.

JavaFX 12 was first shipped in March 2019.

JavaFX 13 shipped in September 2019.

JavaFX 14 was released in March 2020.

JavaFX 15 was released in September 2020.

JavaFX 16 was released in March 2021.

JavaFX 17 was released in September 2021. Highlights:

JavaFX 18 was released in March 2022. Highlights:

JavaFX 19 was released in September 2022. Highlights:

JavaFX 20 was released in March 2023. Highlights:

Early releases

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

Sun Microsystems first announced JavaFX at the JavaOne Worldwide Java Developer conference in 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. [26]

On December 4, 2008, Sun released JavaFX 1.0.2.

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

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

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

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

JavaFX 2.0 (named Presidio [26] ) 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. [29] [30]

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

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

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 JavaFX 2.2, JavaFX is bundled to be installed with Oracle Java SE platform. [11]

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

Oracle wrote in its Client Support Roadmap that JavaFX new fixes will continue to be supported on Java SE 8 through March 2025. [36] Previously, Oracle announced that they are "working with interested third parties to make it easier to build and maintain JavaFX as a separately distributable open-source module." JavaFX will continue to be supported in the future by the company Gluon as a downloadable module in addition to the JDK. [37]

Availability

As of March 2014 JavaFX is deployed on Microsoft Windows, OS X, and Linux. [38] Oracle has an internal port of JavaFX on iOS and Android. [39] [40] Support for ARM is available starting with JavaFX 8 [41] 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. [42] [43]

Starting with version 8u33 of JDK for ARM, support for JavaFX Embedded has been removed. [44]

Support will continue for x86-based architectures. [45]

A commercial port of JavaFX for Android and iOS has been created under the name "Gluon". [6]

License

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

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

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

In December 2012, new portions of the JavaFX source code were open-sourced by Oracle: [52]

See also

Related Research Articles

<span class="mw-page-title-main">Java (programming language)</span> Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages.

<span class="mw-page-title-main">Java virtual machine</span> Virtual machine that runs Java programs

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

Java Platform, Micro Edition or Java ME is a computing platform for development and deployment of portable code for embedded and mobile devices. Java ME was formerly known as Java 2 Platform, Micro Edition or J2ME.

<span class="mw-page-title-main">Swing (Java)</span> Java-based GUI toolkit

Swing is a GUI widget toolkit for Java. It is part of Oracle's Java Foundation Classes (JFC) – an API for providing a graphical user interface (GUI) for Java programs.

<span class="mw-page-title-main">Java 3D</span> Java 3D graphics API

Java 3D is a scene graph-based 3D application programming interface (API) for the Java platform. It runs on top of either OpenGL or Direct3D until version 1.6.0, which runs on top of Java OpenGL (JOGL). Since version 1.2, Java 3D has been developed under the Java Community Process. A Java 3D scene graph is a directed acyclic graph (DAG).

A Rich Internet Application is a web application that has many of the characteristics of desktop application software. The concept is closely related to a single-page application, and may allow the user interactive features such as drag and drop, background menu, WYSIWYG editing, etc. The concept was first introduced in 2002 by Macromedia to describe Macromedia Flash MX product. Throughout the 2000s, the term was generalized to describe browser-based applications developed with other competing browser plugin technologies including Java applets, Microsoft Silverlight.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process (JCP), which uses Java Specification Requests (JSRs) to propose and specify additions and changes to the Java platform. The language is specified by the Java Language Specification (JLS); changes to the JLS are managed under JSR 901. In September 2017, Mark Reinhold, chief Architect of the Java Platform, proposed to change the release train to "one feature release every six months" rather than the then-current two-year schedule. This proposal took effect for all following versions, and is still the current release schedule.

Comparison of the Java and .NET platforms.

<span class="mw-page-title-main">JavaFX Script</span>

JavaFX Script was a scripting language designed by Sun Microsystems, forming part of the JavaFX family of technologies on the Java Platform.

The Java Class Library (JCL) is a set of dynamically loadable libraries that Java Virtual Machine (JVM) languages can call at run time. Because the Java Platform is not dependent on a specific operating system, applications cannot rely on any of the platform-native libraries. Instead, the Java Platform provides a comprehensive set of standard class libraries, containing the functions common to modern operating systems.

The Java Platform Module System specifies a distribution format for collections of Java code and associated resources. It also specifies a repository for storing these collections, or modules, and identifies how they can be discovered, loaded and checked for integrity. It includes features such as namespaces with the aim of fixing some of the shortcomings in the existing JAR format, especially the JAR Hell, which can lead to issues such as classpath and class loading problems.

Gears, formerly Google Gears, is a discontinued utility software offered by Google to create more powerful web apps by adding offline storage and other additional features to web browsers. Released under the BSD license, Gears is free and open-source. Gears was conceived at a time when a comparable alternative was not available. However, Gears was discontinued in favor of the standardized HTML5 methods that eventually became prevalent.

<span class="mw-page-title-main">WebGL</span> JavaScript bindings for OpenGL in web browsers

WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.

Titanium SDK is an open-source framework that allows the creation of native mobile applications on platforms iOS and Android from a single JavaScript codebase. It is presently developed by non-profit software foundation TiDev, Inc.

The Java Development Kit (JDK) is a distribution of Java technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java Application Programming Interface (API). It is derivative of the community driven OpenJDK which Oracle stewards. It provides software for working with Java applications. Examples of included software are the Java virtual machine, a compiler, performance monitoring tools, a debugger, and other utilities that Oracle considers useful for Java programmers.

Nashorn is a JavaScript engine developed in the Java programming language originally by Oracle and later by the OpenJDK Community. It relies on the support for dynamically typed languages on the Java Platform Nashorn was included with Java 8 through JDK 14.

<span class="mw-page-title-main">Firefox OS</span> Mobile operating system by Mozilla (2014 - 2017)

Firefox OS is a discontinued open-source operating system – made for smartphones, tablet computers, smart TVs, and dongles designed by Mozilla and external contributors. It is based on the rendering engine of the Firefox web browser, Gecko, and on the Linux kernel. It was first commercially released in 2013.

<span class="mw-page-title-main">Appcelerator</span> Privately held mobile technology company

Appcelerator is a privately held mobile technology company based in San Jose, California. Its main products are Titanium, an open-source software development kit for cross-platform mobile development, and the Appcelerator Platform.

<span class="mw-page-title-main">GraalVM</span> Virtual machine software

GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for.

References

  1. "Products » JavaFX" . Retrieved 2023-06-20.
  2. 1 2 "OpenJFX Project". Oracle Corporation. Archived from the original on 2011-12-05. Retrieved 2011-12-07.
  3. "JavaFX Developer Home". www.oracle.com. Archived from the original on 2019-07-12. Retrieved 2019-06-14.
  4. Smith, Donald (March 7, 2018). "The Future of JavaFX and Other Java Client Roadmap Updates". Archived from the original on November 17, 2018. Retrieved June 14, 2019.
  5. "JavaFXPorts - Gluon". Gluon. Archived from the original on 2018-05-02. Retrieved 2018-05-01.
  6. 1 2 "Rapid Enterprise Mobile Apps: Build, Connect, Manage with Gluon". 2017-12-16. Archived from the original on 2017-12-15. Retrieved 2017-12-16.
  7. "Installing JavaFX Production Suite". Sun Developer Network. Archived from the original on 2009-08-17.
  8. "JavaFX Overview (Release 8)". docs.oracle.com. 2014. Archived from the original on 2021-10-21. Retrieved 2021-12-26.
  9. "Google Code Archive - Long-term storage for Google Code Project Hosting". Code.google.com. Archived from the original on 2016-04-01. Retrieved 2016-08-01.
  10. "Visage Language". GitHub. Archived from the original on 2023-07-07. Retrieved 2023-07-06.
  11. 1 2 "JavaFX FAQ". Oracle.com. Archived from the original on 2018-10-29. Retrieved 2019-09-24.
  12. "JavaFX Roadmap". Oracle Corporation. Archived from the original on 2012-12-01. Retrieved 2012-11-24.
  13. Yang, Chien. "3D Features Planned for Version 8". Oracle Corporation. Archived from the original on 2013-12-07. Retrieved 2012-11-24.
  14. "3D Features Planned for Version 8". Oracle Corporation. Archived from the original on 2013-05-02. Retrieved 2012-11-24.
  15. "Dialog (JavaFX 9)". Archived from the original on 2015-01-05. Retrieved 2015-01-05.
  16. Giles, Jonathan (2015-01-14). "JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization". Oracle Corporation. Archived from the original on 2016-03-10. Retrieved 2016-01-17.
  17. "Gluon and JavaFX". Archived from the original on 2019-04-29. Retrieved 2018-10-29.
  18. 1 2 "javafxports/openjdk-jfx". GitHub. Archived from the original on 2020-08-03. Retrieved 2020-07-20.
  19. "JavaFX". Gluon. Archived from the original on 2022-09-28. Retrieved 2022-10-05.
  20. "OpenJFX 12 Release notes". Gluon. Archived from the original on 2023-07-07. Retrieved 2023-07-06.
  21. "OpenJFX 13 Release notes". Gluon. Archived from the original on 2023-07-07. Retrieved 2023-07-06.
  22. "OpenJFX 14 Release notes". Gluon. Archived from the original on 2023-07-07. Retrieved 2023-07-06.
  23. "OpenJFX 15 Release notes". Gluon. Archived from the original on 2023-07-07. Retrieved 2023-07-06.
  24. JavaFX 20 and Beyond, archived from the original on 2023-06-20, retrieved 2023-06-20
  25. "F3 ( Chris Oliver's Weblog)". 2012-01-06. Archived from the original on 2012-01-06. Retrieved 2016-08-20.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  26. 1 2 3 4 5 "Repositories and Releases". 2013-06-29. Archived from the original on 2013-10-19. Retrieved 2013-10-18.
  27. Marinacci, Joshua (2009-06-09). "Top 5 Most Important Features in JavaFX 1.2". Archived from the original on 2009-06-13. Retrieved 2009-06-12.
  28. "JavaFX 1.3 Released, Improves User Experiences". 2010-04-22. Archived from the original on 2011-04-30. Retrieved 2010-04-25.
  29. 1 2 Meyer, David (2011-10-06). "JavaFX 2.0 arrives and heads for open source". ZDNet. Archived from the original on 2011-11-25. Retrieved 2011-10-09.
  30. Brown, Greg (2011-08-15). "Introducing FXML" (PDF). Archived (PDF) from the original on 2012-01-31. Retrieved 2011-10-09.
  31. "JDK 7u4 and JavaFX 2.1 released, now also including Mac OS X | Across the Universe". Terrencebarr.wordpress.com. 2012-04-27. Archived from the original on 2016-10-19. Retrieved 2016-08-01.
  32. "JavaFX 2.1 Release Notes". Oracle Corporation. Archived from the original on 2012-05-08. Retrieved 2012-05-05.
  33. "What's new in JavaFX 2.2 (The JavaFX Blog)". Blogs.oracle.com. Archived from the original on 2016-08-21. Retrieved 2016-08-01.
  34. "JavaFX 2.2 Release Notes". Oracle Corporation. Archived from the original on 2012-08-21. Retrieved 2012-10-02.
  35. Bair, Richard (2012-11-06). "Open Sourcing: decora-compiler". Oracle Corporation. Archived from the original on 2013-12-07. Retrieved 2012-11-24.
  36. "Oracle Java SE Support Roadmap". Oracle Technology Network. Oracle. 2020-05-13. Archived from the original on 2019-12-31. Retrieved 2020-05-31.
  37. "JavaFX". Archived from the original on 2019-05-24. Retrieved 2019-05-26.
  38. "General Availability Download". Oracle Corporation. Archived from the original on 2012-12-26. Retrieved 2013-01-05.
  39. Bair, Richard (2012-12-03). "Porting JavaFX". Mail.openjfx.dev.java.net. Archived from the original on 2014-06-20. Retrieved 2013-01-05.
  40. Brandalik, Tomas (2012-12-07). "Survey: JavaFX on tablets and mobile devices". Archived from the original on 2014-06-20. Retrieved 2013-01-05.
  41. "1 JavaFX Overview (Release 8)". Docs.oracle.com. Archived from the original on 2016-06-23. Retrieved 2016-08-01.
  42. Bair, Richard (2013-02-16). "February Open Source Update". Oracle Corporation. Archived from the original on 2013-02-14. Retrieved 2013-02-13.
  43. "Oracle Announces Open Source JavaFX for iOS and Android". Infoq.com. 2013-02-13. Archived from the original on 2013-02-17. Retrieved 2013-02-16.
  44. "JDK for ARM 8u33 release notes". Oracle Corporation. 2013-02-16. Archived from the original on 2015-03-14. Retrieved 2015-03-09.
  45. Topic, Dalibor (2013-01-27). "Raspberry Pi's mailing list: Where's JavaFX in recent Java 8u33 for the ARM ?". Archived from the original on 2015-03-09. Retrieved 2015-03-09.
  46. "OpenJFX Compiler Project". Openjfx-compiler.dev.java.net. Retrieved 2008-06-07.[ permanent dead link ]
  47. "Project Scene Graph home". Scenegraph.dev.java.net. Archived from the original on 2012-03-06. Retrieved 2008-06-07.
  48. "JavaFX Downloads". Openjfx.dev.java.net. Retrieved 2008-06-07.[ permanent dead link ]
  49. "Will JavaFX technology be released in open source?". Archived from the original on 2008-06-12. Retrieved 2008-06-07.
  50. Kaul, Jeet (2008-12-16). "JavaFX — the road ahead". Archived from the original on December 17, 2008. Retrieved 2009-01-03.
  51. Bair, Richard (2011-12-02). "Call for patches". Oracle Corporation. Archived from the original on January 31, 2013. Retrieved 2011-12-07.
  52. Safrata, Pavel (2012-12-18). "More of JavaFX open-sourced". Oracle Corporation. Archived from the original on 2012-12-29. Retrieved 2013-01-05.

Bibliography