FINAL PROPOSAL: Provide date and time library from JSR-310
Stephen Colebourne
scolebourne at joda.org
Sat Mar 1 13:21:55 PST 2008
FINAL PROPOSAL
Provision of the JSR-310, Date and Time API, Reference Implementation
suitable for inclusion in OpenJDK.
Stephen Colebourne (team lead) & Michael Nascimento Santos
scolebourne(at)joda.org
misterm(at)gmail.com
1. Summary
----------
Two of the least liked APIs of the JDK are those of Date and Calendar.
The classes are mutable when they shouldn't be, have unusual performance
characteristics and months where January is zero. The formatting and
parsing code is also not thread-safe. Developers using the JDK have a
'clear need' for a better date and time API.
To tackle the issue, JSR-310 [1] was launched to provide a new Date and
Time API. The target for the JSR is inclusion in Java 7, which naturally
means inclusion in Open JDK. All work of the JSR is performed in public
forums.
JSR-310 is an original development. It is inspired by previous work,
notably Joda-Time [2], however the final result will be a completely new
API, capable of being descibed as an 'original work'. Code is not
being ported or reused from Joda-Time.
This project is a team submission. Stephen Colebourne is the lead for
the rules of the Open JDK Challenge.
2. Goals and deliverables
-------------------------
The goal of this project is to provide a complete working Reference
Implementation (RI) of JSR-310 as agreed by the JSR-310 working group.
It should be noted that the JSR is unlikely to be complete within the
timeframe of the challenge. As such, the goal for this project is to
complete the RI as required by the working group. Although a commitment
cannot be made here, it is intended that this should be used to publish
the RI for the JCP Early Draft Review milestone.
JSR-310 and this RI project shall cover as a minimum - immutable classes
for timestamps, dates, times, datetimes, timezone, timezone offset,
alternate calendar systems, duration, period, interval, formatting and
parsing.
3. Previous work
----------------
Work on the RI has already started [2] and continues to guide the
working group. This project represents the continuation of that development.
As a rough estimate, the current codebase contains about 50% of the
likely eventual classes. Of the existing classes, about 50% are code
complete, whilst the other 50% are stubs or incomplete. Tests exist for
about 10% of the existing codebase.
The Reference Implementation is BSD licensed. It is not proposed to
change that as it is compatible with the GPL license.
If this proposal is selected, and proceeds to completion, the entire RI
codebase will be made available under the SCA (both the parts already
coded, and the additions made since).
4. Milestones
-------------
Development milestones shall ultimately be determined by the JSR-310
working group. However the outline plan is:
1) Complete the development of the RI using stub methods
2) Integration with the existing Java classes, such as Date and Calendar
3) Provision of tests and appropriate bug fixes
5. Deliverables
---------------
The deliverables are:
1) The source code of the Reference Implementation of JSR-310.
2) The source code of any existing JDK classes modified as part of JSR-310.
3) Source code documentation in the form of javadoc suitable for
inclusion in the JDK.
4) Tests with 90%+ test coverage.
It is expected that the deliverables will correspond to the JCP Early
Draft Review stage.
The JSR-310 specification document does not form part of the
deliverables of this proposal.
6. Dependencies on Sun
----------------------
There are no known dependencies on Sun over and above those Sun has
already agreed to by joining the JSR-310 working group.
7. Developers
-------------
Stephen Colebourne has worked with Java since 1997 and in Open Source
since 2000. He is a Member of the Apache Software Foundation, creator
and project lead of Joda-Time [2], creator of Kijaro [3] and co-author
of FCM closures. He is currently a hands-on architect at SITA ATS Ltd
building airline e-commerce systems.
Michael Nascimento Santos has worked with Java for more than 8 years,
from J2ME to J2EE. He has contributed to 5 other JSRs besides JSR-310
and is a leading figure in Brazialian open source and leads the Genesis
framework project [4]. He works for Summa Technologies do Brasil Ltda.
[1] http://jsr-310.dev.java.net
[2] http://joda-time.sourceforge.net
[3] http://kijaro.dev.java.net
[4] http://genesis.dev.java.net/
More information about the challenge-discuss
mailing list