Hi,

what about this bug?
It is still assigned to me and I would be happy to fix it as proposed in:

http://cr.openjdk.java.net/~simonis/webrevs/2016/8149519
https://bugs.openjdk.java.net/browse/JDK-8149519

If anybody has better ideas I'm open to transfer the bug to him :)

But I still think this should be fixed before JDK 9 will be shipped.
It's simply not right if 'java.specification.version' equals to
'java.version'.

Regards,
Volker

On Thu, Apr 28, 2016 at 6:34 AM, Iris Clark <iris.cl...@oracle.com> wrote:
> Hi, Volker.
>
> Sorry for the delay.
>
>> Ping - shouldn't we fix this issue before JDK 9 Feature Complete?
>
> Ideally, yes.  I am hoping to get this resolved in the next few weeks.
>
> My first priority for Verona is JDK-8144062 which moves jdk.Version into a 
> standard API (Alan mentioned this bugid earlier in this thread).  That 
> absolutely must be completed before Feature Complete next month.
>
> Thanks,
> iris
>
> -----Original Message-----
> From: Volker Simonis [mailto:volker.simo...@gmail.com]
> Sent: Wednesday, April 27, 2016 1:28 AM
> To: Iris Clark
> Cc: Java Core Libs; verona-...@openjdk.java.net; Alex Buckley; Kumar 
> Srinivasan; Marvin Ma
> Subject: Re: RFR(XXS): 8149519: Investigate implementation of 
> java.specification.version
>
> Ping - shouldn't we fix this issue before JDK 9 Feature Complete?
>
> Could you please also comment on my remarks regarding the relation of
> java.lang.Package.getSpecificationVersion() to JEP and 223 and and my 
> question why the Version class is not in a standard java package.
>
> Thank you and best regards,
> Volker
>
>
> On Thu, Apr 7, 2016 at 12:11 PM, Volker Simonis <volker.simo...@gmail.com> 
> wrote:
>> On Wed, Apr 6, 2016 at 8:28 PM, Iris Clark <iris.cl...@oracle.com> wrote:
>>> Hi, Volker.
>>>
>>> Sorry for the delay.  I agree that the old implementation isn't quite 
>>> correct.  I can't see us potentially having a JCP MR for a security or 
>>> patch release (9.0.0.X and 9.0.X respectively).
>>>
>>> I could see a MR for an very unusual minor release (9.X).  If we had an MR 
>>> there's no guarantee that we'd need to change the 
>>> java.specification.version system property.   However, in the event that we 
>>> did need to change the java.specification.version, it should match that 
>>> release's $MAJOR.$MINOR, even if it meant that we had a sequence of 
>>> specification version numbers with gaps.
>>>
>>> As an example, let's say that JDK 9 is released via umbrella JSR with 
>>> java.specification.value of "9".  The system property would remain at "9" 
>>> for all releases regardless of type until we choose to have a MR.  Should 
>>> that MR occur while we're working on minor release 9.3.X and there is a 
>>> need to change the value of java.specification.value, it would become "9.3" 
>>> and would remain so in every release until the next MR.
>>>
>>> While we haven't changed the system property recently, I think that we need 
>>> to future-proof ourselves a little bit for MRs as described above.
>>>
>>> Assuming that we change the syntax of java.specification.version to
>>> $MAJOR.$MINOR (zeros truncated, value dependent on JCP) then we need
>>> to make a similar change to the syntax of
>>> java.vm.specification.version.  [ Note that in the current
>>> implementation, I believe that the values of
>>> java.specification.version and java.vm.specification.version are tied
>>> to each other. ]
>>>
>>> Changing the syntax of java{.vm}?specification.version requires a CCC which 
>>> I will file once we have agreement on the necessary changes.
>>>
>>
>> Hi Iris,
>>
>> thanks for your comments. I don't think that using $MAJOR.$MINOR for
>> java.specification.version is a good solution. As far as I understand,
>> JEP 223 (i.e. the new version scheme) is an Oracle/OpenJDK
>> implementation detail. There is no JSR for this and it won't be
>> enforced trough a JCK/TCK test (please correct me if I'm wrong). The
>> new versioning schema references the JCP in that is says that the
>> $MAJOR number corresponds to the "Java SE Platform Specification"
>> number as specified by the JCP in the corresponding JSR. But not vice
>> versa - i.e. there's no JSR referencing JEP 223.
>>
>> JEP 223 also says that the $MINOR number will be increased if this is
>> mandated by a Maintenance Release of the relevant Platform
>> Specification (by the JCP). But as you correctly noticed, in reality,
>> $MINOR is expected to be increased frequently compared to the number
>> of Java SE Maintenance Releases (if there will be any at all). So if
>> the JCP should decide to publish a Maintenance Release, why should it
>> name if after the then actual $MINOR update release number of the
>> Oracle/OpenJDK. I think a natural choice for such a MR would be "9.1",
>> no difference at which update release version Oracle/OpenJDK will be
>> at that time.
>>
>> So I think it would be best to decouple java.specification.version
>> from the Java versioning schema. We can start with
>> java.specification.version == $MAJOR. If there should be a MR
>> sometimes in the future, we can just set java.specification.version to
>> the version number of that MR, whatever that will be. That's exactly
>> what this change is about.
>>
>> Regarding the value of java.vm.specification.version I'm not sure what
>> it actually means at all. Until Java 1.6,
>> java.vm.specification.version has always been "1.0", while
>> java.specification.version has changed from 1.4, to 1.5 and 1.6
>> (notice that java.specification.version has never been changed to
>> 1.4.2, it was 1.4 for Java 1.4.0 as well as for 1.4.2). Starting with
>> Java 7, java.vm.specification.version is the same like
>> java.specification.version (i.e. 1.7 and 1.8) but I'm not sure if that
>> is mandated by JCP and if it will be possible that these numbers will
>> diverge for a Java release. I.e. will it be possible to have a new
>> Java version (say Java 10) where the VM specification (and thus
>> java.vm.specification.version) will remain unchanged (say "9")? From
>> my understanding, that should be possible. Especially for a MR, it
>> seems highly probable to me that the java.specification.version will
>> be increased, but the VM specification (and thus
>> java.vm.specification.version) will remain unchanged.
>>
>> So again, I think we shouldn't tie java.vm.specification.version to
>> java.specification.version and simply start with
>> java.vm.specification.version == $MAJOR. The current implementation
>> already does this correctly. While the java.specification.version
>> property comes from VERSION_SPECIFICATION in
>> common/autoconf/spec.gmk.in and it is being set in
>> jdk/src/java.base/share/native/libjava/System.c the
>> java.vm.specification.version property is set being in
>> hotspot/src/share/vm/runtime/arguments.cpp directly to the major Java
>> version number. Because of this difference, there are currently no
>> problems with the java.vm.specification.version property caused by the
>> new versioning schema.
>>
>> As a side note: while I wrote all this down, I realized that we have
>> java.lang.Package.getSpecificationVersion() in the class library which
>> returns the specification version of a specific package. But this API
>> is not mentioned anywhere in JEP 223. Shouldn't the output of
>> java.lang.Package.getSpecificationVersion() be aligned with JEP 223
>> and java.vm.specification.version as well?
>>
>> And a final question. Why did we put jdk.Version into the jdk package?
>> As far as I know, jdk is not a standard Java package and thus not
>> enforced by the Java standard (please correct me if I'm wrong).
>> Shouldn't the Version class be in a standard Java package such that
>> it's implementation will be mandatory for all Java implementations?
>>
>> Regards,
>> Volker
>>
>>> Regards,
>>> Iris
>>>
>>> -----Original Message-----
>>> From: Volker Simonis [mailto:volker.simo...@gmail.com]
>>> Sent: Tuesday, April 05, 2016 10:26 AM
>>> To: Java Core Libs
>>> Cc: verona-...@openjdk.java.net
>>> Subject: Re: RFR(XXS): 8149519: Investigate implementation of
>>> java.specification.version
>>>
>>> Hi,
>>>
>>> can somebody please review this trivial change?
>>>
>>> Regards,
>>> Volker
>>>
>>>
>>> On Mon, Apr 4, 2016 at 6:47 PM, Volker Simonis <volker.simo...@gmail.com> 
>>> wrote:
>>>> Hi,
>>>>
>>>> can I please have a review for this small fix:
>>>>
>>>> http://cr.openjdk.java.net/~simonis/webrevs/2016/8149519
>>>> https://bugs.openjdk.java.net/browse/JDK-8149519
>>>>
>>>> Currently the value of the java.specification.version property comes
>>>> from VERSION_SPECIFICATION in common/autoconf/spec.gmk.in. It is
>>>> currently set to VERSION_NUMBER which is the same value which is
>>>> also used for the java.version property.
>>>>
>>>> This is a bad idea, because VERSION_NUMBER is a dot separated
>>>> sequence of numbers (e.g. 9.0.1) which is expected to change frequently 
>>>> (i.e.
>>>> for every build and/or update version). If we are configuring with
>>>> "--with-version-patch=1" for example, VERSION_NUMBER and
>>>> java.version will be "9.0.0.1". But it makes no sense that
>>>> VERSION_SPECIFICATION and java.specification.version have the same,
>>>> dotted value. And it breaks a lot of legacy applications which parse
>>>> java.specification.version as a float number. That code would still
>>>> work if java.specification.version would be a concrete number (e.g.
>>>> '9' or '10').
>>>>
>>>> I suggest to set VERSION_SPECIFICATION to VERSION_MAJOR in
>>>> common/autoconf/spec.gmk.in. This should be the "right value" until
>>>> we get a specification change during a major release which hasn't
>>>> happened for quite some time now.
>>>>
>>>> Regards,
>>>> Volker

Reply via email to