The Apache CXF community received word this morning that Sun has accepted our certification and has added Apache CXF to the JAXWS database as a certified JAXWS implementation. This is a huge event for the community.
One of the concepts I’ve always advocated is “standards based” development. However, there seems to be different interpretations as to what that means.
- One extreme is basically “do your own thing, then push everyone else to do it the same way thus making your way the standard”.
- Another approach I’ve seen take is to implement some standards, but use proprietary stuff for much of it. For example, implementing SOAP over HTTP with the various WS-* specs. However, the programming model and configuration of such stuff is all proprietary.
- Finally, there is the “use standards everywhere when possible” approach. This is the approach CXF has taken. We implement the standard “on the wire” stuff like SOAP, WS-A, WS-RM, etc… (more coming soon), but we’ve also made a standard programming model (JAX-WS and JWS) our primary programming model as well as made Spring configuration (a popular configuration description) our default config mechanism. Yes, there are proprietary things in CXF, but for the 80% use cases, the standards work pretty damn well.
CORBA and EJB’s/J2EE have been very successful because they mandated the third style standards. They defined not just the “on the wire” compatibility, but also the programming models that developers used. Applications were then “portable” across implementations. This made it very easy to test other implementations to see if another vendors implementation performed better or didn’t have a particular bug or similar. I ran into a similar issue last week. I was trying to test some services written to JAX-WS. I easily got the service (and client) running with both the Sun RI and with Apache CXF. However, a couple other java toolkits I tried required major porting efforts. Not fun and not something I really had time to do.