Why do JDBC drivers always create problems?

I’m not sure if the readers of this blog have seen this problem or not but I’ve always seen driver issues (especially JDBC drivers) when deploying applications. Why does every vendor have tens of jdbc driver versions and why does every database vendor create a bunch of drivers for every release out there.

This kind of incompatibility between application servers, database vendors and third party API developers is causing serious productivity problems and is causing costs to jump through the roof for major J2EE implementation and most seriously causing a serious fragmentation of the market. This allows alternate frameworks (like Spring, Hibernate etc.) and competing technologies (like .NET etc.) to hit J2EE where it hurts!!

Talk backs are welcome.