Not to knock the wind out of Scala but most of his concerns have been answered in Java EE 6. But then of course Java EE 6 is a little bit new, so he might not know a bunch of stuffs earlier.
Some of the example: regarding their Content API returning JSON/XML, this can be handled by JAX-RS easily. JAX-RS also provides more than JSON and XML (it provides ATOM-XML as well which probably more suitable for better RESTful services).
Spring MVC (the latest version, 3.0) also moving toward Rails-like ActionController.
Both Spring MVC Controller and JAX-RS POJO methods can be annotated to handle routing. As a results: way less XMLs.
JAX-WS 2.0 (pure WebService) is also way easier to create, implement, deploy, and unit-test.
JPA 2.0 probably requires way less XML than Hibernate. You can also use JPA 2.0 with GlassFish and wrap your service (a.k.a EJB 3.1 lite) with Transactional automagically with no extra XML file.
Newer Java APIs/libraries are also exploiting fluent-API practices to make it more DSL-ish (as Martin Fowler decided to move to DSL after his OOP honeymoon, so do his followers).
Don't get me wrong: Java is still verbose. But it's getting a lot way lighter and simpler for web-app development (enterprise or not).
The biggest elephant in the room is the manager types and the old-school Java developers that have had tons of experience with Struts or older frameworks and wouldn't want to change their mindset.
The guardian are also moving towards using mongo instead of oracle, there was an interesting talk by Graham Tackley from the guardian about their stack at the recent mongoUK conference in London: http://skillsmatter.com/podcast/nosql/mongodb-at-the-guardia...
If you look SE Radio (Software Engineering Radio) on iTunes podcast, or their own website, there's an episode where they interview the Guardian website developers (it is an award-winning website after all, gets a monstrous number of hits).
The company I work for uses a Tomcat/Struts/Oracle stack, and I'd love to find something less painful to use, but which is still java based (moving to a different language here would probably meet too much institutional resistance.)
The article mentioned the Play framework. Anyone have any experience with it?
For ORM, either JPA 2.0 (recommended) or Hibernate (Hibernate specific APIs, not Hibernate as JPA 2.0 provider). But as with any ORM: you need to know it well (ActiveRecord is not an exception either).
Additionally, JPA 2.0 provides Level 2 Cache API interface: you can either write your own but conform with the API (the API is very simple) or use the one provided by the JPA provider.
Hibernate (if you use it as the JPA 2.0 provider) supports a variety of L2 caching solutions (SwarmCache, EhCache, OSCache, JBoss Cache, Infinispan, etc). Plug n play baby!
Play Framework is excellent for rapid web development. The edit/compile/run cycle is very short. Just like PHP, make a change in the Java file, refresh your browser, and the compilation/deployment is done right the way automatically.
The URL request routing and handling is straight forward and powerful. Request parameters are mapped to Java objects automatically. The Groovy-based rendering template engine is very simple and powerful.
Play employs the easy to use JPA by default for DB backend layer but can use other frameworks easily. In one project I've used the JPA to interface with Oracle. In other projects I've used the Objectify library to access GAE's NoSQL Datastore when developing Play in GAE. Both work great.
Some of the example: regarding their Content API returning JSON/XML, this can be handled by JAX-RS easily. JAX-RS also provides more than JSON and XML (it provides ATOM-XML as well which probably more suitable for better RESTful services).
Spring MVC (the latest version, 3.0) also moving toward Rails-like ActionController.
Both Spring MVC Controller and JAX-RS POJO methods can be annotated to handle routing. As a results: way less XMLs.
JAX-WS 2.0 (pure WebService) is also way easier to create, implement, deploy, and unit-test.
JPA 2.0 probably requires way less XML than Hibernate. You can also use JPA 2.0 with GlassFish and wrap your service (a.k.a EJB 3.1 lite) with Transactional automagically with no extra XML file.
Newer Java APIs/libraries are also exploiting fluent-API practices to make it more DSL-ish (as Martin Fowler decided to move to DSL after his OOP honeymoon, so do his followers).
Don't get me wrong: Java is still verbose. But it's getting a lot way lighter and simpler for web-app development (enterprise or not).
The biggest elephant in the room is the manager types and the old-school Java developers that have had tons of experience with Struts or older frameworks and wouldn't want to change their mindset.