Updated conformance text for Java SE 9
sritter at azul.com
Mon Jul 31 12:06:04 UTC 2017
On 25/07/2017 12:25, mark.reinhold at oracle.com wrote:
> 2017/7/25 6:48:26 -0700, Simon Ritter <sritter at azul.com>:
>> 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
> 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
> 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.
The question that this raises is, how does someone who uses a further
implementation know that that implementation has been created subject to
the constraints of the specification? The initial implementation must,
of course, pass the TCK. However, guaranteeing IP rights for derived
implementations requires the TCK to be run on all derived
implementations, which the vast majority of users are not able to do.
I think that it needs to be made clear in the specification that the
output from jlink (or a similar tool) whilst in theory is a conformant
runtime is not automatically granted IP rights unless the TCK has
verified it to be conformant.
> - Mark
More information about the java-se-9-spec-observers