1. 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.

  1. 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.

  1. 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.

  1. 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;
...
}
  1. 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.

  1. 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?

  1. 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

  1. 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.

  1. 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