Derby provides two variants of each DataSource interface defined by the JDBC API.
Applications that run on the J2SE 1.4 or 1.5 platform must use the first variant. Applications that run on the Java SE 6 platform can use either of the two variants. However, the DataSource methods specific to the JDBC 4 API are available only from the second variant (the one whose class name ends with "40").
If an application is running on the Java SE 6 platform, all connection objects returned from the DataSource will be JDBC 4 connection objects, regardless of which DataSource variant is in use.
The Derby implementation classes for the DataSource interfaces are as follows:
Implements the javax.sql.DataSource interface, which a JNDI server can reference. Typically this is the object that you work with as a DataSource.
Implements the javax.sql.ConnectionPoolDataSource interface. A factory for PooledConnection objects.
Derby's implementation of the javax.sql.XADataSource interface.
See the javadoc for each class for more information.