The following references describe the standard API (javax.script) which is implemented by BSF 3.x:
Apache BSF 3.x includes an implementation of JSR-223 (javax.script) and runs on Java 1.4 and Java 5.
(Java 6 includes javax.script as standard.)
Note that although the implementation follows the JSR-223 specification, it has not been tested against
the JSR-223 TCK.
Apache BSF 3.x can therefore not strictly be described as a compatible implementation of JSR-223,
however it is believed to be complete.
Apache BSF 3.x also includes some utility classes for working with XML.
These can be used with any used with any implementation of the javax.scripting package, including the one in Java 6+.
There is also a command-line utility which can be used to run scripts in any language engine which supports JSR-223.
Note that Apache BSF does not contain any language engines; these have to be downloaded separately.
Version 3.0 was shipped with a set of engine factories, however this is no longer present in later versions of BSF.
This is because many languages are now provided with their own factories.
Also, having all the factories in a single jar can cause problems at run-time.
If other jars contain factories that implement a different version of the same language
it may be difficult or impossible to choose which version is loaded.
If the language implementation is not present, the factory class may fail to load;
with some implementations of javax.script (e.g. Sun Java 6) this may prevent any factories from loading.
An example language which includes the necessary engine factory is:
Apache Jexl 2.0 (requires Java 5).
Some other scripting languages also come with their own factories already included.
For example Groovy and JRuby.
Many other languages are supported by the 3rd party engine factories available at
https://scripting.dev.java.net/.
This provides a combined archive from which the appropriate jar for the language can be extracted.