JavaOne: Glassfish V3
Now here is a project that has made some big strides. Glassfish V3 has come a long way.
Glassfish V3 is not your fathers application server. It's really more like an application server erector set. Its small, fast, and allows you to roll your own services into the application server you want to run, not the one provided for you by the software vendor. It consists of a small kernel that allows you to load modules which expose services to the kernel. These services include basic web serving, JRuby/Rails, Grails, Java EE, and a pure Web Services stack based on Metro. You can run one or more of these containers simultaneously.
It is interesting to note that last year V3 used its own module management system in the kernel called HK2. Today it still runs HK2 but a layer has been built to allow for loading OSGi modules. This is the second time today I'm hearing that OSGi is making its way into more Java projects. Spring 2.5 also uses OSGi for module management.
Embedding V3 was also demonstrated. V3 was used as a replacement for Jetty in both Grails and Maven to support development and testing. This stripped down version of V3 eliminates most of the module management (and OSGi) but it provides a fully functioning container that can be used right in the edit-compile-test development cycle. Here is the kicker. In most development environments you don't develop on the platform you are deploying on. Most people don't deploy their Grails app on the embeded Jetty for instance. However with V3 you have essentially the same container being used for development, testing, and production.
Kudos to the V3 team!