Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[technology-pmc] Seeking exempt status JAI and ImageIO dependencies

The use of Java Advanced Imaging and Java Advanced Imaging ImageIO has been mentioned several times as dependency that may require special attention. This last week after conversations with Wayne and Sharon I think I understand how to proceed.  After reviewing the licenses under which these dependencies are published they do not meet the standards of open source, and I need to ask the Technology PMC for an exception.

About Java Runtime Extensions

The Java Runtime provides a plugin system for extension of the JRE. This facility is used for functionality considered "part of" Java. Well known examples include Java 3D, Java Advanced Imaging. and Java Advanced Imaging ImageIO.

The relationship between the components is as follows:

Java Runtime Environment (JRE)  <-- provided by Oracle under a Binary Code License Agreement
- JRE extension: Java Advanced Imaging (JAI) <-- provided by Sun under a Binary Code License Agreement and/or Java Research License 1.5
- JRE extension: Java Advanced Imaging Image IO (ImageIO) <-- provided by sun under a similar license / entitlement 

About JAI 1.1.3 (released 2006): This extension provides Java with a image processing engine. A processing chain of operations is defined, and then used to pull raster content into a file (or onto the screen). The approach allows Java to work efficiently with possibly massive initial inputs and is ideal for working with geospatial data.

The functional nature of a processing chain results in an internal data structure similar to the query employed by database. The actual execution of this query can be based on the source image format, making use of an impressive tile cache to smoothly load blocks of raster data into memory for processing without step by step direction from the programmer.

There is no corresponding replacement available for Java projects. There are a number of commercial and open source C++ projects offering similar functionality (such as OSSIM).

It is worth opining out that JAI offers native code on several platforms allowing the core engine to perform faster. In this sense it is very much a "in the spirit" of a JRE Extension like Java3D - operating as a front end for possibly native functionality. As an example of this in practice Apple provides an implementation of Java 3D and Java Advanced Imaging as part of the same download.

About ImageIO 1.1 (released 2006): ImageIO is much easier to explain. The project teaches Java Advanced Imaging additional file formats for encoding and decoding.

It is worth noting that this is distinct from CQ 7373 ImageIO-Ext - which is a related project teaching Java Advanced Imaging about geospatial file formats.

It is worthing that this request is distinct from CQ 6142 (and https://github.com/stain/jai-imageio-core) which represent a BSD fork of ImageIO. The BSD fork is achieved by removing the integration with JAI that we are seeking to exploit as part of this exemption.

Exemption Request

The argument for an exemption is as follows:

We consider the Java Advanced Imaging functionality as as part of Java Runtime Environment (i.e. part of the expected execution environment). By making use of these Java Extensions we are in position to make efficient use of the local machine (as illustrated by native implementations for windows, linux and and a Java implementation for mac osx provided by Apple).

We would like to use Java Advanced Imaging and ImageIO via exception policy allowing foundation projects to run on the Oracle Java Runtime Environment.

Note: Note these dependencies are provided to us under the same Binary Code License Agreement as the Java Virtual Machine.

Note: At the time this technology was adopted we had no indication that this functionality would not be folded into future releases of the JRE. While these projects have been placed on the http://java.net/ website, the their license does not qualify as open source for the purposes of the foundation.

Note: At the time this API was adopted by GeoTools we expected a similar experience to the Java Swing API (which is still included in the JRE).

The list of artefacts covered by this exemption request are as follows:

Java Advanced Imaging

jai_codec-1.1.3.jar
jai_core-1.1.3.jar
jai_imageio-1.1.jar
mlib_jai_util.dll - win32 specific
mlib_jai.dll - win32 specific

Java Advanced Imaging ImageIO

clibwrapper_jiio.jar
mlibwrapper_jai.jar
clib_jiio_sse2.dll - win32 specifc
clib_jiio_util.dll - win32 specific
clib_jiio.dll - win32 specific
libclib_jiio.so - linux x86 specific
libmlib_jai.so - linux x86 specific
libclib_jiio.so - linux x86_64 specific
libmlib_jai.so - linux x86_64 specific

These files are distributed in unmodified form.

References
http://www.oracle.com/technetwork/java/javase/tech/jai-142803.html 
http://java.net/projects/jai-core
http://java.net/projects/imageio 
- For the details on how to configure a JRE with these extensions the GeoTools Java Install instructions are recommended

-- 
Jody Garnett


Back to the top