| Apache BSF 3.1 Release Notes |
| ---------------------------- |
| |
| Apache BSF 3 is an open-source implementation of JSR-223, |
| "Scripting for the Java Platform". |
| |
| *----------------------------------------------------------------------* |
| * BSF3 was developed according to the JSR-223 specs, but has not yet * |
| * been tested via the JSR-223 TCK. BSF can therefore not be considered * |
| * a compatible implementation of JSR-223. * |
| *----------------------------------------------------------------------* |
| |
| However, the implementation is believed to be complete. |
| |
| * BSF-3.x is not compatible with BSF-2.4 - the API is completely different. |
| * BSF-3.x can be deployed and used on Java 1.4+ - it does not require Java 1.6 |
| |
| What the jars contain |
| --------------------- |
| bsf-api.jar - javax.script package which implements JSR-223 for Java 1.4+ |
| bsf-utils.jar - additional utilities for use with all JSR-223 implementations. |
| bsf-all.jar - both the above |
| |
| IMPORTANT |
| ========= |
| Note that BSF 3.1 does not contain bsf-engines.jar, which was a repackaging |
| of the JSR-223 factories from https://scripting.dev.java.net/. |
| |
| This is because: |
| - the jar contained all the engine factories as a single bundle. It was not |
| possible to select individual factories, and this could lead to clashes with |
| other factories on the classpath. |
| - the jar did not contain any implementations, so it was still necessary to download |
| the engine. |
| Many engines contain their own factories now; for those that don't the factory can |
| still be downloaded from https://scripting.dev.java.net/. |
| |
| Incomplete package |
| ------------------ |
| The org.apache.bsf.utils.http package in bsf-utils.jar contains several classes. |
| These are not complete, and should not be relied on. |
| They are not needed in order to use the javax.script API. |
| |
| Changes from previous releases |
| ------------------------------ |
| |
| This 3.1 release is a maintenance release update to fix a few bugs. |
| |
| Compared with 3.0, the 3.1 release fixes the following: |
| * BSF-30 ScriptEngineManager no longer catches ThreadDeath |
| * BSF-29 ScriptException constructed via chained constructor |
| ScriptException(Exception) always returns String "null" for getMessage() |
| * Prevent Maven deploy from uploading test modules |
| |
| There are also a few improvements: |
| |
| * Test suite changes: renamed duplicate classes, better support for testing on Java 1.6/1.7 |
| * Added java-1.4/5/6/7 Maven profiles to allow cross-compilation and testing |
| * removed duplicated and unnecessary test modules |
| |
| ---- |
| |
| Compared with 3.0-beta3, the 3.0 release fixes the following: |
| * updated test application. |
| * BSF-35 Wrong parameter type for [Simple]Bindings.put - key must be a String, not an Object |
| * Test run detects Java version and skips tests that don't apply to Java 1.4 |
| * Added JEXL test. |
| * Tidied build process to delete temporary directories |
| |
| The classes in the javax.script package have been overhauled to align the API, Javadoc and |
| the behaviour with the JSR-223 spec, and several unit tests have been added. |
| |
| Some of these changes may cause problems for programs that have been written to the BSF 3.0 |
| Javadoc rather than the JSR-223 spec. |
| |
| javax.script class changes |
| ========================== |
| AbstractScriptEngine - Javadoc only |
| Bindings - Javadoc only |
| Compilable - Javadoc only |
| CompiledScript - Javadoc only |
| Invocable - Javadoc only |
| ScriptContext - Javadoc only |
| ScriptEngine - Javadoc only |
| ScriptEngineFactory - Javadoc only |
| |
| ScriptEngineManager - Javadoc, also protected fields made private: |
| - engineSpis |
| - nameAssociations |
| - extensionAssocitions |
| - mimeTypeAssociations |
| - globalscope |
| - now uses javax.imageio.spi.ServiceRegistry.lookupProviders() |
| rather than the Sun-specfic method sun.misc.Service.providers() |
| - put() method checks that key is non-null (NullPointerException) |
| and non-empty (IllegalArgumentException) |
| - setBindings() throws IllegalArgumentException if the parameter is non-null |
| - the registerXXX() methods throw NullPointerException if any of their parameters is null |
| - the getEngineByXXX() methods throw NullPointerException if their parameter is null |
| |
| ScriptException |
| - all fields made private and final |
| |
| SimpleBindings |
| - Javadoc |
| - protected field "map" made private & final |
| - methods now check keys to ensure that they are non-null, non-empty strings |
| |
| SimpleScriptContext |
| - globalScope field now defaults to null |
| - reader, writer and errorWriter fields are now protected (rather than private) |
| This is required by JSR-223 |
| - name parameters are now checked to ensure that they are non-null, non-empty strings |
| - getBindings() throws IllegalArgumentException if the scope is invalid |
| - getScopes() now returns an unmodifiable List |