Following are proposed specification changes for JSR 056 for version
9:
0.) Specification version update to 9
The objective here is to update section 0, the Preface, to reflect
specification version 9 and to include this list of changes since
version 8.20
Section 0 - change three instances of "v8.20"
to "v9"
add section 0.7.8 as follows:
0.7.8 Changes since release 8.20
This is a minor update of the version 8.20 specification. The
changes are described below:
Modify Appendix A to avoid the non-transitive definition of
version comparisons when only one of two versions can be parsed as a
Java int.
Modify section 3.8.1 to clarify use of "java"
resource elements with nested resources in extension descriptors.
Modify section 3.4 and Appendix A to conform to XML
specification by requiring "&" version-range combiner
be expressed as "&"
Modify sections 4 and 5, and Appendix C, to introduce the new
attribute "type" to the "application-desc" , and
to add the "param" sub element.
This revision introduces the version number (9) for the JNLP
file and the JNLP API. Version 9 is a proper super set of version
1.0, and of version 8.20. A JNLP Client implementing this
specification must be able to run a JNLP file which requires 1.0,
1.5, 6.0, 6.0.10, 6.0.18, 7.0, 8.20, or 9; i.e., the spec attribute
in the jnlp element is set to any of 1.0, 1.5, 6.0, 6.0.10, 6.0.18,
7.0, 8.20 or 9.
A complete list of changes for v9 can be found at:
http://jcp.org/aboutJava/communityprocess/maintenance/jsr056/9.html
1.) JDK-6506300:
JNLP Specification: Version Selection Not Well Defined
The objective here is to re-define how version components are
compared when one can parsed as a java int, and the other cannot, to
avoid the existing non-transitive definition.
Appendix A says:
"Each element in a tuple is treated as either a numeric or
alphanumeric. Two elements are compared numerically if they can both
be parsed as Java ints , otherwise they
are compared lexicographically according to the ASCII value15
of the individual characters."
Change to:
"
Each element in a tuple is either numeric or alphanumeric. An element is numeric if it can be parsed as a Java int ,
otherwise it is alphanumeric. Two numeric elements are compared
numerically. Two alphanumeric elements are compared lexicographically
according to the Unicode value of the individual characters. When one
element is numeric and the other is alphanumeric, the alphanumeric
element is greater than the numeric element. (Numeric elements have
lower precedence than non-numeric elements.)
"
2.) JDK-6758890:
Nested resources in jnlp or j2se tag of component extensions jnlp
spec issue.
The objective here is to allow extension jnlp files to have to
have java (or j2se) resources. Though those java resources
cannot govern what jre is used, they can can have nested resources
that are only used when the specified version is used.
Section 3.8.1 says:
"No java elements can be specified as part of the resources."
Change to:
"A java element in a component extension will not govern what
version of java is used, but may be used containing nested resource
elements, and then those resources may be used only when using a java
version that matches the given version as specified in section 4.6"
3.) JDK-8075194:
Test cases http_requests/VersionBasedProtocol/index_version_and and
index_version_and2 fails with jnlp client exit code is -1
The objective here is to fix problem where specification is
contradictory to xml specification. The use of ampersand "&"
instead of "&" is prohibited in xml:
(also note typo in Appendix A, "simple-element" instead
of "simple-range")
Section 3.4 says:
"A version range is either a version-id, a version-id
followed by a star (*), a version-id followed by a plus sign (+) , or
two version-ranges combined using an ampersand (&)."
change to:
"A version range is either a version-id, a version-id
followed by a star (*), a version-id followed by a plus sign (+) , or
two version-ranges combined using an ampersand (&)."
Appendix A says:
" version-range ::= simple-range ( "&"
simple-element) * "
change to:
" version-range ::= simple-range ( "&"
simple-range) *
4.) JDK-8062186:
Revisit use of FX xml extension
4.1) Section 3.7.1
change from:
3.7.1 Application Descriptor for an Application
A JNLP file is an application descriptor if
the application-desc element is specified.
The application-desc element contains all
information needed to launch an application, given the resources
described by the resources element. For example:
<application-desc
main-class="com.example.MyMain">
<argument>Arg1</argument>
<argument>Arg2</argument>
</application-desc>
main-class
attribute: The name of the class
containing the public static void main(String[]) method of the
application. This attribute can be omitted if the main class can be
found from the Main-Class manifest entry in the main JAR file. See
section 5.2.
progress-class attribute:
The name of a class containing an implementation of the
javax.jnlp.DownloadServiceListener interface.
The optional progress-class attribute can be
used by an application to indicate to the JNLP client it's preference
that the specified class be used as a replacement for the client's
default method of displaying download progress to the user. If the
JNLP client can find and load this class, and it implements the
DownloadServiceListener interface, it is free to call it during the
downloading of other resources, instead of displaying progress in
it's default way. (see section 4.4).
argument element: Contains
an ordered list of arguments for the application.
Section 5.2
describes how an application is launched.
to:
3.7.1 Application Descriptor for an Application
A JNLP file is an application descriptor if
the application-desc element is specified.
The application-desc element contains all
information needed to launch an application, given the resources
described by the resources element. For example:
<application-desc type="Java"
main-class="com.example.MyMain">
<argument>Arg1</argument>
<argument>Arg2</argument>
<param
name="Param1" value="Value1"/>
<param
name="Param2" value="Value2"/>
</application-desc>
type attribute: The
optional type attribute indicates the type of application contained
in the resources and identified by the main-class attribute.
The only value of type required to be supported by a JNLP Client is
the default value "Java". If given the type attribute
value is not supported by the JNLP Client, the launch should be
aborted. If a JNLP Client supports other types of applications
(such as "JavaFX", or "JRuby"), The meaning
and/or use of the other application-desc attributes (main-class and
progress-class) and sub-elements (argument and param) may vary as is
appropriate for that type of application.
A value of "Java" (default) indicates the application is
a java application.
main-class attribute: (for
type "Java") The name of the class containing the public
static void main(String[]) method of the application. This attribute
can be omitted if the main class can be found from the Main-Class
manifest entry in the main JAR file. See section 5.2.
progress-class attribute:
(for type "Java") The name of a class containing an
implementation of the javax.jnlp.DownloadServiceListener interface.
The optional progress-class attribute can be
used by an application to indicate to the JNLP client it's preference
that the specified class be used as a replacement for the client's
default method of displaying download progress to the user. If the
JNLP client can find and load this class, and it implements the
DownloadServiceListener interface, it is free to call it during the
downloading of other resources, instead of displaying progress in
it's default way. (see section 4.4).
argument element: (for type
"Java") Contains an ordered list of arguments for the
application.
param element: Contains a parameter to the
Application. The name attribute contains
the name of the parameter, and the value
attribute contains the value. The parameters of an application-desc
of type "Java" shall be ignored.
Section 5.2
describes how an application is launched.
4.1) Section 5.2
change:
5.2.1 Launching an Application
If the JNLP file contains the application-desc
element, then an application must be launched.
The main class for the application is by default determined by the
main-class attribute of the application-desc
element. If this is not specified, then the Main-Class manifest entry
for the main JAR file is used. If neither is specified, then the
launch must be aborted.
The application is launched by invoking the static public void
main(String[] argv) method of the main class. The argv argument is
constructed from the argument elements
of the application-descriptor element.
to:
5.2.1 Launching an Application
If the JNLP file contains the application-desc
element, and the type attribute is "Java" then a Java
application must be launched.
The main class for the application is by default determined by the
main-class attribute of the application-desc
element. If this is not specified, then the Main-Class manifest entry
for the main JAR file is used. If neither is specified, then the
launch must be aborted.
The application is launched by invoking the static public void
main(String[] argv) method of the main class. The argv argument is
constructed from the argument elements
of the application-descriptor element.
It is not the intent of this specification to define the behavior
for launching an application of any other type, only to provide the
syntax of the jnlp file for jnlp clients that chose to support other
application type.
4.2)
Appendix C
change :
<!ELEMENT application-desc (argument*)>
to:
<!ELEMENT application-desc (argument*) (param*)>
and add:
<!--
The
type attribute of the application-desc element describes the type of
application to run. Default value(i.e.,
if the element is not specified) is Java.
-->
<!ATTLIST application-desc type
CDATA #IMPLIED>
|