Eclipse Virgo Released
The inaugural version of Eclipse Virgo was released today, including the Eclipse Gemini Web component. Despite these being the first release under the Eclipse moniker, they are the natural evolution of the well-regarded Spring DM Server. A list of what's new is provided in the release notes for Virgo and Gemini Web.
Eclipse Virgo provides a kernel, running on top of Eclipse Equinox, that can be used to run OSGi-based applications. Unlike a plain Equinox (or Felix) runtime, Eclipse Virgo uses the concept of nested frameworks to partition each OSGi application from the others that may be installed in the same framework. Bundles may be resolved from one or many repositories, which may be watched folders on the local system or remote.
Eclipse Virgo also has an incredibly useful concept of a PAR file, which is an archive of OSGi bundles that can be atomically installed into a runtime. For those that are used to single-drop installs of WARs into a web server like Tomcat, migrating to OSGi with Virgo is likely to give an easier experience out of the box than working with Equinox or Felix directly.
Whilst Virgo is the name of the kernel, it also ships with the Gemini Web container from the Eclipse Gemini project. This implements the OSGi Enterprise Web Bundle specification, which allows an OSGi Web Bundle to be installed in much the same way that PARs can. Since these WABs are a standardised format it provides a way of using Virgo without necessarily getting locked in to the (as yet) proprietary format. Apache Aries has a similar EBA format; it is likely that a future OSGi specification will take the best from these approaches to make a standardised single-install component in the future.
In addition, the Virgo kernel supports the existing Spring DM infrastructure, including dynamic wiring based on OSGi services and supporting legacy libraries like Hibernate. Given that Hibernate is such a mess when used in an OSGi environment, those wishing to migrate out of Hibernate in a phased approach will find Virgo's explicit support of Hibernate in an OSGi setting a useful stepping stone in migration to an OSGi-supported backing environment such as OpenJPA or EclipseLink.
The SpringSource Tool Suite provides support for creating and deploying content to Virgo; but Maven-based goals can also be used to build, package and install both bundles and PARs into a Virgo runtime in a headless fashion.
Future plans include other Gemini components, such as OSGi JNDI and JDBC support. Whilst Eclipse Virgo will remain focussed on the kernel and administration aspects, the Eclipse Gemini project will continue to ship OSGi enterprise specification implementations.
When Spring DM Server was initially released, it met great praise. However, the uptake was not as wide as SpringSource would have liked, possibly due to the GPL which can make it unattractive in corporate environments. Now that the code is part of Eclipse, it has been dual-licensed under both the Apache License and the Eclipse Public License. Combined with the features for migrating legacy Spring-based and Hibernate-dependent enterprise code, Eclipse Virgo is likely to see a large increase in developer interest in the near future.
Firstly, the Virgo kernel currently supports only a single user region, so all the applications go in the user region which is nested inside the main OSGi framework in which the kernel runs. Multiple user regions - one per isolated application - are a possible enhancement in the future. However, Virgo does support scoping which isolates applications from each other in a controlled way using metadata rewriting and service registry hooks. The contents of a PAR file are scoped but you can also declare plans - the non-archive generalisation of a PAR file - to be scoped.
Secondly, Virgo's support for Hibernate is actually general and applies to other libraries with similar class loading requirements, i.e. none of the support is Hibernate specific.
Finally, Gemini Web is dually licensed because its predecessor, the SpringSource OSGi Web Container, was Apache licensed. Virgo is singly licensed under the Eclipse Public License.