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.
See the javadoc for each class for more information.