About Java and JRuby Development
JEE, Spring, Guice
Hibernate, Java Persistence (JPA)
and various Web Frameworks

Hot topics

eBook shop

PDF edition of articles

Window id concept

An approach to leverage the use of the HTTP session

Web Framework Test and Analysis

Article series on web technologies with detailed reviews.

Hibernate eBook

A continuously updated book on Hibernate and Java Persistence

Oh JavaFX, Oh JavaFX - why don't you progress?

In my article on web frameworks and technologies I named JavaFX as a coming technology for plugin based single page application. A year and two conferences later (JavaOne 2009 and Devoxx 2009) I have to admit that I might be wrong.

On the Devoxx conference, I held a presentation on choosing web technologies, had a lot of discussions with other developers about their point of view on multi page versus single page application and technologies like Wicket, Tapestry, Grails, Google GWT, JavaFX and Adobe Air. I saw a presentation on JavaFX and joined the BOF and I need to say that I am strongly disappointed of the progress of JavaFX. The presentation was about enterprise development with JavaFX and mostly showed new components like grids, calendars, trees etc and how to test JavaFX. It didn't show anything else not because the presentation was bad, it was nicely done, but there is nothing else to show.

Hey folks, enterprise development is not or not only about components. Enterprise development is about how to build large scale applications efficiently. May be I misunderstood the intention of JavaFX and it is mostly meant to build a small app with spinning, bouncing and twisting elements on the page. But if I didn't misunderstand the intention, then I would like to make you aware of a number of things required to build large scale applications with a single page technology.

Building dialogs efficiently

A couple of years ago, we switched to web based applications as they simplified deployment and scalability. In addition building dialogs was far easier as compared to well made desktop applications. You might remember the effort building and testing a desktop dialog with all the drag and drop and context menus.

Building multi page application is extremely fast. Think of Tapestry using a single tag to render a form with JavaScript input validation from a given model class.

<t:beaneditForm source="myModel"</>

Single page web applications are like desktop applications and naturally share their complexities when building dialogs. It is very crucial that this can be done efficiently. The user needs to build a dialog consisting of standard components and his own components as efficient as possible. He is likely to need the following items

Personally, I believe that the Netbeans people are the greatest JavaFX haters in the world. There is not a great difference between a text editor and Netbeans when working with JavaFX. Drag and drop can destroy your code easily and you do formatting the old way using your tab key. It is just unbelievable.

Common requirements building applications

In my article on web frameworks, I named a number of common requirements. Most of them apply to single page technologies as well. I would like to list the most important here.

Input validation

I need to do input validation and I don't want to do it multiple times. Having a model like the following class, should allow me to bind domain fields to components and provide the input validation out of the box.

@Entity
public class Author {   

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Integer id;
    
    @Length(min = 3, max=30)
    private String name;
    
    @Email
    private String email;
...
}

Integration of business layer

Building interactive web application with single page technologies doesn't naturally mean that we are switching back to fat desktop client. Business logic might to a larger extent stay on the server. Actually all kinds of distribution of logic between client and server is possible.

Documentation on building normal business applications is extremely rare to non existing on http://www.javafx.com/learn/directory.jsp

On the other hand the documentation on spinning and bouncing is very complete.

More than one dialog

Aren't there JavaFX applications with more than a single dialog. Well there are, but where is the documentation. How do I organize dialogs in a larger application?

Modularization

How do I build a JavaFX application with 100 dialogs efficiently? Currently, I would recommend to switch to Google Web Toolkit or to multipage web frameworks. JavaFX needs to address

I cannot wait 30 seconds for my application to start up click through a dialog and see if a button is now correctly positioned

Testing

The word 'test' doesn't appear on http://www.javafx.com/learn/directory.jsp I assume that is because you don't make mistakes with JavaFX.

Browser like navigation

Web based applications use the browser as steering wheel of the application. Browser and link based navigation is a great advantage over desktop like applications which always require following menu sequences.

I believe that single page technologies should try as most to take over advantages of multi page applications. In my initial article, I called such applications unified applications. On the Devoxx conference somebody used the term hybrid applications.

Google Web Toolkit is on the way to leverage the browser navigation while JavaFX is spinning and bouncing.

Best Regards
Sebastian Hennebrueder