Bundle.update: Towards the Next OSGi Release
It's been a long time since the last Bundle.update was posted, and there have been a lot of OSGi-centric updates since then.
OSGi 4.2 platforms
The Knopflerfish Project released Knopflerfish 3.0, with OSGi 4.2 support, in June. The release notes note that support for Android has been (temporarily) dropped. The desktop-console respects the
Bundle-Icon heading, so is a good test suite to see what that looks like. It also includes a provisional Command framework of the proposed OSGi specification, mentioned in the enterprise specs below.
Apache Felix Framework 3.0.3 was released yesterday, continuing the pure OSGi 4.2 support in previous releases. A major change in Felix framework 3.0 is the introduction of the Felix Gogo shell, which implements OSGi RFC 147 on command line shells.
Eclipse 3.6.1, aka Eclipse Helios SR1, has recently been released. As well as including a number of fixes for IDE operations, it also includes the fix for the Oracle JVM issue (which is useful, because the OpenJDK is going to make the changes permanent in JDK7 soon).
OSGi 4.3 early draft
The OSGi 4.2 Enterprise Edition was released earlier this year, and has since been made available at the http://repo1.maven.org/maven2/org/osgi/org.osgi.enterprise/4.2.0/ maven repository.
Work continues on the next version of the OSGi specification, and an early draft of 4.3 has been made available for non-OSGi members to comment on. The significant change to this is the compilation of the OSGi runtime with a
jsr14 target, which permits generics to be used whilst maintaining compatibility with a 1.4 Java VM (bytecode version 48). As a result, the OSGi framework is being upgraded to handle generics at compile-time, leading to type-safe service accessor patterns.
Equinox 3.7M1 and 4.1M1 have been released, with early support for the OGSi 4.2 generics.
OSGi community event and training
The OSGi community event returns to London, in conjunction with JAX London, this week with a set of track sessions that combine case studies of OSGi in the enterprise with real world use cases and tutorials. Registration is still open but note that JAX London started on Tuesday.
Not only does OSGi allow you to modularize your codebase, it also enables you to build highly dynamic applications. That means that often you have to deploy certain components together to create a working subsystem. It also means that components can have lots of different dependencies on other components, services or even resources and configuration data. Managing all of these is not trivial, but crucial if you want to end up with a system that's easy to deploy and upgrade. By applying the right design patterns and using libraries that help you declaratively specify dependencies, you can quickly create applications that are loosely coupled by services and have qualities like substitutability and scalability. During the tutorial, hands on excercises will illustrate the different patterns and demonstrate how to build robust components that can deal with all the dynamics that OSGi will throw at it. In the end you will have learned how to build on OSGi using much higher level primitives than the ServiceTracker and ServiceListener that the specification provides.
For those that are interested in more detailed training courses going beyond the basics, Peter Kriens and Neil Bartlett are hosting an OSGi Masterclass between 13th and 15th October in Girona, Spain (registration). There is an optional one-day basics course on the 12th October for those that would like a refresher or to get up to speed before the masterclass itself.
Eclipse Virgo, the new name for Spring DM Server, has shipped milestone 2.1.0.M04. For those that have used Spring DM server or Spring applications, Eclipse Virgo provides a good transition path into a modular enterprise system. A full release is planned for later this year.
Eclipse Gemini, a set of modules focused on Enterprise OSGi support, and formerly the Spring Dynamic Modules components, have released a number of milestone releases. This includes:
- Gemini Naming M1, providing JNDI support to OSGi applications using the OSGi JNDI service
- Gemini JPA M1, providing JPA support for OGSi applications wrapping EclipseLink with the OSGi JPA services
- Gemini Web M4, providing tomcat services via OSGi web interface (blog).
- Gemini Blueprint M1, the reference implementation for the OGSi blueprint service (blog).
JBoss have released JBoss-OSGi-1.0.0.Beta9, an OSGi wrapper around the JBoss Modules layer. Rather than build JBoss on proven modularity technologies, the evolution of the JBoss JMX MicroKernel and JBoss Microcontainer has resulted in a cut-down self-defined module format which then has OSGi layered on top of it. One of the stated goals is to allow JBoss Modules to be compatible with the further-postponed JSR 294 “Jigsaw” module system as well as other module systems, whilst other enterprise application vendors like IBM, Oracle and Glassfish are all using standard OSGi runtimes (Equinox or Felix) and have been shipping modular systems for some time.
.. and Apache Karaf .. and Apache Aries
Apache Karaf provides an OSGi based distribution for building server-side applications and can be configured to use either the Felix Framework or Equinox. It has built-in support for Blueprint and web applications. Karaf is the foundation for several projects such as Apache ServiceMix, Apache Geronimo and FuseSource ESB.
The Aries project is delivering a set of pluggable Java components enabling an enterprise OSGi application programming model. This includes implementations and extensions of application-focused specifications defined by the OSGi Alliance Enterprise Expert Group (EEG) and an assembly format for multi-bundle applications, for deployment to a variety of OSGi based runtimes. Aries currently supports JNDI, JPA, Blueprint, JMX, Transactions as defined by the OSGi EEG.
.. and OW2 JOnAS ..
The service layer is implemented using Apache iPOJO, therefore most Java-EE-certified JOnAS services (persistence, EJB, resources, ...) are directly available as OSGi services to all OSGi bundles deployed on JOnAS. The inverse is also true: for example, an EJB3 can directly access any number of OSGi services using dynamic injection. Enterprise OSGi is also in progress on JNDI and JPA with http service already available.