Apache | POI |
POI 2.0 Vision DocumentPrefaceThis is the POI 2.0 cycle vision document. Although the vision has not changed and this document is certainly not out of date and the vision has not changed, the structure of the project has changed a bit. We're not going to change the vision document to reflect this (however proper that may be) because it would only involve deletion. There is no purpose in providing less information provided we give clarification. This document was created before the POI components for Apache Cocoon were accepted into the Cocoon project itself. It was also written before POI was accepted into Jakarta. So while the vision hasn't changed some of the components are actually now part of other projects. We'll still be working on them on the same timeline roughly (minus the overhead of coordination with other groups), but they are no longer technically part of the POI project itself. 1. Introduction1.1 Purpose of this documentThe purpose of this document is to collect, analyze and define high-level requirements, user needs, and features of the second release of the POI project software. The POI project currently consists of the following components: the HSSF Serializer, the HSSF library and the POIFS library.
By the completion of this release cycle the POI project will also include the HSSF Generator and the HWPF library.
1.2 Project OverviewThe first release of the POI project was an astounding success. This release seeks to build on that success by:
2. User Description2.1 User/Market DemographicsThere are a number of enthusiastic users of XML, UNIX and Java technology. Furthermore, the Microsoft solution for outputting Office Document formats often involves actually manipulating the software as an OLE Server. This method provides extremely low performance, extremely high overhead and is only capable of handing one document at a time.
2.2. User environmentThe users of this software shall be developers in a Java environment on any operating system, or power users who are capable of XML document generation/deployment. 2.3. Key User NeedsThe HSSF library currently requires a full object representation to be created before reading values. This results in very high memory utilization. We need to reduce this substantially for reading. It would be preferable to do this for writing, but it may not be possible due to the constraints imposed by the file format itself. Memory utilization during read is our top user complaint. The POIFS library currently requires a full object representation to be created before reading values. This results in very high memory utilization. We need to reduce this substantially for reading. The HSSF library currently ignores formula cells and identifies them as "UnknownRecord" at the lower level of the API. We must provide a way to read and write formulas. This is now the top requested feature. The HSSF library currently does not support charts. This is a key requirement of some users who wish to use HSSF in a reporting engine. The HSSF Serializer currently does not provide serialization for cell styling. User's will want stylish spreadsheets to result from their XML. There is currently no way to generate the XML from an XLS that is consistent with the format used by the HSSF Serializer. There should be a way to read and write the DOC file format using pure Java. 3. Project Overview3.1. Project PerspectiveThe produced code shall be licensed by the Apache License as used by the Cocoon 2 project (APL 1.1) and maintained on at http://poi.sourceforge.net and http://sourcefoge.net/projects/poi. It is our hope to at some point integrate with the various Apache projects (xml.apache.org and jakarta.apache.org), at which point we'd turn the copyright over to them. 3.2. Project Position StatementFor developers on a Java and/or XML environment this project will provide all the tools necessary for outputting XML data in the Microsoft Excel format. This project seeks to make the use of Microsoft Windows based servers unnecessary for file format considerations and to fully document the OLE 2 Compound Document format. The project aims not only to provide the tools for serializing XML to Excel and Word file formats and the tools for writing to those file formats from Java, but also to provide the tools for later projects to convert other OLE 2 Compound Document formats to pure Java APIs. 3.3. Summary of CapabilitiesHSSF Serializer for Apache Cocoon 2
3.4. Assumptions and Dependencies
4. Project FeaturesEnhancements to the POIFS API will include:
Enhancements to the HSSF API will include:
The HSSF Generator will include:
The HWPF API will include:
5. Other Product Requirements5.1. Applicable StandardsAll Java code will be 100% pure Java. 5.2. System RequirementsThe minimum system requirements for the POIFS API are:
The minimum system requirements for the the HSSF API are:
The minimum system requirements for the the HWPF API are:
The minimum system requirements for the HSSF Serializer are:
5.3. Performance RequirementsAll components must perform well enough to be practical for use in a webserver environment (especially the "killer trio": Cocoon2/Tomcat/Apache combo) 5.4. Environmental RequirementsThe software will run primarily in developer environments. We should make some allowances for not-highly-technical users to write XML documents for the HSSF Serializer. All other components will assume intermediate Java 2 knowledge. No XML knowledge will be required except for using the HSSF Serializer. As much documentation as is practical shall be required for all components as XML is relatively new, and the concepts introduced for writing spreadsheets and to POI filesystems will be brand new to Java and many Java developers. 6. Documentation Requirements6.1 POI FilesystemThe filesystem as read and written by POI shall be fully documented and explained so that the average Java developer can understand it. 6.2. POI APIThe POI API will be fully documented through Javadoc. A walkthrough of using the high level POI API shall be provided. No documentation outside of the Javadoc shall be provided for the low-level POI APIs. 6.3. HSSF File FormatThe HSSF File Format as implemented by the HSSF API will be fully documented. No documentation will be provided for features that are not supported by HSSF API that are supported by the Excel 97 File Format. Care will be taken not to infringe on any "legal stuff". Additionally, we are collaborating with the fine folks at OpenOffice.org on *free* documentation of the format. 6.4. HSSF APIThe HSSF API will be documented by javadoc. A walkthrough of using the high level HSSF API shall be provided. No documentation outside of the Javadoc shall be provided for the low level HSSF APIs. 6.5 HWPF APIThe HWPF API will be documented by javadoc. A walkthrough of using the high level HWPF API shall be provided. No documentation outside of the Javadoc shall be provided for the low level HWPF APIs. 6.6 HSSF SerializerThe HSSF Serializer will be documented by javadoc. 6.7 HSSF GeneratorThe HSSF Generator will be documented by javadoc. 6.8 HSSF Serializer Tag languageThe XML tag language along with function and usage shall be fully documented. Examples will be provided as well. 7. Terminology7.1 Filesystemfilesystem shall refer only to the POI formatted archive. 7.2 Filefile shall refer to the embedded data stream within a POI filesystem. This will be the actual embedded document. |