So? Only OSGi remains. The main problem is that OSGi, touted as "the dynamic module system for Java™", is in fact "a service-oriented, component-based environment": a runtime environment for executing component-based services. Here enters JSR 291, with the same Richard S. Hall on board; that JSR aims at putting OSGi under the JCP roof, and that one has achieved a final release status on August 2007. So we have a component based environment, but without the component packaging defined in JSR 277... They explain :
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.
So for them, it's better to change the packaging format for a complex platform, than establishing the format first, which is a must simpler task and has a much bigger usefulness. But it's true that the timeline established for JSR 277 is indeed targeted at Java 1.7. The difference is that JSR 277 works on a 3 years calendar, whereas JSR 291 achieved the full cycle in less than a year and a half, with basically the same people in the expert group. It has to be noted that the final release of the JSR 291 specification makes no mention at all of the JSR 291, or its expert group, for one simple reason: it's the OSGi R4 specification, untouched. This is what is called "The JSR-291 Dynamic Component Support for Java SE, Version: 1.0 Specification (the ``Specification'') references the OSGi Service Platform Release 4 Core Specification". You knew Ctrl+P for Pasting, there is now an alias, Ctrl+R for Referencing.
7 months ago, Ryan Slobojan on InfoQ summarized the situation in relation to JSR 316 (Java EE 6), with the next level of dependency: 316 depends on 277 but not 291, whereas Java EE is a "service-oriented, component-based environment", and should be logically based on 291 (which would be an extremely major shift). In that article, Glen Normington, ex-Core Platform Expert Group at OSGi Alliance and ex-IBM, and now Spring Source (a company which not so long ago has based its strategy on OSGi), is deemed to have tried "to present a more measured opinion on the debate", let's look at it:
The dream solution is clear: JSR 277 should adopt JSR 291, underpinned by language and VM support in JSR 294, and add the JSR 277 repository architecture.
JSR 294 is JSR 277 little brother, which aims at adding a fifth notion of visibility in Java (the 4 existing are public, protected, package and private), and this indeed needs a modification in the JLS. As of now, JSR 294 has lost his initial initiator and spec lead almost two years ago, and the JSR page has not been updated. But suggesting that JSR 277 should just adopt directly the OSGi bundle format is just pure malice. Recently, Glyn Normington opened a bug to do just that, and excite the OSGi fanboyz base to vote for it. And it's working! Instead of voting for the original RFE #4648386 (which is a real Request For Enhancement), they vote for that 6650394, "look ma, OSGi rulezzz you suX0rzzz", and now it's only 23 votes behind. But all considered, 138 votes against 115, it's only shows that a very small number of Java developers are voting for bugs and RFE on Sun's site.
To conclude... nothing. It's just sad to have nothing usable out of the J2SE box with relation to RFE #4648386. Further reading (don't forget the comments):
- Dalibor Topic, 23/10/2006, The JSR 277 early draft catches the worm
- Xavier Hanin, 7/11/2006, JSR 277 feedback from the community
- Scott Delap, 16/11/2006, JSR 277 & 294 leads respond to concerns over OSGi overlap and transparency
- Neil Bartlett, 12/03/2007, Re: The state of Java modularity
- Stanley Ho, 28/06/2007, OpenJDK Modules project: Early snapshot, video, and more
- Glyn Normington, 16/07/2007, Java modularity: where do we go from here?
- Glyn Normington, 14/09/2007, Hope for interoperation between JSR 277 and JSR 291