- Easy start
- Starting with Java FX is surprisingly easy. You can build your first application in minutes. There are many "hello world" tutorials out there. That is important for the first impression and so adoption. The tutorials, however, are more focussed on visual effects and less on clean application structure, patterns and code organization.
- Good IDE support
- The plain IDE support (e.g. editing experience) is still not as good as Java. You get basic refactorings like e.g. renaming methods, classes and packages, moving artifacts etc. More sophisticated refactorings like e.g. extract method, extract attribute, quick fix etc. are still not available. The tool support right now is, however, orders of magnitude better than it was at the beginning of Java (around JDK 1.2-1.3).
- Unit test integration
- Junit 3 can be used easily to test your components. You only have to integrated the library and run the test. It is, however, not as seemless integrated to your IDE, as it is the case in Java (e.g. no green bar).
- Continuous integration support
- You can already build Java FX with ANT (standard in NetBeans 6.8) and Maven therefore you can also easily use e.g. hudson to run continuous builds. There is still work to be done.
- Books, tutorials, docs and online resources available
- There are a lot of resources out there. Most of them go far beyond "hello world" and simple applications. The amount and quality is still not comparable with e.g. Swing - but is amazing for such young technology. So far I was able to find answers to the majority of my open questions.
- Support for form based applications. They are still typical in the enterprise
- Building Java FX forms is easy. Even without any WYSIWYG support, manually with simple VBox / HBox containers. NetBeans 6.8 comes with a visual designer (composer), which allows the composition of visual components in WYSIWYG way.
- Easy to use visual components
- The current version (1.2) is lacking more complex controls, what will be fixed in the 1.3 version. Table controls will be available after the 1.3 release. Tables are crucial, but you can still easily integrate Swing JTables without any effort. The only caveat - you will have to code the TableModels probably in Java.
- Easy integration with "legacy" Java world
- The Java FX -> Java integration is seamless and works well. The Java -> Java FX integration is possible but not well defined yet.
- Support for remoting - remote protocols
- Java FX comes with good HTTP, REST / XML support. You can invoke instantiate and invoke Java classes directly from Java FX, so you can use whatever you want from Java FX - from CORBA to Hessian
- RCP / Java integration
- NetBeans engineers are working on an interesting idea - you will be able to implement whole RCP applications with plain Java FX.
- Java FX comes with closures and functional aspects - you can save a lot of code, comparing it to Swing / JFace development. You don't have to implement interfaces as listeners and just register your functions (methods). Binding, triggers and the functional capabilities allow you to build enterprise UIs with a fraction of the in Java necessary code. Model View Presenter patterns are easy to implement. You don't need any framework for data binding. It comes with the language. You can reuse any Java business logic and integrate it with Java FX.
NEW: Effective Java EE 7 -- Available For Streaming