[LEAPSECS] Java: ThreeTen/JSR-310

Gerard Ashton ashtongj at comcast.net
Fri Jan 28 13:34:43 EST 2011


When it comes to finding a standard to smooth UTC in order to hide leap
seconds for purposes of the Java Instant class, I would be tempted to
find a computer architecture that handles leap seconds properly, and
propose a standard that can be implemented as easily as possible on that
architecture. Reward the architecture that does it right and punish the
architecture that does it wrong.

One architecture that appears to do it right, if you want it to, is the
IBM mainframe z-series. There is a Redbook that describes how it works
in great detail:

http://publib-b.boulder.ibm.com/abstracts/sg242070.html?Open

However, the Redbook concentrates on how the hardware clocks are
affected, and does not explain fully how this is carried through to
application programs. A further complication appears to be that various
installations seem to be able to set their computers to keep track of
leap seconds or not. Any timing error, whether a leap second when leap
second handling is turned off, or from a different source, can be
resolved by steering the system clock. Steering will fix a 1 second
error in about 12 hours. Steering is invisible to the operating system
and application programs.

So the IBM approach might be too flexible for Java; it would probably be
impractical to allow Java to work differently at different installations.

Windows and Unix have general reputations of not doing it right; does
anyone know of a hardware/operating system combination that handles leap
seconds correctly? If so, does it have a defined approach to providing a
quasi-UTC that hides leap seconds to applications that wish to live in
blissful ignorance?

Gerry Ashton


More information about the LEAPSECS mailing list