Human activities revolve around the management of time. It’s just ironic that Java’s support for time and calendar manipulation has been quite anemic at best. Fortuntately there are several open source solutions out there that make a valiant attempt to compensate for Java’s defficiencies. (note: There’s a new JSR 130 formed to address the situation) Here’s the list of solutions I have found:
- Bedework – Bedework is an institutional calendar system for higher education designed to conform to current calendaring standards. Bedework has a centralized server architecture allowing immediate update of public and personal information. Events can be imported and exported in icalendar (RFC2445) format. Bedework has support for Caldav which will allow caldav aware clients access to the server.
- iCal4j – iCal4j is a library used to read and write iCalendar data streams as defined in RFC2445. iCal4j provides a parser and an object model, it allows manipulation of iCalendar data or creating new data models. Validation is also provided to ensure the data maintains a state consistent with the specification.
- CalDav4j – CalDAV4j is a protocol library that extends the Slide project’s WebDAV client and Apache’s HttpClient library to allow high level manipulation of CalDAV calendar collections as well as lower level CalDAV protocol interactions.
- jical – JiCal is a partial implementation of RFC2445. It can scan directories, find iCalendars tand convert them to free busy files for serving from your webserver. JiCal can generate an XML calendar format which expands the repeating events that can use to render as HTML, CSV, PDF, TXT.
- Time and Money – This is a project to develop code for manipulating basic concepts in recurring domains such as time and money. The design principles followed here are explained in Part III of Eric Evans’s book ‘Domain-Driven Design’.
- Joda Time – Joda-Time provides a quality replacement for the Java date and time classes. The design allows for multiple calendar systems, while still providing a simple API. The ‘default’ calendar is the ISO8601 standard which is used by XML. The library is intended to provide all the functionality that is required for date-time calculations.
- ObjectLab Kit – ObjectLab Kit came out of our frustration to have to re-do the same kind of code over and over each time we joined a new company and Bank. Most banks will require basic Date calculation, we did spot another open source project for this but their licence forbids most financial institution from using it. This one is released under the business-friendly Apache 2.0 license.
- JTemporal -JTemporal is a framework of components providing functionality for time related applications based on the foundations of Instants and Periods. Provides basic functionality handling the most common temporal aspects (for the moment instant, period, mediators managing temporal associations).
- TreeSched – TreeSched is a scheduling definition that is defined as hierachical tree of schedules, each providing a tighter constraint on the time frame of the schedule – from yearly events down to the millisecond. This allows great flexability in defining a schedule. TreeSched provides a schedule, not a scheduler.
- JTimePiece – An easy-to-use API for working with dates and times. Includes methods for computing difference between two date/times; support for time zones, leap year and daylight savings; methods for adding and subtracting to and from date/times and methods for easily retrieving individual parts of date/times.
- Zimbra – Zimbra is quite a large system however it has impressive calendaring capabilities that we shouldn’t easily dismiss.
- InfoGlue Calendar – The InfoGlue Calendar is a portlet-based calendar and event management system. Features includes multiple administrators per calendar, advanced search and handling of participants and multi-language support.
- Chandler Server – Chandler is an open source Note-to-Self Organizer designed for personal use and small-group collaboration. Chandler consists of a cross-platform, desktop application, sharing service and web application. The web application is built using Java technologies.
Please let me know what I’ve missed. If you’re looking for resource scheduling systems, see my this list.