My JavaOne day three was just sessions. And the concert! But the sessions were good ones.
Day three of JavaOne had no keynote; good for a few reasons. First, there was nothing to talk about. More importantly, I was out late last night at a schmooze dinner and my first session didn't start until 10 am. So I slept in!
My first session was Showdown at the JVM Corral with Trent Grey-Donald, Mikael vidstadt, Paul Hohensee. This panel was a free-form discussion of various JVM topics. The most interesting discussion was around directions in garbage collection. The panel seemed very excited about an upcoming region-based garbage collector. With larger heaps, pause time can be reduced by having independent regional incremental collectors working concurrently.There were many other features the new collector could provide like per-region policies, shared memory across JVMs, and adjustable heap size. Sounds pretty cool.
Next stop was FileNotFound: A Tour of the New Java 7 Files API. There were several problems with the aged file API including being inconsistent, having poor exception handling, and missing key operations. The new API, found in java.nio.file, implements a part of JSR-203 and interoperates gracefully with the old API.
There are several new abstractions that extend what's already there. The abstractions do a better job of hiding file system specifics while adding significant functionality. The highlights include actual copy and move methods, recoverable exceptions, file attributes, directories, and symbolic links.
Two other features deserve special attention. The first is the ability to walk the file tree using the visitor pattern. Finally, a practical application of the visitor pattern! This is a depth-first walk with a visitor interface that includes four methods for acting on each node. There are also a few standard visitors that can be used for common tasks. The second new feature is a file notification service. You can set the change attributes you are interested in and receive an efficient notification when a change occurs.
Vaadin combines both client and server RIA to achieve an interesting balance of performance and ease of development. The CEO, Joonas Lehtinen, stated that the primary benefit of Vaadin is rapid application development. He was clear about the sweet spot. It's stateful so it's not going to scale way up; your primary option is to use sticky sessions. It's great for moderate web applications but you wouldn't build large, mission-critical applications with it.
Vaadin can be used with all JVM languages and has nice Eclipse tooling. Joonas demonstrated how easy it is to build a significant application in 15 minutes. Some of the components are quite sophisticated and there are a lot of them. There is a visual component editor that is great for getting you most of the way there.
Vaadin looks very interesting for RAD of web apps. There are tons of online resources and a vibrant community. You can deploy projects into any Java servlet container and Maven support is solid. The slow application start up you can experience with GWT or Flex is not a problem with Vaadin's architecture where much of the heavy lifting is done on the server.
The news of Steve Jobs' passing put a sad tone on the end of the day. Tonight's festivites should improve the mood. Sting, Tom Petty and the Heartbreakers, and the new English Beat are featured. I am very excited about that.