Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Floyd Marinescu on May 01, 2007 11:56 AM
OSGi is a specification of a Java based service platform targeted for use by systems that require long running times, dynamic updates, and minimal disruptions to the running environment. Much has been written about the the adoption of OSGi by tools vendors (Eclipse being the first) and application server vendors (IBM, BEA, Oracle) who have used OSGi to create micro-kernal & plugin architectures to enable good modularizatoin and dynamic assembly at run time. However, one of the areas OSGi may have the most impact for developers in the future is as a better component model for application development. JSR 291 (OSGi core spec R4.1), strives to:...define a dynamic component framework including component lifecycle for existing Java SE platforms. The dynamic component model will support assembly of applications from components and support implementation detail hiding between components as well as lifecycle management of those components.Will OSGi become a tool of choice for enabling component development for Java development? InfoQ spoke to a company who has decided to build the next version of their application architecture around OSGi to learn more about why they decided on OSGi. BPS is an ISV who sells risk management software that helps organizations comply with internal audit and compliance related business processes (e.g. The Sarbanes-Oxley 404 act). Their products are predominantly used by large financial institutions with stringent constraints and demanding IT environments. InfoQ spoke to BPS Chief Architect Gavin Terrill about why they chose OSGi for their next architecture. According to Gavin:
An interesting problem we have been struggling with for some time now is how to run multiple versions of a service simultaneously, in the same VM. The scenario is that two applications, A and B, have been integrated with our application, C. After the initial deployment of C, features are added to support the next release of A. Now the fun starts, as we need to update our deployed application with the new code, but without a server restart, and without breaking anything that B depends on. OSGi helps us solve this type of problem through the ability to dynamically provision and version software components (bundles).On why OSGi was a better option than the typical EAR/WAR file approach, Gavin suggested:
Another of our goals is to adopt more of a service oriented approach to our codebase. Note the use of little 'S' and 'O' here - we want the goodness of loose coupling, separation of concerns and localized testing, but we don't want the inherent complexities that accompany doing this out-of-process, ala Jini or DPWS (nee UPnP). We have already built our product with these ideals in mind, taking full advantage of Java's interfaces, and corresponding implementations that can be plugged in using dependency injection courtesy of the Spring Framework. OSGi takes it to the next level by making services more modular, but still doing it in a lightweight manner.
While there is nothing wrong with the existing mechanism per se, I think the level of granularity for EAR/WAR deployment is too high to be practical. If I have only touched one jar file, why do I need to reload the entire application?As BPS is already building a Spring-based application, they intend to make use of Spring-OSGi during the re-architecture. Spring OSGi first milestone was recently released.
Deployment of Java applications has generated a lot of discussion in the Java community, beginning with the introduction of the .jar file, through to JSR 277/294. The "Java Module System" (JSR 277), coming down the pipe for Java SE 7, is interesting. At first glance, it looks like it was conceived in response to the .Net assembly idea. However, the fact that OSGi has been proven through Eclipse (and others) speaks volumes to us. It is hard to argue with something that has already been through the trials and tribulations of dealing with deployment problems encountered in the wild.
The design center for OSGi matches our requirements: a lightweight, in-process, service container framework with full lifecycle support
OSGi can also be an architectural asset to promote component oriented software development in organizations, as InfoQ reported in November about Piero Campanelli's analysis found the following benefits:
Download the Free Adobe® Flex® Builder 3 Trial
The Role of Open Source in Data Integration
Adobe® Flash® Platform Overview PDF
That should be JSR 277 (Java Module System), not JSR 177 as mentioned in the article several times. If you're interested in more info on JSR 277 and 294, check out the resources on my Java 7 page.
fixed, thanks.
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
2 comments
Watch Thread Reply