Rich Internet Applications, also known as RIA for the English initials of the term Rich Internet Applications, are a new paradigm in terms of web application development. This new paradigm has been enhanced due to the importance of offering users an interface through which they can take advantage of the benefits offered by web applications, providing them with more powerful or rich multimedia and intuitive interfaces.
Web applications are all software that is available to a group of users defined through the Internet or an Intranet, thus allowing access to the application through the communication facilities provided by the networks of computers. This software is hosted on a web server which administers and manages the use of said software.
Web applications are normally made up of web files, which are presented to the user through interpreted languages, such as HTML and XHTML. These files are interpreted by an Internet browser, which transforms the source code into an understandable interface for the user. Web applications make use of thin clients, which interact with the web server; the web server shares its resources with all the clients connected to it, while the clients reserve their resources to be used solely and exclusively by themselves.
What is JavaFX?
JavaFX is a next-generation open source client application platform for desktop, mobile, and embedded systems built on Java. It is a collaborative effort of many individuals and companies with the goal of producing a modern, efficient and full-featured tool set for developing rich client applications. (Source: JavaFX)
JavaFX with RIA applications
JavaFX, with its extensive set of APIs and committed support from Oracle, is a natural choice for high-performance, data-rich Internet applications. A vibrant JavaFX community continues to develop and support JavaFX portability on mobile platforms.
Write Once, Run Everywhere (WORA) was Java’s catchphrase for decades, helping companies save millions of dollars that would otherwise have been spent porting the same application on different platforms. This ability was part of the reason for Java’s unprecedented success. Java toolkits for user interface (UI) development also follow the same pattern. The AWT library introduced in 1995 for user interface development was based on the same philosophy. This library relied on native calls to draw objects. Native dependency in a multi-process sub-environment caused lock conflicts, leading to deadlocks and heavy utilization of system resources. The appearance of such applications depended on the native platform and was not uniform across platforms.
Swing was the next set of UI tools to address these issues. Swing became very popular and was the platform of choice for desktop application development. This continued until the popularity of web applications became popular, changing the way a user interface was used and designed. A large number of desktop applications in industry, automotive, banking, software development IDEs, and the healthcare domain continue to heavily use Swing-based applications. However, Swing uses the sub-process of event dispatch for both dispatch and rendering, which limits the benefits of hardware acceleration in modern multi-core systems and also lacks libraries, animations, graphics, media and efficient 3D.
As we progressed in time, the use of browser-based web applications increased enormously and other computing devices such as tablets, smartphones, set-top boxes, etc., became more powerful in terms of processing power and memory. The changed scenario called for a common development platform that could integrate rich Internet features into the desktop environment and support a cross-platform and cross-device programming environment. JavaFX was the answer to this requirement.
JavaFX 1.0 was released by Sun Microsystems (acquired by Oracle in 2010) in 2008 as the Next Generation User Interface Toolkit and aimed to become the successor to Swing. It was designed to take advantage of new age GPUs with hardware acceleration capabilities and additional support for 3D, animation, media, WebView, and CSS styling. JavaFX1.0 was a scripting language for the Java platform that could interoperate with it. JavaFX 2.0 was completely based on the Java API, allowing any Java developer to use it with the IDE. Oracle JavaFX is available for desktop and mobile application development through community support.
The development model and the open source community
JavaFX is a next-generation client UI toolkit primarily for desktop and embedded devices. It is developed as an open source project, OpenJFX, through contributions from individuals and other companies in the vein of OpenJDK. OpenJFX is GPL licensed freeware except the classpath, just like OpenJDK. It is one of the projects under the OpenJDK statute and creates JavaFX libraries as jar files. It is packaged with standard JDK and Java Runtime Environment (JRE), and ships together with Oracle JDK versions.
JavaFX’s development is done under the OpenJFX project by individual contributors and companies. Anyone can contribute to JavaFX development; however, the contribution follows an established procedure whereby the community reviews code submitted through open source mailing lists. The review is done strictly in accordance with the OpenJDK guidelines and bylaws. Anyone can download the code, which is a mix of native and Java code, use it in applications, or port it to other platforms as well. It is compatible with Windows 32/64 bit, Linux 32/64 bit and Mac OS X. The mailing list for OpenJFX development is openjfx-dev.