The Service Component Architecture
(SCA) specification from IBM has now been endorsed by several leading industry companies: BEA, IONA, Oracle, Sybase, and others. A couple of significant companies missing from the list: Sun Microsystems and Microsoft.
From the Oracle press release
BEA Systems, IBM Corporation, IONA Technologies, Oracle, SAP AG, Siebel Systems, Sybase, Xcalia and Zend Technologies today announced an effort to develop specifications and resulting collaborative technologies that simplify how organizations create and implement applications in a Service Oriented Architecture. ... The SOA Programming Model specifications include the Service Component Architecture (SCA) to simplify the development of creating business services and Service Data Objects (SDO) for accessing data residing in multiple locations and formats.
The specs are available on developerWorks at Specifications: Service Component Architecture (SCA) and Service Data Objects (SDO)
Agreement amongst these companies is significant because it means SCA and SDO won't be proprietary IBM-only technologies. Previously, only IBM and BEA supported SDO (see the CommonJ Specification
), and only IBM supported SCA. Now, not only are these other companies agreeing to support SCA, all are now agreeing to support SDO as well (all but BEA, which already had agreed but is reaffirming its support). Support by all these vendors means that developers will be able to design and implement SCA components and clients using Java, then deploy that code into any compliant application server, not just IBM's WebSphere Process Server
. Also, services will be interoperable: An SCA client could be deployed in a BEA product and use an SCA component deployed in an IBM product. So developers can take advantage of SCA and SDO without fear of vendor lock-in, and will have freedom to choose the best vendor's product for the job.
There is already a JSR for SDOs: JSR 235: Service Data Objects
. There is no JSR for SCA yet, but I imagine these companies intend to start one. Why formalize a spec as a JSR? Once a JSR is approved, it can then be added to J2EE.
The lack of endorsement by Sun will probably make it harder for the JSR(s) to get traction, but the JCP
is supposed to support adoption of new Java features even if they're not supported by Sun. The lack of endorsement by Microsoft is significant too. If Microsoft would add SCA and SDO support to .NET, then SCA clients and components implemented in .NET would be interoperable with those implemented in J2EE (or at least J2EE app servers with SCA extensions).
At some point down the road, it may be possible to combine SCA with MDA
. Then you could design your SCA components and clients, then tag each with the implementation technology of choice and each connection with the invocation protocol
of choice, then use MDA to generate the parts. You could tag one as .NET for example and generate its code, then change your mind; just retag it as J2EE and regenerate. Wouldn't that all be amazing?!
Here's press coverage of the announcement:
(Disclaimer: Forward looking statements, may not all come true, don't bet the farm quite yet, etc.