JDK-8198582 : Split java.sql to create module java.transaction.xa
  • Type: CSR
  • Component: other-libs
  • Sub-Component: other
  • Priority: P3
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 11
  • Submitted: 2018-02-22
  • Updated: 2018-03-28
  • Resolved: 2018-02-24
Related Reports
CSR :  
Relates :  
Description
Summary
-------

JSR 907 1.3 MR indicated that the javax.transaction.xa package will be subsumed by Java SE.  As part of that effort, we will need to create a new module java.transaction.xa.

Problem
-------

javax.transaction.xa should be provided in its own module now that it has been subsumed by Java SE.

Solution
--------

Remove javax.transaction.xa from the java.sql module and create the java.transaction.xa module.  The java.sql module will still require use of the new module but it will make it easier for other technologies who may desire to use the javax.transaction.xa package.

Specification
-------------

The changes may be seen at http://cr.openjdk.java.net/~lancea/8197533/webrev.00/index.html and the webrev is also attached.


Comments
As a comment for the JLS, it would be preferable if the binary compatibility section explicitly listed this sort of change as non-problematic. There are a few places in the platform where a name based lookup "module-name/package-name/type-name" is used that would be broken by this change, but I don't think that use case is nearly sufficient to block the module split. (That convention is used in a few places in parts of the annotation processing API.) Moving to Approved.
24-02-2018

Yes the javax.transaction.xa and its 3 types are just moving to its own module. Users of the java.sql module will not see a change in behavior, that is the types from java.transaction.xa will still be visible
23-02-2018

As far as I can tell, in essence this CSR moves three types in the javax.transaction.xa package from the java.sql module to a new java.transaction.xa module. Is that correct? However, since java.transaction.xa is required transitively by java.sql, the users of java.sql will still see these types as visible. Is that correct? I want to make sure to properly understand the compatibility implications of this kind of change. (Various module-qualified lookups of name would fail after the change, but that shouldn't be a problem in this case.) Moving to Provisional.
22-02-2018