Last three days I have been to JavaPolis 2007 in Antwerp. It was the first time that I went to this conference and I really liked it. Great things about it are it's location and, most of all, it's speakers. The location is a cinema. Slides and demo's are shown on huge screens that are normally used to show blockbusters. The list of speakers included heroes such as James Gosling, Joshua Blog, Bruce Eckel and Scott Ambler.
I will give some of my impressions.
JavaFX and Flex
JavaFX was promoted heavily by James Gosling and other Sun employees. While it looks promising, it still is in it's infancy. A compiler is being written that is starting to get just mature enough to play with it. Do not think about any serious use of this technology at this moment, the syntax of the language is not even stable yet. Some nice samples were shown, unfortunately most did not show what I think is the main reason for having JavaFX (and Flex): building user interfaces in a more declarative way.
So why choose JavaFX when there is already a much more mature and complete alternative called Flex? One of the arguments that James Gosling used was that it renders faster because it is based on Swing. Funny enough Bruce Eckel demonstrated that this is not the case: Flex renders even faster than Swing. Besides that he showed that with Flex it is easy to build great looking UIs, with strong support for data synchronization between client and server.
Last year, JavaPolis organizer Stephan Janssen had made a very interesting website that contains presentations of JavaPolis and a number of other conferences: Parleys.com. This is a great source of information indeed! An impressive demo of Release 2 of the site was given, which is based on Flex 3. Browser functionality like the back button and bookmarking within the application will be supported. The only negative thing that was mentioned about Flex is that a site made in Flex is not indexed in Google.
Web framework Wicket seems to become pretty popular these days, it's mailing list is even 3rd on list of most active Apache mailing lists. Martijn Dashorts gave an overview of Wicket and daringly built a small web application during his presentation. It convinced me that for html-based applications, Wicket is the best Java framework at this moment. Forget about Struts, Spring MVC, JSF and Tapestry. Wicket even has pretty good Ajax support, so forget about GWT as well ...
There is a debate going on about introducing closures in the Java language. Joshua Blog made a very convincing case against the introduction of a comprehensive implementation of closures: the BGGA prototype. Forcing the functional language paradigm on a language that was not designed for it has its risks. This was demonstrated by some very hard to understand code samples.
Joshua also mentioned that the Java community still has a hard time understanding Generics, especially with wildcards. The fate of C++ should be avoided, so much was added to this language that it collapsed under it's own weight.
Scott Ambler observed that Agile has 'crossed the chasm'. Extensive surveys proof that the majority of US companies are doing one or more agile projects. Scott then made the case that Agile has to become more mature in matters that the Agile community usually prefers not to talk about, such as modeling, documentation, serious certification programs, exploratory testing and governance ("don't leave this to the bureaucrats"). He furthermore urged Agile developers to become friends with the database guys. Since the wide adoption of O/R frameworks, the latest generation of Java developers just knows too little about databases to make effective use of them.
A nice observation was that Agile should should be positioned as hitting the sweet spot between the 'just code and fix' approach and traditional methodologies. Unfortunately many 'code and fix' guys call themselves Agile, giving the community a bad name.
- Netbeans 6 was announced, which supports (J)Ruby on Rails. IntelliJ also supports it. I did not hear anyone mention Grails, so it seems like most of the Java community will go for the 'real thing'.
- OSGI bundles are adopted for the internal structure of major application servers. OSGI is obviously the best and most mature modularity solution in the Java world. Unfortunately the JCP fails in standardizing it. Instead it seems likely that 'super packages' will become part of the Java language, which offer a small subset of what OSGI offers.
- This is not new but I did not know it: Rod Johnson (not present at JavaPolis) is involved in the JCP Expert Groups for JEE6. Will his next book be titled "JEE without Spring"?