Updated conformance text for Java SE 9

Tim Ellison Tim_Ellison at uk.ibm.com
Fri Jul 28 17:07:57 UTC 2017


mark.reinhold at oracle.com wrote on 25/07/2017 17:25:00:
> 2017/7/25 6:48:26 -0700, Simon Ritter <sritter at azul.com>:
> > Mark,
> > thanks for the revised and expanded text.  I think this clarifies 
things 
> > clearly in respect of how a runtime generated using jlink (or a 
similar 
> > tool) conforms to the specification.
> > 
> > There's a still a few things that I'd like to clarify further.
> > 
> > "The Technology Compatibility Kit (TCK) for this Specification will be 

> > able to test all of the Java SE modules included in an Implementation, 

> > and it will require that set to be closed." Presumably, it is not 
> > necessary to run the TCK on all possible combinations of modules to 
> > determine which are closed (and therefore in conformance) and which 
are 
> > not.
> 
> Correct.  If the set of Java SE modules in an Implementation is not
> closed then the Implementation won't even start, never mind pass the
> TCK.  (Or, if it does start then its module system is severely broken,
> and no configuration of it will pass the TCK anyway.)
> 
> > How do we verify that the output from a jlink-like command is in 
> > conformance?  Is there some test or tests that can be run on jlink (or 

> > similar) to guarantee that it can only produce conformant runtime 
> > distributions?
> 
> Um, no.  That would require the ability to solve the halting problem.
> 
> >                 Alternatively, will there be some test tool that can 
be 
> > used on the output of jlink to verify that the Java SE modules 
included 
> > are closed?
> 
> You can verify the output of `jlink`, or a similar tool, by running the
> TCK on that output.  In principle every possible output of such a tool
> must pass the TCK, but (obviously) that's not a testable assertion.
> 
> > "This Specification defines the Licensor Name Space on a 
> > module-by-module basis.  Provided that an Implementation that fully 
> > implements this Specification includes the required Licensor Name 
Space 
> > for each included module then it is not considered to subset the 
> > Licensor Name Space."  The way I interpret this, it means that any 
jlink 
> > produced runtime that includes a closed set of Java SE modules, each 
of 
> > which conforms to the Licensor Name Space, will be deemed to be a 
> > conformant implementation of the Java SE 9 specification.
> 
> No, for (at least) two reasons.
> 
> First, the entire set of Java SE modules that the runtime includes must
> be closed.  That's a different, and stronger, statement than "the 
runtime
> includes a closed set."
> 
> Second, if each Java SE module in a runtime includes the Licensor Name
> Space for that module then you can conclude only that the runtime as a
> whole does not subset the Licensor Name Space.  That's a necessary, but
> not sufficient, condition to claim conformance of a linked runtime.
> The Implementation that was used to create that runtime must itself be
> conformant, which requires (among other things) that it pass the TCK and
> that its linking tool ensures that any linked runtime satisfies all of
> the constraints laid out in the Specification, per the paragraph that
> follows the paragraph that you quoted.
> 
> >                                                           Any user of 
> > such a Java runtime will, therefore, be granted the IP rights as 
defined 
> > by the JSPA (Section 5.B).  Is that correct?
> 
> No, per the above.
> 
> The intent here is that if an Implementation provides the means to 
create
> further Implementations, subject to the constraints of the 
Specification,
> then any user of such a derived Implementation will be granted the
> necessary IP rights.  Your summary of the required conditions, however,
> is incomplete.

Please humour me for a moment -- this is merely a thought experiment, 
IANAL, etc.

So with some selective quoting from the "Java SE 9 (JSR 379) Proposed 
Final
Draft: DRAFT 3" section 7 [1].

> 1. An Implementation must include the java.base module.
> 2. An Implementation may include one or more additional Java SE modules 
...

and later

> An Implementation that passes the TCK is considered to fully implement
> this Specification even if it does not include all of the Java SE 
modules.

Which we agreed is a reference to the "Intellectual Property; Out-Bound"
section of the JSPA 2.0.

That would suggest, taken to the extreme, that a minimal Implementation
containing java.base as the only Java SE module, and passing the TCK for
java.base (i.e. is compliant) affords the user a license covering the
*entire* Specification technology.

It's a hypothetical situation, so I'm not expecting a response.

[1] http://cr.openjdk.java.net/~iris/se/9/java-se-9-pfd-spec-03/#Modules

Regards,
Tim


Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


More information about the jpms-spec-experts mailing list