What are the options for developing a user interface hosted by a powerful browser in Java?


I am interested to widen my horizons and wish to learn what are the options for developing a powerful browser hosted UI in Java. All I know is .NET based solutions, specifically Silverlight, which I find extremely powerful, although not without some regretful omissions as compared to its elder brother - WPF.

So, to rephrase my question. Are there mature Silverlight alternatives in Java?



  • I am not starting the war of Java vs .NET, so please do not raise the benefits of Java against .NET in general. I am interested in a specific area only, anything else is put aside.
  • Please, do not bring Adobe AIR, flex, HTML5, etc... The questions is about Java.

The question is about Java, but front-ends for the web are almost never written in pure Java.

  • GWT - that's where you write pure Java which is then translated to javascript and html automatically

  • JSF - you reuse rich components to create your pages. Still there's html and javascript. This resembles the ASP.NET model

  • Vaadin - heard of it, never used it. Seems promising

  • ZK - Same as above.

  • jQuery - yes, this has nothing to do with Java, but is very powerful tool for creating rich UI

  • Flex - easy integration with Java back-ends. (I personally don't like Flex, but it's a viable option)

(I specifically omitted JavaFX, because in my opinion it is not yet mature)