A registry for service provider instances for Image I/O service types.
Service providers are stored in one or more categories, each of which is defined by a class or interface (described by a
Class object) that all of its members must implement.
The set of categories supported by this class is limited to the following standard Image I/O service types:
An attempt to load a provider that is not a subtype of one of the above types will result in
For the general mechanism to load service providers, see
ServiceLoader, which is the underlying standard mechanism used by this class.
Only a single instance of a given leaf class (that is, the actual class returned by
getClass(), as opposed to any inherited classes or interfaces) may be registered. That is, suppose that the
com.mycompany.mypkg.GreenImageReaderProvider class is a subclass of
javax.imageio.spi.ImageReaderSpi. If a
GreenImageReaderProvider instance is registered, it will be stored in the category defined by the
ImageReaderSpi class. If a new instance of
GreenImageReaderProvider is registered, it will replace the previous instance. In practice, service provider objects are usually singletons so this behavior is appropriate.
The service provider classes should be lightweight and quick to load. Implementations of these interfaces should avoid complex dependencies on other classes and on native code. The usual pattern for more complex services is to register a lightweight proxy for the heavyweight service.
An application may customize the contents of a registry as it sees fit, so long as it has the appropriate runtime permission.
For information on how to create and deploy service providers, refer to the documentation on