JPF is the open source, LGPL licensed library that is intended to provide standard plug-in infrastructure to existing or new Java projects. It helps greatly improve modularity and extensibility of Java systems and decrease their support and maintenance cost.
The Framework implements the runtime engine that dynamically discovers and runs plug-ins. A plug-in is a structured component that describes itself to the Framework using a manifest file. The Framework maintains a registry of available plug-ins and the function they provide (via extension points and extensions). To simplify deployment and distribution, plug-in may be packaged as "single ZIP file" that well be un-packed transparently in runtime when needed.
The major changes are:
* Introduced UniqueIdentity interface in the registry API to mark all plug-in elements that may have unique identifier (plug-in descriptor, plug-in fragment, plug-in prerequisite, library, extension point and extension).
* Introduced special implementation of PathResolver that transparently makes shadow copy of plug-in before resolving it to the application. Among other things this helps to avoid locking of JAR files by application that prevents "hot updating" of plug-ins. For implementation details and configuration options see javadoc for org.java.plugin.standard.ShadingPathResolver class.
* Introduced "Single File Plug-in" Ant task to package plug-ins as ZIP files that may be executed later directly (part of JPF Tools).
* Introduced "Plug-in Info" Ant task to read plug-in ID and version from manifest file into project properties (part of JPF Tools).
* Introduced "JPF Boot" library to simplify running JPF based applications.
* Added Path and version info elements to jpf*.jar libraries manifests. Version number no longer included into JAR file name.
* Introduced utility class org.java.plugin.util.IoUtil to hold useful I/O, File and URL manipulations.
* Updated project documentation.
Visit project home page at http://jpf.sourceforge.net
for further details, documentation and tutorial.