Java EE should be an implementation
There, I've put it in writing... Enough of this madness. Java EE should be an implementation, not a spec.
Joseph Ottinger has posted an interesting editorial over on TheServerSide entitled: "Where Java EE goes horribly wrong." In the blog, Joseph relates what a pain in the butt it is to port an application from one Java EE implementation to another.
Joseph's experiences seem all too familiar... and all too unnecessary.
Do we really want Java EE to be a spec?
Do most of us really benefit from a slew of Java EE implementations?
Wouldn't most of us really rather forgo the pain and have one official Java EE implementation?
In my thinking, Java EE has become an integral part of the Operating System. My products require it's presence, and the line between features provided by the OS and those provided by the Java EE app server is very blurry to my clients.
Back in the 80's there were a multitude of Unix implementations (most of which were tied to a vendor's hardware platform)... and all of them had quirks. Things got so bad that a truce was declared and the Unix vendors tried to collaborate on a common specification called System V. These unification efforts never really overcame the perception that Unix was fractured, and the door was left wide open for Windows NT and Linux to dominate the Server OS landscape.
Today, a multitude of Java EE implementations (with all the unavoidable porting quirks that go along with multiple implementations) is leaving the door open for implementations (products), such as Ruby, to perhaps take the lion's share of the market.
As with Unix and System V, it may be too late for Java EE to formally consolidate on a single implementation... but I sure would like to see a single Java EE implementation dominate in the same way that Linux dominates the Unix world.