The Java patch for the daylight saving time schedule change has a bug. But most applications are probably unaffected.
As discussed in Daylight Savings Time and Java, the schedule for daylight saving time in the U.S. is changing this year, which means computers need to be patched, which includes Java and thus IBM's Java-based products like WAS. IBM has set up a DST section on the IBM Alerts site to help make the patches easier to find.
Well, it turns out that Sun's DST patches for Java themselves have a bug. It was discovered last week, but relates back to a previous bug:
- Bug #6530336: CRITICAL DST bug in latest jdk releases -- reported last week; it is "in progress" and not yet fixed
- Bug #6466476: EST wrong in 1.5.0_08 and Java 6 beta 2 -- reported in Sept 2006; it is "in progress" and not yet fixed
There's some debate as to how likely you are to run into this problem; it's easy to recreate, but it only affects code for parsing timestamps with three-letter timezone abbreviations. IBM's (and Sun's?) opinion/guidance seems to be that this problem shouldn't really exist anymore since as of JDK 1.2 in 1998, Java application code isn't supposed to use three-letter timezone abbreviations anymore. So it's probably not worth worrying about this unless you have an application that parses timestamp strings and are seeing it fail. In any event, if you're having the problem, IBM has a patch for its JDK.
In response to the latest bug, IBM has released a new version of its Java Time Zone Update (JTZU) utility, version 1.4.7c. The JTZU versions are a bit confusing; here's the story (as I understand it; take this with a grain of salt):
- Version 1.2.7a and earlier -- Fixes the JDK to know the new DST dates
- Version 1.3.7a -- A change to support the IBM JDK 1.3.1 on Solaris; works the same as 1.2.7a on all other platforms
- Version 1.4.7c -- A change to fix Sun Java Bug #6530336
So 1.2.7a and 1.3.7a are generally available from IBM, adjust DST for the new dates in 2007 and later years, and are equivalent to each other on all platforms except JDK 1.3.1 on Solaris. Most applications should not run into Sun Java Bug #6530336, but if yours do, apply 1.4.7c.
So, where do you get the JTZU utility?
- Use of three-character TimeZone identifiers incompatible with some SDK or JRE Service Refreshes (Reference #1250247) -- Explains 1.4.7c and has links to download it
- IBM Time Zone Update Utility for Java Download Page -- Provides the latest generally available versions, 1.3.7a and 1.2.7a
I still wonder: Why do computers care about daylight saving time? If they would just use UTC clocks and timestamps, it seems like a lot of these problems would go away.