<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hi,<br>
    <br>
    8007572: Replace existing jdk timezone data at
    &lt;java.home&gt;/lib/zi with JSR310's tzdb.
    <br>
    <br>
    Webrev:<br>
    <span class="moz-txt-link-freetext"><a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~sherman/8007572/">http://cr.openjdk.java.net/~sherman/8007572/</a><br>
      <br>
      Note:<br>
    </span><span class="Apple-style-span" style="border-collapse:
      separate; color: rgb(0, 0, 0); font-family: 'Times New Roman';
      font-style: normal; font-variant: normal; font-weight: normal;
      letter-spacing: normal; line-height: normal; orphans: 2;
      text-indent: 0px; text-transform: none; white-space: normal;
      widows: 2; word-spacing: 0px; font-size: medium;"><span
        class="Apple-style-span" style="font-family: monospace;
        font-size: 12px; line-height: 14px;">JDK/JRE has been using the
        time zone data at &lt;java.home&gt;/lib/zi for<br>
        j.u.TimeZone since JDK 1.4.0 [1]. JSR310 has introduced in its
        own<br>
        time zone data file/format &lt;java.home&gt;lib/tzdb.jar to
        provide the time<br>
        zone data support for its new java.time date-time classes.<br>
      </span></span><span class="Apple-style-span"
      style="border-collapse: separate; color: rgb(0, 0, 0);
      font-family: 'Times New Roman'; font-style: normal; font-variant:
      normal; font-weight: normal; letter-spacing: normal; line-height:
      normal; orphans: 2; text-indent: 0px; text-transform: none;
      white-space: normal; widows: 2; word-spacing: 0px; font-size:
      medium;"><span class="Apple-style-span" style="font-family:
        monospace; font-size: 12px; line-height: 14px;"><br>
        So we now have two different time zone data files in different
        formats<br>
        (though from the same time zone data source, </span></span><span
      class="Apple-style-span" style="border-collapse: separate; color:
      rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;"><span class="Apple-style-span"
        style="font-family: monospace; font-size: 12px; line-height:
        14px;">Olson tz data, now the IANA<br>
        Time Zone Datebase</span></span><span class="Apple-style-span"
      style="border-collapse: separate; color: rgb(0, 0, 0);
      font-family: 'Times New Roman'; font-style: normal; font-variant:
      normal; font-weight: normal; letter-spacing: normal; line-height:
      normal; orphans: 2; text-indent: 0px; text-transform: none;
      white-space: normal; widows: 2; word-spacing: 0px; font-size:
      medium;"><span class="Apple-style-span" style="font-family:
        monospace; font-size: 12px; line-height: 14px;">) to support two
        sets of date-time APIs (java.util<br>
        date-time classes and java.time date-time classes) in one
        JDK/JRE, which<br>
        definitely will add the maintenance burden going forward, given
        the fact<br>
        that we will have to update/distribute the latest tzdb data in
        JDK/JRE<br>
        periodically [2].</span></span><br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style:
      normal; font-variant: normal; font-weight: normal; letter-spacing:
      normal; line-height: normal; orphans: 2; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 2;
      word-spacing: 0px; font-size: medium;"><span
        class="Apple-style-span" style="font-family: monospace;
        font-size: 12px; line-height: 14px;"><br>
        Also the current way the time-zone data is being
        distributed/installed<br>
        (at &lt;java.home&gt;/lib.zi, as individual file for each time
        zone) has been<br>
        a footprint concern for some configurations, especially the
        small embedded<br>
        environment. The JEP151 [3] was originally submitted to propose
        to store<br>
        the time-zone data more efficiently into a single compressed
        file. The<br>
        JEP 151 has been withdrawn since, with the assumption that JDK 8
        may<br>
        replace the "zi" data with the much smaller JSR310 tzdb data
        file.</span></span><br>
    <br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style:
      normal; font-variant: normal; font-weight: normal; letter-spacing:
      normal; line-height: normal; orphans: 2; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 2;
      word-spacing: 0px; font-size: medium;"><span
        class="Apple-style-span" style="font-family: monospace;
        font-size: 12px; line-height: 14px;">As indicated in JEP151,
        current installed "zi" directory probably takes<br>
        up 1M of disk-space with the 0.5k default
        file-system-block-size. Even<br>
        with the proposed "store in one single compressed file"
        approach, it will<br>
        still take about 250K space for all tzdb data in "zi" directory.
        JSR310<br>
        tzdb data file however is much smaller. It is around 40K for
        compressed<br>
        and 100k uncompressed, for the same tz data.</span></span><br>
    <br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style:
      normal; font-variant: normal; font-weight: normal; letter-spacing:
      normal; line-height: normal; orphans: 2; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 2;
      word-spacing: 0px; font-size: medium;"><span
        class="Apple-style-span" style="font-family: monospace;
        font-size: 12px; line-height: 14px;">The proposed change is to
        share the JSR310 time zone data tzdb.jar<br>
        with j.u.TimeZone by converting the JSR310 tzdb data completely
        (bits<br>
        to bits compatible) at runtime into the internal data structure
        that<br>
        j.u.TimeZone needs for its time zone data functionality/needs.<br>
        <br>
        Thanks!<br>
        -Sherman<br>
        <br>
      </span></span><span class="Apple-style-span"
      style="border-collapse: separate; color: rgb(0, 0, 0);
      font-family: 'Times New Roman'; font-style: normal; font-variant:
      normal; font-weight: normal; letter-spacing: normal; line-height:
      normal; orphans: 2; text-indent: 0px; text-transform: none;
      white-space: normal; widows: 2; word-spacing: 0px; font-size:
      medium;"><span class="Apple-style-span" style="font-family:
        monospace; font-size: 12px; line-height: 14px;">[1]
        <a class="moz-txt-link-freetext" href="https://jbs.oracle.com/bugs/browse/JDK-4230123">https://jbs.oracle.com/bugs/browse/JDK-4230123</a><br>
        [2]
<a class="moz-txt-link-freetext" href="http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html</a><br>
        [3] <a class="moz-txt-link-freetext" href="http://openjdk.java.net/jeps/151">http://openjdk.java.net/jeps/151</a></span></span><span
      class="Apple-style-span" style="border-collapse: separate; color:
      rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;"><span class="Apple-style-span"
        style="font-family: monospace; font-size: 12px; line-height:
        14px;"><br>
      </span></span>
  </body>
</html>