Thursday, January 05, 2012

Virgo Nano Technology

The first milestone of Virgo 3.5.0 is available. It introduces two significant new features: p2 support (covered previously) and a new Virgo distribution known as nano. (Apologies for the pun in the blog title - it was too hard to resist.)

Nano is essentially a cut-down version of Virgo which starts up really fast and has a single (kernel) region. It is intended for simpler scenarios where you don't need to isolate applications from each other or from the kernel.

The current nano distribution includes Gemini Web and so is a fully-functional OSGi web server which starts in about 3 seconds (compared to Virgo Tomcat/Jetty Server which take about 9-10 seconds). However, we plan to factor out Gemini Web so that nano becomes a small/fast subset of the Virgo kernel. We will then provide a separate distribution which adds Gemini Web to nano, as in the first milestone.

As well as introducing nano, the milestone re-bases the kernel and the Tomcat/Jetty servers on nano. Initial provisioning via p2, with full instructions in the user guide, is provided for all distributions in addition to the familiar ZIP file installs (the ZIP contents are now constructed using p2 at build time). All distributions use a regular Equinox directory layout and launcher which will simplify third party tooling integration (e.g. Pax Exam). A short-term downside is that we need to update the Virgo IDE tooling to work with Virgo 3.5.0.

The current nano distribution can also dynamically provision content via p2 which is particularly useful for automated or cloud deployments. (We tried to implement this for the multi-region kernel and Tomcat/Jetty servers, but that was beyond the scope of the current p2 design, so we've put it on hold.)

There is also a nice engineering side-effect of the introduction of nano: we are starting to refactor the kernel — by far the most complex Virgo component — and move the more general, region-agnostic features down into nano.

The following picture summarises the distributions we anticipate in Virgo 3.5.0:

As well as being the fruit of several months of effort, this first milestone kicks off Virgo development in 2012 in a very exciting way.


Anonymous said...

The download site says 3.1.0 and the blog refers to it ass 3.5.0. Might need a correction somewhere

Glyn said...

You're right about the inconsistency, but this is pointed out in the release notes.

There was a problem releasing 3.5.0.M01 which required a workaround of versioning it as 3.1.0.M01. This problem is now understood -- it was a restrictive import version range from Gemini Web to Virgo util -- and will be fixed soon, so the next 3.5 milestone should be versioned correctly at 3.5.0.M02.

Anoop said...

Will Snaps work with Virgo nano ? Also will Virgo 3.5 upgrade to Spring Framework 3.1 in the final release ?

Glyn said...

Snaps depends on Virgo's web integration layer and so it will not work with "Gemini web on nano" (but it will, of course, work with Virgo Tomcat Server v3.5).

We are not planning to upgrade Spring Framework to v3.1 in Virgo 3.5, but since we have fixed bug 357273, this is something users can do themselves (see the FAQ).


OSGi (130) Virgo (59) Eclipse (10) Equinox (9) dm Server (8) Felix (4) WebSphere (3) Aries (2) GlassFish (2) JBoss (1) Newton (1) WebLogic (1)