This is a well writtent article that covers two of the three different Java database access standards. Which is exactly the problem. The Java community needs to pick a single standard for _production_ systems and evangelize that standard.
Otherwise, Microsoft with their unified model are going to have field day winning the server battle against a divided field.
Microsoft has picked it's database access methodology and is backing it with all of it's resources. It's got flaws, like all standards, but it has the advantage that everyone is using it.
When it comes to Java you don't know which one is going to win, and from a business technology adoption perspective that looks like a risk that doesn't need to be taken.
Does that mean that experimentation needs to stop? No, but we need to start talking about what is good for _production_ and differentiating that from what is cool, but not ready for prime time. I'm not saying what is, or is not, ready for prime time. I'm just saying that somebody big, needs to come out and back a Java database horse.
If you want a historical perspective, look what DOS did to UNIX about 12 years ago. UNIX had a chance on the Desktop, but because the vendors wouldn't adopt standards they were defeated by the unified, supported DOS camp. Now we talk about UNIX on the desktop as some sort of pipe-dream fantasy.
Java cannot afford a loss of that kind. If it is to survive long run it needs to make a solid showing in the server market. The way Apache is holding well against IIS.
Microsoft can be held at bay, but the Java community needs to unify and adopt proven reliable production standards to make that happen.