I've only touched JSF for a little while, and I didn't like it, so my answer will be slightly biased, but: Layout: GWT layout is programmatic (i.e. , not declarative. But stay tuned for GWT1.7, it might become declarative).
GWT layout is done using things like layout managers, panels etc (if you have seen swing programming, it will look similar). JSF is declarative as far as I know. Control library: JSF has rich controls, but it is difficult to customize them to any extend without writing a lot of code.
GWT has many basic controls, and a simple framework to compose them. I personally find that GWT allows finer grain customization. Javascript: JSF, no js required, unless you are writing your own control(which means tonnes of js?).
GWT no js requred, unless you are integrating external js library. Then you have some js to write by the way of JSNI (javascript native interface). Cross-browser: as far as I can tell both GWT and JSF seems to be pretty cross-browser....but just because I ve never seen any hitches so far, doesn't mean they both don't have their issues.
Tooling: For JSF, I used oracle's JDeveloper, and the debugging/stepping through code part is quite nice, though JDeveloper is slow as hell. It does have a wysiwyg GUI editor, but when I used it, it kinda sucked. GWT has the google eclipse plugin, which integrates well.
But so far, no decent GUI editor for GWT afaict. GWT designer is one, but its not free. Intellij IDEA is another great IDE for GWT.
Bookmarking / Browser Navigation: GWT has a history management component which you then roll a bookmarking component, and its pretty standard (http://developerlife.com/tutorials/?p=232 ). Not sure about jsf, never got that far.
I've only glanced at the GWT docs, so can't compare the technologies. I know next to nothing about Flex. I'll spill what I know about JSF, though, so hopefully you can make up your own mind.
I know there was an effort to integrate GWT and JSF (G4JSF), but don't think it went anywhere. JSF2 is on the cusp of release. David Geary is writing a series of devWorks articles on the new features.
Layout: is it declarative, programmatic or a mix of both? Generally declarative. There are two common view technologies: JSP and Facelets.
The JSF component tree approach to UI can be at odds with the inherent nature of JSPs, so prefer Facelets. Facelets are standardised in JSF2 and thus will become part of JEE6. It is possible, but non-trivial, to use a purely programmatic view.
Most JSF tags provide a binding attribute which can be used to provide an alternative component at view creation time, but I wouldn't recommend using it without a detailed understanding of the JSF framework. Programmatic composite example on the MyFaces wiki. Control library: how rich is the available control library?
How easy is it to extend or write custom controls that "play nice" with the built-ins? The standard library is very basic. This is what you get with a JSF implementation (e.g. Mojarra; MyFaces).
Beyond this, you can drop in libraries onto your classpath to provide new or alternative controls. As of JSF 1.2, this is the primary method by which you gain AJAX-enabled controls. There are a number of open source/commercial libraries out there and proprietary IDEs generally provide more.
I believe many of these libraries take their own approach to AJAX implementation, so would be surprised if they mixed well. Jsfmatrix.net tries to maintain a list of libraries and their features. Writing a JSF control is a fiddly process with many manual steps.
Writing a sophisticated control that supports children (like a datagrid) can get quite complex and requires a detailed knowledge of the JSF framework. It is possible to create composite controls from existing controls and this is considerably easier than writing a control from scratch. Trying to integrate existing JavaScript libraries can be difficult.
A particular sticking point can be in how JSF handles HTML ids. Adding your own AJAX support can be non-trivial due to the way the JSF lifecycle works and how controls decode their own input values from the request.In JSF2, AJAX support is standardised in the framework. Jim Driscoll wrote a blog post last November about how to write an in-place editable text field (the API might have changed since, though).
There are a few other tweaks that should help with AJAX integration. Javascript: how much of it do I need to write in order to be successful with the framework? None, so long as the set of controls you use does everything you want.
See above. Cross-browser: assuming I'm not writing a lot of my own HTML and JS, do the frameworks function equally well in all modern browsers? This will depend on the widget libraries you choose.
There is some JS in the base implementations - expect it to be browser agnostic. Tooling: is a rapid edit/refresh cycle available? How easy is it to debug the client and server code?
I debug on a web server, so performance depends on how heavyweight the container is. The Eclipse tools tend to autodeploy-on-save to a running container; NetBeans uses a run button to do the same (these may not be the only options - I haven't had cause to go looking). The experience is adequate but not exceptional.
I've seen JSP WYSIWYG editors in both Eclipse and NetBeans (though I think the latter is for the Visual JSF/Project Rave/Woodstock library). I don't know about Facelet editors - I haven't gone looking. I did notice this: Jim Driscoll's comments on the state of JSF2 tooling.
Bookmarking / Browser Navigation: this is a common problem in Flex; does the framework play nicely with these? There is nothing inherent in JSF that stops you from bookmarking a page, though it does tend to be a HTTP POST-based framework. It relies on (usually *.
Faces or /faces/*) servlet mappings to serve the views, so URLs tend not to be friendly (though there are things you can do about that).
First off you are already using a great, popular and in-demand RIA product in Flex. To expand your skills in RIA I would definitely go with GWT over JSF. Especially for the dabbler GWT is very easy to pick-up and has a lot of great widget toolkits such as Ext-GWT, SmartGWT, etc.
Since GWT(2. X) introduced new declarative layout there is a strong advantage over JSF. JSF life cycle (6 stages) is very complex and tends to be very fragile.
Since GWT is ajax based the load on the servers should be lower as they don't have to render the output. You don't even have to stick with Java on the server, GWT can be used with PHP/python on the server side. Another advantage is that with GWT you can run unit tests in the JRE.
Which means faster unit testing. JSF2 is an improvement and will probably get a big push by oracle.
Layout: Winner GWT (Declarative layout much like HTML instead of JSF tags) Control library: Winner GWT (Lot of free widgets) Cross-browser: Winner GWT (If you need to customize JSF than you are down the drains with JSF) Tooling: Winner GWT (Eclipse plugin let you remote debug) Bookmarking / Browser Navigation: Winner GWT (JSF do not even support Bookmarking).
That's nice. – BalusC May 4 '10 at 23:34 2 you should read a bit more before you make claims like this.Do not pay attention to this answer, it's really outdated and poor (apart from incredibly biased, do you work for google? ) – arg20 Jul 17 '11 at 5:56 1 -1 That strikes me as very one-sided, and overly simplified.
E.g. Both GWT and JSF are (reasonably) cross-browser; JSF also uses declarative layout; and JSF can be debugged remotely as well. – sleske Dec 15 '11 at 8:25.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.