Thursday, October 11, 2012

JBoss One Day Talk 2012

Yesterday, I had the pleasure of speaking at the JBoss One Day Talk in Munich. Like always the conference was very well organized and it was great to meet up with community, customers and some colleagues from RedHat.

The talk was about OSGi in complex Enterprise Applications on AS7 and for the first time I could speak about how our vision has become reality. It is now possible to leverage middle ware services from AS7 and at the same time using the OSGi standard to address your modularity concerns and dynamic service requirements. I always like to draw the picture of a large and complex web application that is developed by multiple teams in different locations. Each team is primarily concerned with it own functional unit (module) and defines the set of capabilities/requirements of that module.

A fine rule of modularity: 
You can reason about A without having to think about B
At runtime the various modules come together, the caps/reqs get resolved by an external authority and by virtue of using OSGi they have life cycle and may integrate via dynamic services. So at any time you can bring in new modules, start/stop/update existing modules or take functionality out by removing a module. You web app would react accordingly and for example show/hide an option in the UI. Ok, it is rare that you want to modify a complex application in that way that is already in production. Still, 
An application that supports the notion of pluggable functionality is a good candidate for a modular architecture and is likely to use dynamic services to integrate the bits.
Modularity and service dynamicity do not come for free and I surely grant that OSGi can be hard at first. This is not because OSGi is hard it is because a modular system is more complex than a flat classpath and it is also more complex to track dynamic services instead of integrating via interfaces in the traditional way.
It is  sane to stay away from modularity if your system is reasonably simplistic and will stay that way in the foreseeable future. 
 JBoss AS7 supports modularity and dynamic services natively via jboss-modules and jboss-msc. It is good to understand the difference between that or any other home grown solution with respect to the OSGi standard. When in doubt and there is no other compelling reason, I would advise
Use the OSGi standard to secure your investment, stay portable and leverage what is out there in terms of documentation reusable functionality and not to mention last existing know how in the developer community.
I'm also happy to tell you that we plan to bring all that functionality to the JBoss Enterprise Application Platform (EAP 6.1) and it will be fully support.

Here are the slides from the session in Munich.