iCal4j is a Java library used to read and write iCalendar data streams as defined in RFC2445. The iCalendar standard provides a common data format used to store information about calendar-specific data such as events, appointments, to-do lists, etc. All of the popular calendaring tools, such as Lotus Notes, Outlook and Apple's iCal also support the iCalendar standard. Providing both a parser and an object model, iCal4j allows you to either modify existing iCalendar data or create new data models. Validation is also provided to ensure the data maintains a state consistent with the specification.