| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <html> |
| <head> |
| <!-- |
| Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. |
| DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| |
| This code is free software; you can redistribute it and/or modify it |
| under the terms of the GNU General Public License version 2 only, as |
| published by the Free Software Foundation. Sun designates this |
| particular file as subject to the "Classpath" exception as provided |
| by Sun in the LICENSE file that accompanied this code. |
| |
| This code is distributed in the hope that it will be useful, but WITHOUT |
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| version 2 for more details (a copy is included in the LICENSE file that |
| accompanied this code). |
| |
| You should have received a copy of the GNU General Public License version |
| 2 along with this work; if not, write to the Free Software Foundation, |
| Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| |
| Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
| CA 95054 USA or visit www.sun.com if you need additional information or |
| have any questions. |
| --> |
| |
| </head> |
| <body bgcolor="white"> |
| <p>The scripting API consists of interfaces and classes that define |
| Java <font size=1><sup>TM</sup></font> Scripting Engines and provides |
| a framework for their use in Java applications. This API is intended |
| for use by application programmers who wish to execute programs |
| written in scripting languages in their Java applications. The |
| scripting language programs are usually provided by the end-users of |
| the applications. |
| </p> |
| <p>The main areas of functionality of <code>javax.script</code> |
| package include |
| </p> |
| <ol> |
| <li><p><b>Script execution</b>: Scripts |
| are streams of characters used as sources for programs executed by |
| script engines. Script execution uses |
| {@link javax.script.ScriptEngine#eval eval} methods of |
| {@link javax.script.ScriptEngine ScriptEngine} and methods of the |
| {@link javax.script.Invocable Invocable} interface. |
| </p> |
| <li><p><b>Binding</b>: This facility |
| allows Java objects to be exposed to script programs as named |
| variables. {@link javax.script.Bindings Bindings} and |
| {@link javax.script.ScriptContext ScriptContext} |
| classes are used for this purpose. |
| </p> |
| <li><p><b>Compilation</b>: This |
| functionality allows the intermediate code generated by the |
| front-end of a script engine to be stored and executed repeatedly. |
| This benefits applications that execute the same script multiple |
| times. These applications can gain efficiency since the engines' |
| front-ends only need to execute once per script rather than once per |
| script execution. Note that this functionality is optional and |
| script engines may choose not to implement it. Callers need to check |
| for availability of the {@link javax.script.Compilable Compilable} |
| interface using an <I>instanceof</I> check. |
| </p> |
| <li><p><b>Invocation</b>: This |
| functionality allows the reuse of intermediate code generated by a |
| script engine's front-end. Whereas Compilation allows entire scripts |
| represented by intermediate code to be re-executed, Invocation |
| functionality allows individual procedures/methods in the scripts to |
| be re-executed. As in the case with compilation, not all script |
| engines are required to provide this facility. Caller has to check |
| for {@link javax.script.Invocable Invocable} availability. |
| </p> |
| <li><p><b>Script engine discovery and Metadata</b>: Applications |
| written to the Scripting API might have specific requirements on |
| script engines. Some may require a specific scripting language |
| and/or version while others may require a specific implementation |
| engine and/or version. Script engines are packaged in a specified |
| way so that engines can be discovered at runtime and queried for |
| attributes. The Engine discovery mechanism is based on the Service |
| discovery mechanism described in the <b>Jar File Specification</b>. |
| Script engine implementing classes are packaged in jar files that |
| include a text resource named |
| <b>META-INF/services/javax.script.ScriptEngineFactory</b>. This |
| resource must include a line for each |
| {@link javax.script.ScriptEngineFactory ScriptEngineFactory} |
| that is packaged in the jar file. |
| {@link javax.script.ScriptEngineManager ScriptEngineManager} |
| includes |
| {@link javax.script.ScriptEngineManager#getEngineFactories getEngineFactories} method to get all |
| {@link javax.script.ScriptEngineFactory ScriptEngineFactory} instances |
| discovered using this mechanism. <code>ScriptEngineFactory</code> has |
| methods to query attributes about script engine. |
| </p> |
| </ol> |
| |
| @since 1.6 |
| |
| </body> |
| </html> |