Find JSRs
Submit this Search


Ad Banner
 
 
 
 

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>