JSRs: Java Specification Requests
JSR 15: Image I/O Framework Specification
Section 1: Identification
John Zimmerman Computer Systems Phil Race Java Software
Section 2: Request
This JSR proposes to enhance Java Advanced Imaging to support the core Java 2 platform in the manipulation of digital images in a variety of file and compression formats.
An extensible framework specification will be developed as a part of Java Advanced Imaging, allowing Java 2 platform developers access to essentially arbitrary sampled image formats, including compressed or otherwise encoded formats. The specification will define classes and codecs to allow the reading and writing of common image formats, including JPEG, XBM, PNG and TIFF, among others.
The image I/O portion of Java Advanced Imaging will be developed and packaged so that it is usable by Java 2 developers without requiring them to use the entirety of Java Advanced Imaging.
The Java Advanced Imaging API has supported image file I/O throughout its development; this JSR describes the process whereby the Java Advanced Imaging API will be enhanced to support the Java 2 platform in general.
The needs addressedApplications intended for end-user desktop environments are increasingly graphically rich. Such applications could make good use of the ability to load and save digital images. Presently the core Java 2 platform provides only the ability to recognize JPEG, XBM, and GIF image formats, and has no facilities to save images.
The framework discussed here will facilitate general Java 2 based applications to easily read in or save out images. Furthermore, provision will be made to allow sophisticated control of image encoding and decoding in applications which require this flexibility.
It will allow easy access to a wide range of image formats via classes that will also allow specialized applications to access more advanced features of the various image formats. The framework will be extensible, so that classes capable of handling new image formats can be developed by application programmers.
It will treat various methods of image storage in as identical a manner as possible, making the actual location of image data (local or networked) transparent to the application program.
This framework will interoperate effectively with current image processing capabilities in the Java 2 platform.
The image processing (IP) and IIO portions of the Java Advanced Imaging specification and implementation will be separated both conceptually and physically. The intent is that the IIO and IP portions can be used together or separately. This will be accomplished by making the IIO and IP portions of Java Advanced Imaging separate packages and jar files, either of which can be downloaded and used by developers with the general Java 2 platform, Java Advanced Imaging applications, or both.
Target PlatformThis extension will target the standard Java 2 desktop platform.
Package namingThe image processing portion of Java Advanced Imaging is proposed to remain javax.media.jai.*; the IIO package is proposed to exist in the seperate package javax.media.imageio.*
Platform DependenciesThere are no platform dependencies in this proposed API.
Native code is not in principle necessary. The reference implementation will contain pure Java versions of all codecs. Native code for some platforms may also be supplied for performance reasons.
Security, internationalization or localization implicationsThis extension will allow the application to read and write both local and remote files, subject to the Java security model.
Pure Java implementations of this extension will be downloadable and runnable by applets. Native code accelerated versions must be specifically downloaded and installed by the user to realize the advantages of native code acceleration.
Implementations of some parts of the specification may take time. Other parts may be helped along by prototyping work already carried out that will be contributed to the Expert Group for consideration should this project be approved.
Effect on existing specifications
Section 3: Contributions
Information about Java Advanced Imaging is available at the JDC web site and at http://java.sun.com/products/java-media/jai/index.html