I got a blogger pass for Oracle OpenWorld. Here is my report from the show floor.
Yesterday, I wrote that Oracle OpenWorld seemed a bit bigger than Java One. Today when I saw the crowds during daytime I realized how naive I was. This is a HUGE conference, filling the main Moscone building, Moscone West, and two hotels. Talks range from “Virtualize your enterprise and cut costs with Oracle VM” to “Win Big with Government Contracts and PeopleSoft ESA”. The bookstore didn't carry Core Java but instead featured books on Sarbanes-Oxley and self-motivation, in addition to the usual Oracle DBA fare. There were a few talks on Java, JDBC programming, JSF, ADF Faces, and the BEA app server.
Alex Buckley and John Rose gave a beautiful presentation “Towards a
Universal VM” in which they described the path taken by the Java VM
towards supporting programming languages with very different execution models
than Java. John described the invokedynamic
href="http://openjdk.java.net/projects/mlvm/" instruction in detail and briefly
reviewed potential future enhancements, such as tail call elimination and
continuations, that are currently explored in the DaVinci project. The vision
is that one day the Java VM will be truly universal, able to efficiently
execute any programming language. Unfortunately, attendance was very
sparse—this is clearly not a topic that was on the radar screen for the
typical database person :-)
Afterwards, Alex and I talked a bit about the slow pace of Java evolution. I told him that I am using Scala for some new projects, and he said I am far from the only one. And I am also not the only one who complains about confusing Scala code in which some macho coder removed all optional dots, parentheses, and semicolons. So, I do want Java to continue evolving, and I have very specific ideas how that should happen, and no, I don't want to pay for it. Alex talks to hundreds, if not thousands, of people all the time who are just like me. So, it did make me think about what it means for Java to be free, and who should pay for designing, developing, and testing future versions.
The afternoon talks on Java EE 6, GlassFish, and JSF 2.0 were much better attended. Java EE 6 and GlassFish 3 are scheduled to be final in December. There is one last refactoring of EE6 components. Now the managed bean and interceptor facilities are generic mechanisms—see this blog for details. And, of course, JSR 299 (formerly known as “web beans”) is a part of the spec. As Roberto Chinnici said, it is the glue that puts JSF and EJB together for much higher programmer productivity.
I cannot overemphasize how much simpler EE6 is than just about any web programming model I know. All of the bad parts of the old EJB are gone. No XML. No crazy packaging of WARs and JARs inside EARs. Annotate your beans and persistent objects, and let the container worry about the database, transactions, clustering, and so on. This was, of course, the vision when EJB was first designed, and it has taken a long time to actually get there. But so what, now it is here, and it would be foolish not to take advantage of it just because some previous versions weren't so great.
Similarly, if you haven't given GlassFish v3 a try, you are in for a very pleasant surprise. It is fast. Startup is not just faster than JBoss, but faster than Tomcat! Hot deployment works great, there is a nice admin UI and a scriptable command line interface, and the Eclipse and Netbeans integrations are first-rate. I can't see myself going back to Tomcat—there just would be no point.
Jim Driscoll and Andy Schwarz (the latter from Oracle) gave a superb presentation about JSF 2.0. Normally, presenters try to cram all the fact about topic A on one slide, then move on to topic B, and so on. In contrast, Jim and Andy did a great job showing the interconnections between the topics. I always believed that a "spiral" approach to learning works much better than the usual taxonomic style, and the effectiveness of their presentation reinforces my belief.
By now, the changes in JSF 2.0 are well-known: Annotations and ez-navigation instead of faces-config.xml. Ajax that I can do. Nice support for GET requests. Easier component authoring. A decent page composition system. Standard bean validation. Much, much, much better error handling. There are still some warts that should be addressed in JSF 2.1, but JSF 2.0 is in great shape. And fundamentally it is easy. David Geary and myself are rewriting our Core JSF book, and it is very gratifying to be able to erase pages full of cruft.
Andy held out the possibility that JSF 2.1 may include some additional components to round out the standard component set. I very much hope that happens. It is great that RichFaces, IceFaces, etc. are working hard on JSF 2.0 versions, but a few more components such as calendars, fileupload, and trees, surely could be a part of the standard. Andy recommends that anyone who wants to comment on JSF 2 should use the JSR 314 discussion board—a well-kept secret since it currently has 2 posts :-)
It turned out to be a very productive afternoon for me since I was able to ask a large number of intricate technical questions after these presentations, something that is pretty hard to do in the madding crowds of Java One.
On a more sobering note, regression to the mean meant that the food for today's evening party was unimpressive. Drinks were still free, though.