JDK1.6のDriverManagerのJavadocを見ていたら、「サービスプロバイダメカニズムをサポートするように拡張された」と書いてあった。
サービスプロバイダーって何じゃらほい?と思って調べてみた。
DriverManagerがJDK1.6(JDBC4.0)からサポートした仕組みと言ったら、jarファイルの中にクラス名を書いたファイルを置いておいて、それを読み込むもの。
サービスプロバイダーというのは、その仕組み自体のことらしい。
JDBCドライバーの具象クラス名を書いたファイル名が「java.sql.Driver」で、インターフェース名そのものだった(せめて拡張子を何か付けないのかと疑問に思った(苦笑))のは、このサービスプロバイダーの仕様に則ったものだったわけだ。
色々なクラスでも汎用的に使えるようにする為には、確かにクラス名そのものにしちゃうのが一番楽かも。(実装上も、ファイル名を考える手間も)
DriverManagerがサービスプロバイダーを使うようになったのがJDK1.6からなので
サービスプロバイダー自体も新しい仕組みなのかと思ったら、少なくともJDK1.3の頃からある由緒正しい仕組みだったらしい^^;(JDK1.3のJARのJavadocに載ってた)
そんなの全然知らなかったなー(汗)