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