The JSR-169 interface is a subset of JDBC 3.0, but still the JDBC 3.0 implementation classes do not extend the JSR-169 implementation classes. Instead, the JSR-169 and JDBC 3.0 implementation classes extend a common base class. The reason for this structure, is that the JSR-169 compile targets used to be optional, so the JDBC 3.0 classes could not depend on them.
For example, the class javadoc comment for EmbedResultSet169 says:
- ResultSet implementation for JSR169.
- Adds no functionality to its (abstract) parent class.
- If Derby could be compiled against JSR169 that the parent
- class could be the concrete class for the environment.
- Just like for the JDBC 2.0 specific classes.
- Until that is possible (ie. easily downloadable J2ME/CDC/Foundation/JSR169
- jar files, this class is required and is only compiled by an optional target.
Since the JSR-169 code is no longer optional, we should do as the comment suggests, and use the base class directly instead. This would allow us to simplify the class tree.