I was around for the DCE days in the early 90's. Worked at Iona during the CORBA years in the late 90's. Contributed to JBoss and J2EE in the millenium. So, I'm starting to gain some perspective on the evolution of middleware specifications.


The evolution of DCE and CORBA was an interesting one. They both solved complicated problems, but each iteration of the specification added more and more features, but never really tried to step back and refactor the architecture to simplify the programming model. This is why I'm very excited about J2EE 1.5. It is quite refreshing to see that the main focus of J2EE 1.5 and EJB 3.0 is simplifying development.


I'm also impressed at Sun's stewardship. They recognized from XDoclet and .Net the power of Annotations, changed the Java language, and are now trying to leverage this within J2EE and other specifications. You may think : "Hey, if they don't simplify J2EE, J2EE is dead. So, of course they would do this." But, recognizing and accepting that that your specification needs serious revision is half the battle. The OMG failed to do this.


Its funny the lack of perspective some individuals have. Some bozo on TSS said in regards to EJB: "This is one of the key and most disturbing points about EJBs... This is why specs should start slim (or just wait) and build out as there's a consensus on best practices, not try to codify an architecture front-to-back first, then see how they're used."


As an industry, it could be said that EJB was the consensus of best practices at the time. O/R had been around for awhile in Java and even further back, in C++. People were doing it in various proprietary products or within in-house IT infrastructure groups. Same goes for distributed computing as the industry tried to take best practices in that area to create the DCE and CORBA specifications.


Best practices change and improve over time. If we took the approach of not standardizing, the industry would not be able to unify and evolve. Software evolution consists of iteration upon iteration. Without a specification, it is much harder for the industry as a whole to iterate. It also allows organizations who cannot bet their business on bleeding edge technologies so that they can code to some agreed-upon best practice and API even though it may or may not be the best.


That doesn't mean innovation should be relegated to a standards body. Organizations like the JCP should be a place to standardize innovations, not create them.