What platform Swing / JavaFX / JSF?
Over the next few months I have to redevelop a very old stock management application our company sells. It is a desktop application with a highly complex interface that has been optimised over the years to show the maximum amount of relevant data per screen and also to minimize the amount of effort the user has to expend in order to get their job done.

Our desire when redeveloping this application is to keep the usability (while adding some new functionality) but also bring the application kicking and screaming into the 21st century. My first thought was to make it a JSF based web application but the more I see of the original the more I think it would be difficult to match the smoothness of operation using current web components. That has got me thinking about the alternatives which amount to a Swing application or a JavaFX application.

I'm not so keen on Swing application as I would like to get away from having to install and maintain software on customers machines but if we went the Swing route it would probably be built on top of NetBeans. 

I have essentially no experience of JavaFX but it appears to offer what we want and be a good compromise offering the speed and richness of a desktop application with the zero foot print of a web application (we can insist our customers install the JVM).

What are the pros and cons of the three choices? Are there any better alternatives?

Additionally, I would like the stock management engine running server side irrespective of how the customer interacts with it. If we went down the JavaFX or Swing route what would be the best method of communication between the client and the server? I'm currently favouring the idea of linking them using SOAP web services (the server components are all JEE 6 + EJB 3.1 so this should be fairly simple).
What platform Swing / JavaFX / JSF?
===

Over the next few months I have to redevelop a very old stock management application our company sells. It is a desktop application with a highly complex interface that has been optimised over the years to show the maximum amount of relevant data per screen and also to minimize the amount of effort the user has to expend in order to get their job done.

Our desire when redeveloping this application is to keep the usability (while adding some new functionality) but also bring the application kicking and screaming into the 21st century. My first thought was to make it a JSF based web application but the more I see of the original the more I think it would be difficult to match the smoothness of operation using current web components. That has got me thinking about the alternatives which amount to a Swing application or a JavaFX application.

I'm not so keen on Swing application as I would like to get away from having to install and maintain software on customers machines but if we went the Swing route it would probably be built on top of NetBeans. 

I have essentially no experience of JavaFX but it appears to offer what we want and be a good compromise offering the speed and richness of a desktop application with the zero foot print of a web application (we can insist our customers install the JVM).

What are the pros and cons of the three choices? Are there any better alternatives?

Additionally, I would like the stock management engine running server side irrespective of how the customer interacts with it. If we went down the JavaFX or Swing route what would be the best method of communication between the client and the server? I'm currently favouring the idea of linking them using SOAP web services (the server components are all JEE 6 + EJB 3.1 so this should be fairly simple).