I think there are lots of politics involved. Peter Kriens, OSGi spec
author, evangelist and old timer was rejected to become a member of
JSR277, and is upset about it:
http://www.aqute.biz/2006/02/osgi-and-jsr-277-bad-vibes.html, (he have
written a number of times about it on his blog).
Interesting enough Richard Hall, Felix lead and OSGi member, is part of
both JSRs.
All the issues with OSGi listed in the citation from JSR 277 are solved
in OSGi R4.
IBM seem to make a huge investment in OSGi while Sun doesn't, so I
wouldn't be surprised if this is part of there fighting as well.
Anyway, standardized Java modularization is needed now, so waiting to
Java 7, seem less attractive.
/Daniel
Stefano Mazzocchi wrote:
Daniel Fagerstrom wrote:
Apache and some other well known organizations have started an JSR
for dynamic component framework in Java SE based on OSGi.
http://www.osgi.org/blog/2006/02/jsr-291-dynamic-component-support-for.html
http://www.jcp.org/en/jsr/detail?id=291
4 months to get a JSR out of the door? whatever.
This seems a rushed up battle against JSR 277, which states:
The current version of the Open Services Gateway Initiative (OSGi)
specification defines a framework that enables the deployment of
service-oriented applications (called bundles). However, the framework
only supports package dependency based on the minimum version of a
specification, and there is no support for exact version or version
range. The framework also supports package dependency based on an
implementation, but there is no support for versioning. Moreover, the
framework must choose one bundle that will be the provider of the
exported package for all bundles which have dependencies on that
package, so it is impossible to support more than one version of
shared package at runtime. Besides, the selection of exported package
provider is anonymous, and there is no way to influence the selection.
Because the versioning semantics in the OSGi framework is simplistic,
it is not a sufficient solution to address the JAR referencing problem.
While JSR 291 states:
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.
These two JSRs are heading on a massive collision course.