I've worked on more than 2 Dozen Java Web Applications in different companies and with various teams and every time I felt these applications lagged in UI compare to PHP applications. Don't get me wrong I'm trying to understand and find solution to problems what I'm seeing and I could easily learn from your exposure and experience or may be we all can understand whats happening.
Though most of the teams I've worked with were extremely talented and we wrote huge large scale applications and in fact we also had UI experts on these projects, then why couldn't we write great UI?
I feel there are two reason's for this firstly these teams are dominated by Java guys who mostly like working on server side code and they really don't enjoy working on UI and they spend enormousness time fixing performance, and other server side issues which hardly are issues for some project for an example in one of my project we spend weeks trying to fix application performance which is hardly used by 10 users per day.
Secondly most of the Java Web Applications use MVC frameworks such as (Struts, Spring MVC, JSF) and these framework requires java knowledge so most of the UI is written by Java Developers but most of people would argue that there is no harm in doing this. Though I feel there is a small issue with this practice that is since UI is written by Java Developers and they tend to use Tag Library which makes code unreadable for most of the UI Experts and hence there contribution is restricted.
If my above arguments hold good then this is what I can think of improving the situation
Let UI Experts own and create HTML pages, CSS (rather JSP pages and MVC) and use Javascript framework of their choice or company standard(JQuery, DOJO, YUI etc) and hook them to Server side components using JSON (DWR), REST (RESTFul Services) or POST (MVC Framework without Tag Libraries).
I feel we can take out lot of benefits by doing this.
1. UI Experts can parallel work on UI and that will give then a sense of ownership and we can see the results
2. Server Side guys can spend good amount of time on there domain of choice and be more productive.
Comments
While Wicket claims to allow 'readable' html source pages that look like actual html pages, it also advocates re-use and componentization which means that most of the visual elements come from different pages which aren't visible when you look at the source page as HTML.
That said, nothing stops one from looking at the HTML that backs a given component. You can even choose to extend given component and supply the HTML yourself.
I would also suggest to take a look at Taimen: http://code.google.com/p/bitumenframework/
Taimen is a micro-framework for Java web development, and has example applications to demonstrate how to use.