RFR JDK-8075526: Need a way to read and write time in UTC

Claes Redestad claes.redestad at oracle.com
Mon Jul 6 18:22:47 UTC 2015



On 2015-07-06 19:07, Xueming Shen wrote:
> On 07/06/2015 07:15 AM, Claes Redestad wrote:
>> Hi,
>>
>> On 2015-07-01 19:05, Xueming Shen wrote:
>>> On 07/01/2015 05:02 AM, Claes Redestad wrote:
>>>> Hi,
>>>>
>>>> On 2015-06-30 23:11, Xueming Shen wrote:
>>>>> Hi,
>>>>>
>>>>> Please help review and comment on this rfe.
>>>>>
>>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8075526
>>>>> webrev: http://cr.openjdk.java.net/~sherman/8075526
>>>>
>>>> I think this looks reasonable.
>>>>
>>>> I think we could consolidate the LocalDateTime<->xdostime
>>>> conversions into ZipUtils along with and aligned with the code
>>>> to convert UTC instants (ZipUtils::dosToJavaTime/javaToDosTime),
>>>> which I've suggested should be converted into similar code
>>>> anyhow:
>>>
>>> I would prefer to deal with JDK-8066644 issue separately. One of the 
>>> concerns
>>> of replacing the j.u.Date with the java.time classes was the 
>>> possible startup
>>> time regression that may be triggered by forcing the vm to load lots 
>>> of java.time
>>> classes given all the jvm starts with loading bunch of jar files. As 
>>> a matter of
>>> fact, we spent the time and did the prototype when doing JSR310, it 
>>> did show
>>> startup regression back then... This might no longer be an issue if 
>>> moving to
>>> module system, but it'd be better to have some data first. On the 
>>> other hand,
>>> the proposed change here is for two new methods, no impact to any 
>>> existing
>>> apps.
>>>
>>
>> I fired up the patch proposed to address 8066644 on latest jdk9/dev 
>> (the work was paused
>> while Peter Levart addressed some related inefficiencies, e.g., 
>> caching result in
>> ZoneId.getDefault()) and have verified that replacing the current 
>> j.u.Date implementation
>> with java.time in ZipUtils have no measurable effect on our internal 
>> startup and footprint
>> benchmarks (with/without modules) since neither is no longer loaded 
>> on application startup.
>>
>> I don't care if we move forward with 8066644 before or after this 
>> patch, justnoticedthat
>> the parts of the code from this and that patch looks very much the same.
>>
>
> Thanks for taking time on this. But let's do it separately. Just in 
> case 8066644 might need
> to be backport.

Sure. If backporting is on the table I think it would be more convenient 
to get 8066644 in first
(since this change will block on getting ccc approval etc). I will send 
out an RFR soon, unless
anyone objects or Peter beats me to it. :-)

>
>> Also spotted this nit:
>>
>> +            this.mtime = FileTime.from(
>> +                ZonedDateTime.of(time, 
>> ZoneId.systemDefault()).toInstant());
>>
>> could be written
>>
>> +            this.mtime = FileTime.from(
>> + time.atZone(ZoneId.systemDefault()).toInstant());
>
>     @Override
>     public ZonedDateTime atZone(ZoneId zone) {
>         return ZonedDateTime.of(this, zone);
>     }
>
> Just tried to save one layer of invocation :-) though probably does 
> not matter.  The
> chained/short code may look more decent.

I was really only considering readability here. This will be path not 
taken in most cases -
if not all - so outlining like I suggested could actually win by poking 
the JIT to do the
right thing and ignore that branch. :-)

Thanks!

/Claes

>
> -sherman
>
>




More information about the core-libs-dev mailing list