...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.OSGi itself has been around as a non-JSR specification for some time. Open source implementations include Equinox which forms the foundation for the Eclipse IDE, Felix, and Knopflerfish. Among the key features:
- Allows for Reusable and Dynamic Components
- Classloading allowing reload of parts of the application.
- Fine-grained Service concept
- Simple Life Cycle
- POJO friendly
- Extremely Light-weight
- Deploy on Java ME, Java SE, Java EE
- Good tooling support (Eclipse)
Expert group member Niclas Hedhman broke the news of the public review on his blog. The JSR 291 website has not been updated to reflect this change yet. In the meantime the draft is available for download on the JSR-291 mail archive.
Many industry veterans are watching the progress of this JSR in comparison to JSR 277/294. These JSR's are defining the packaging of modules and dynamic deployment in respect to the upcoming Java 7 Dolphin release. JSR 291 is targeted at existing needs and Java SE platforms. From the specification documentfor 291:
No current JSR (either complete or in process) defines a dynamic component and lifecycle solution to run on top of the existing family of Java SE platforms. However, JSR 232 does include this capability to run on top of Java ME (CDC based platforms) along with a comprehensive set of mobility services.JSR 277 has been filed to examine changes to the static module definition to be used within the Java SE platform for Java 7 (Dolphin) and beyond. JSR 277 is targeted for specification delivery in 2H/2007 with RI/TCK delivery as an integral part of Dolphin in 2008.
This JSR aims to address the current needs for dynamic components based on existing Java SE platforms. When Dolphin becomes available, the specification lead of this JSR will either perform a maintenance release of this JSR or raise a follow on JSR to add Dolphin to the list of compatible supported platforms and to exploit Dolphin technology for static modules, as appropriate.
Concern has been raised about the seemingly overlapping nature of these three JSR's overall. In the meantime industry use of OSGi has continued to increase in application server development and frameworks such as Spring while JSR 291 has been in development.