JavaFX 2 is basically a front-end tool enabling developers to create and deploy rich internet applications (RIAs) that behave consistently across multiple platforms.
Developing enterprise applications involves many people — mash-up builders, programmers, graphic designers, media editors and many more. Today, applications are judged not only on their efficiency or user-friendliness but also on how they look and feel. Since clients nowadays are more designed than programmed, JavaFX rightly paved the path in giving RIAs a new look while leveraging the same old Java code.
The features provided by JavaFX 2 are excellent, and it seems promising. But in order to be truly enterprise-ready it needs more than that. JavaFX 2 still has a long way to go in becoming a robust enterprise development tool.
In this article, we’ll evaluate JavaFX 2’s enterprise readiness in five different areas:
- Features support
- Ease of Development
- Ease of deployment
- Documentation
- Overall impression
JavaFX 2 Features
API
JavaFX 2 is fully integrated with the Java SE 7 runtime and comes as a bundled package of Java SDK + JavaFX. To work with JavaFX 2, developers can use their existing Java tools, such as IDEs, code re-factoring, debuggers, and profilers. Also, JavaFX 2 includes the familiar language features, such as generics, annotations and multi-threading.
This cohesiveness means two things. First, it means JavaFX designers have an ambitious plan, and it is going to stay. We expect to see lot of development activity from its creators as well as the community in the coming days.
Secondly, it means developers can now leverage and share existing Java APIs with JavaFX effortlessly and efficiently. Also, JavaFX APIs are designed to work with other JVM languages such as JRuby and Scala, keeping the option open to extensive development on other platforms as well.
Graphics
With its underlying hardware accelerated graphics pipeline called Prism coupled with its Glass windowing toolkit, JavaFX 2 can leverage modern GPUs for seamless and fast rendering of rich graphics. It can run on both hardware and software renderers, including 3-D. It supports DirectX 9 on Windows XP/Vista, DirectX 11 on Windows 7, OpenGL on Mac and Linux, and Java 2D when hardware acceleration is not supported. Graphics acceleration is very crucial because in a complex, heavily loaded enterprise application JavaFX 2’s UI rendering can make or mar the application performance.
RIA
RIAs have gradually extended from computer to portable devices and TVs with many more devices yet to be seen. JavaFX can widen the market reach of an application by distributing RIAs easily across billions of devices.
Applications developed in JavaFX 2 can extensively use the GStreamer multimedia framework media engine. They can also leverage a wide variety of built-in UI controls for form-based user input, charts, layout and advanced UI controls such as table, tree view, rich text editor and CSS3 skinning. JavaFX 2 also enables embedding HTML and JavaScript-based rendering on Webkit.
Web Services
Enterprise components generally communicate via Web resources. Web-based frameworks interact with enterprise components for rendering information. Sometimes these components are accessed from non-Web resources as well. Java supports SOAP through the javax.xml.soap package. Since JavaFX is build on top of Java2, it can leverage Java foundry for SOAP, REST-based Web services.
Ease of Development with JavaFX 2
JavaFX Scene Builder is available for Windows, MacOS and Linux. This drag-and-drop visual design layout will immensely increase the productivity of the developers.
The developer community has long sought a scene builder integrated with NetBeans or other popular Java IDE. The JavaFX Scene Builder separates application logic from UI layout via FXML and CSS. With this XML-based markup language for defining user interfaces JavaFX 2 provides a suitable alternative to developing UI programmatically in Java. FXML is easy to learn and intuitive for developers familiar with Web technologies or other markup-based UI technologies.
JavaFX 2 controls can be easily integrated with Swing and work towards a combined UI design. However, integrating JavaFX 2 and Swing is not a very acceptable proposition because it results in code and design that do not look very good. Moreover, why does one GUI family need to hire controls from another? Does JavaFX 2 lack something? The answer is that Swing is more mature and has a lot more controls than JavaFX 2 at present, so integration may be an option. But with time, this integration will not be popular, I believe. JavaFX 2 coding can be started simply by importing jfxrt.jar as a library in any popular Java IDE.
Deployment with JavaFX 2
In the past, frequent upgrades for JavaFX applications were troublesome affairs. However, the latest application packager released with JavaFX version 2.2 solved the problem to a great extent. This version allows developers to bundle JRE and JavaFX 2 runtime libraries as a package with the deployed application. This provides the end user with a traditional native installation process on Windows, MacOS and Linux.
Igor Nekrestyanov and Nancy Hildebrandt have provided detailed information on building, packaging and deploying JavaFX application in the tutorial Deploying JavaFX Applications.
JavaFX 2 Documentation
As usual, JavaFX 2 has javadoc. Apart from that, there are several tutorials online, and its active community is growing. There is also an official site to JavaFX 2 how-to’s.
Overall Impression of JavaFX 2
Although it is still in its juvenile stage JavaFX 2 is progressing well and is sure to be a competent player in the arena very soon. JavaFX 2 can be easily integrated with the other frameworks such as Spring and Hibernate. (Check the article Integrate JavaFX, Hibernate and PostgreSQL with the MVC Pattern.
So is JavaFX 2 enterprise ready? The answer would be yes, in view of all the features and current progress, but the issue of stability remains to be determined.
It’s true JavaFX 2 has yet to make a mark as an extensive business tool, especially in the enterprise arena. Jim Weaver’s effort to put together a contest to challenge the best minds to bring out more from JavaFX developers is a commendable attempt to popularize JavaFX among mainstream developers. However, new learners expect a little more friendly environment to tingle their gray cells.
To attract more enterprise developers, JavaFX would need the following features:
- Integration of Scene Builder with NetBeans and other popular Java IDE such as IntelliJ IDEA, Eclipse etc.
- More efficient deployment of JavaFX 2 from the IDE
- More built-in controls, especially for business specific enterprise applications
- Easy navigation and data source controls, especially for handling large data sets in enterprise applications.
Conclusion
Without a real world enterprise application to test, it is very difficult to judge the stability of JavaFX 2 as a front-end tool. Coping with huge and complex data is a challenge for even the most mature UI frameworks. This article will hopefully entice more and more developers to experiment with the technology and enable us to say JavaFX is enterprise ready without any doubt.