Most applications will use the first variant. However, applications that were coded to run on Java SE 8 Compact Profile 2 may use the second variant (the one whose class name begins with "Basic"). The Compact Profile 2 classes are maintained for backward compatibility.
The
These classes implement the javax.sql.DataSource interface, which a JNDI server can reference (except in the case of the second variant). Typically, this is the object that you work with as a DataSource.
These classes implement the javax.sql.ConnectionPoolDataSource interface and provide a factory for PooledConnection objects.
These classes implement the javax.sql.XADataSource interface.
For more information, see the API documentation for each class.