<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FScriptEngines</id>
		<title>Java Tutorial/Development/ScriptEngines - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FScriptEngines"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Development/ScriptEngines&amp;action=history"/>
		<updated>2026-04-21T22:51:43Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Development/ScriptEngines&amp;diff=3727&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Development/ScriptEngines&amp;diff=3727&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Development/ScriptEngines&amp;diff=3728&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Development/ScriptEngines&amp;diff=3728&amp;oldid=prev"/>
				<updated>2010-05-31T15:30:34Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Bindings And Scopes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.script.Bindings;&lt;br /&gt;
import javax.script.ScriptContext;&lt;br /&gt;
import javax.script.ScriptEngine;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
import javax.script.ScriptException;&lt;br /&gt;
public class GetToKnowBindingsAndScopes {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    manager.put(&amp;quot;global&amp;quot;, &amp;quot;global bindings&amp;quot;);&lt;br /&gt;
    dumpBindings(manager.getBindings());&lt;br /&gt;
    ScriptEngine engine = manager.getEngineByExtension(&amp;quot;js&amp;quot;);&lt;br /&gt;
    engine.put(&amp;quot;engine&amp;quot;, &amp;quot;engine bindings&amp;quot;);&lt;br /&gt;
    dumpBindings(engine.getBindings(ScriptContext.GLOBAL_SCOPE));&lt;br /&gt;
    dumpBindings(engine.getBindings(ScriptContext.ENGINE_SCOPE));&lt;br /&gt;
    try {&lt;br /&gt;
      Bindings bindings = engine.createBindings();&lt;br /&gt;
      bindings.put(&amp;quot;engine&amp;quot;, &amp;quot;overridden engine bindings&amp;quot;);&lt;br /&gt;
      bindings.put(&amp;quot;app&amp;quot;, new GetToKnowBindingsAndScopes());&lt;br /&gt;
      bindings.put(&amp;quot;bindings&amp;quot;, bindings);&lt;br /&gt;
      engine.eval(&amp;quot;app.dumpBindings (bindings);&amp;quot;, bindings);&lt;br /&gt;
    } catch (ScriptException se) {&lt;br /&gt;
      System.err.println(se.getMessage());&lt;br /&gt;
    }&lt;br /&gt;
    ScriptEngine engine2 = manager.getEngineByExtension(&amp;quot;js&amp;quot;);&lt;br /&gt;
    engine2.put(&amp;quot;engine2&amp;quot;, &amp;quot;engine2 bindings&amp;quot;);&lt;br /&gt;
    dumpBindings(engine2.getBindings(ScriptContext.GLOBAL_SCOPE));&lt;br /&gt;
    dumpBindings(engine2.getBindings(ScriptContext.ENGINE_SCOPE));&lt;br /&gt;
    dumpBindings(engine.getBindings(ScriptContext.ENGINE_SCOPE));&lt;br /&gt;
  }&lt;br /&gt;
  public static void dumpBindings(Bindings bindings) {&lt;br /&gt;
    if (bindings == null)&lt;br /&gt;
      System.out.println(&amp;quot;  No bindings&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      for (String key : bindings.keySet())&lt;br /&gt;
        System.out.println(&amp;quot;  &amp;quot; + key + &amp;quot;: &amp;quot; + bindings.get(key));&lt;br /&gt;
    System.out.println();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Enumerate ScriptEngines ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.script.ScriptEngineFactory;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
public class EnumerateScriptEngines {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    List&amp;lt;ScriptEngineFactory&amp;gt; factories = manager.getEngineFactories();&lt;br /&gt;
    for (ScriptEngineFactory factory : factories) {&lt;br /&gt;
      System.out.println(&amp;quot;Engine name (full): &amp;quot; + factory.getEngineName());&lt;br /&gt;
      System.out.println(&amp;quot;Engine version: &amp;quot; + factory.getEngineVersion());&lt;br /&gt;
      System.out.println(&amp;quot;Supported extensions:&amp;quot;);&lt;br /&gt;
      List&amp;lt;String&amp;gt; extensions = factory.getExtensions();&lt;br /&gt;
      for (String extension : extensions)&lt;br /&gt;
        System.out.println(&amp;quot;  &amp;quot; + extension);&lt;br /&gt;
      System.out.println(&amp;quot;Language name: &amp;quot; + factory.getLanguageName());&lt;br /&gt;
      System.out.println(&amp;quot;Language version: &amp;quot; + factory.getLanguageVersion());&lt;br /&gt;
      System.out.println(&amp;quot;Supported MIME types:&amp;quot;);&lt;br /&gt;
      List&amp;lt;String&amp;gt; mimetypes = factory.getMimeTypes();&lt;br /&gt;
      for (String mimetype : mimetypes)&lt;br /&gt;
        System.out.println(&amp;quot;  &amp;quot; + mimetype);&lt;br /&gt;
      System.out.println(&amp;quot;Supported short names:&amp;quot;);&lt;br /&gt;
      List&amp;lt;String&amp;gt; shortnames = factory.getNames();&lt;br /&gt;
      for (String shortname : shortnames)&lt;br /&gt;
        System.out.println(&amp;quot;  &amp;quot; + shortname);&lt;br /&gt;
      System.out.println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Function Evaluator ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.FileReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.script.ScriptEngine;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
import javax.script.ScriptException;&lt;br /&gt;
public class FuncEvaluator {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    if (args.length != 2) {&lt;br /&gt;
      System.err&lt;br /&gt;
          .println(&amp;quot;usage: java FuncEvaluator scriptfile &amp;quot; + &amp;quot;script-exp&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    ScriptEngine engine = manager.getEngineByName(&amp;quot;rhino&amp;quot;);&lt;br /&gt;
    try {&lt;br /&gt;
      System.out.println(engine.eval(new FileReader(args[0])));&lt;br /&gt;
      System.out.println(engine.eval(args[1]));&lt;br /&gt;
    } catch (ScriptException se) {&lt;br /&gt;
      System.err.println(se.getMessage());&lt;br /&gt;
    } catch (IOException ioe) {&lt;br /&gt;
      System.err.println(ioe.getMessage());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//////////////&lt;br /&gt;
function combinations (n, r)&lt;br /&gt;
{&lt;br /&gt;
   return fact (n)/(fact (r)*fact (n-r))&lt;br /&gt;
}&lt;br /&gt;
function fact (n)&lt;br /&gt;
{&lt;br /&gt;
   if (n == 0)&lt;br /&gt;
       return 1;&lt;br /&gt;
   else&lt;br /&gt;
       return n*fact (n-1);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Obtain ScriptEngine ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.script.ScriptEngine;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
public class ObtainScriptEngine {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    ScriptEngine engine1 = manager.getEngineByExtension(&amp;quot;js&amp;quot;);&lt;br /&gt;
    System.out.println(engine1);&lt;br /&gt;
    ScriptEngine engine2 = manager&lt;br /&gt;
        .getEngineByMimeType(&amp;quot;application/javascript&amp;quot;);&lt;br /&gt;
    System.out.println(engine2);&lt;br /&gt;
    ScriptEngine engine3 = manager.getEngineByName(&amp;quot;rhino&amp;quot;);&lt;br /&gt;
    System.out.println(engine3);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Pass value and get return value from script ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.script.ScriptEngine;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
import javax.script.ScriptException;&lt;br /&gt;
public class MonthlyPayment {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    ScriptEngine engine = manager.getEngineByExtension(&amp;quot;js&amp;quot;);&lt;br /&gt;
    String calcMonthlyPaymentScript = &amp;quot;intrate = intrate/1200.0;&amp;quot;&lt;br /&gt;
        + &amp;quot;payment = principal*intrate*(Math.pow (1+intrate, months)/&amp;quot;&lt;br /&gt;
        + &amp;quot;                            (Math.pow (1+intrate,months)-1));&amp;quot;;&lt;br /&gt;
    engine.put(&amp;quot;principal&amp;quot;, 20000.0);&lt;br /&gt;
    System.out.println(&amp;quot;Principal = &amp;quot; + engine.get(&amp;quot;principal&amp;quot;));&lt;br /&gt;
    engine.put(&amp;quot;intrate&amp;quot;, 6.0);&lt;br /&gt;
    System.out.println(&amp;quot;Interest Rate = &amp;quot; + engine.get(&amp;quot;intrate&amp;quot;) + &amp;quot;%&amp;quot;);&lt;br /&gt;
    engine.put(&amp;quot;months&amp;quot;, 360);&lt;br /&gt;
    System.out.println(&amp;quot;Months = &amp;quot; + engine.get(&amp;quot;months&amp;quot;));&lt;br /&gt;
    engine.eval(calcMonthlyPaymentScript);&lt;br /&gt;
    System.out.printf(&amp;quot;Monthly Payment = %.2f\n&amp;quot;, engine.get(&amp;quot;payment&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Temperature Conversion with script ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.script.Invocable;&lt;br /&gt;
import javax.script.ScriptEngine;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
import javax.script.ScriptException;&lt;br /&gt;
public class TemperatureConversion {&lt;br /&gt;
  public static void main(String[] args) throws ScriptException {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    ScriptEngine engine = manager.getEngineByName(&amp;quot;rhino&amp;quot;);&lt;br /&gt;
    String script = &amp;quot;function c2f(degrees){return degrees*9.0/5.0+32;}&amp;quot;;&lt;br /&gt;
        + &amp;quot;function f2c(degrees){return (degrees-32)*5.0/9.0;}&amp;quot; + &amp;quot; &amp;quot;&lt;br /&gt;
        + &amp;quot;function convertTemperature (degrees, toCelsius){&amp;quot;&lt;br /&gt;
        + &amp;quot;   if (toCelsius)&amp;quot; + &amp;quot;return f2c (degrees);elsereturn c2f (degrees);}&amp;quot;;&lt;br /&gt;
    engine.eval(script);&lt;br /&gt;
    Invocable invocable = (Invocable) engine;&lt;br /&gt;
    TempConversion tc = invocable.getInterface(TempConversion.class);&lt;br /&gt;
    if (tc == null)&lt;br /&gt;
      System.err.println(&amp;quot;Unable to obtain TempConversion interface&amp;quot;);&lt;br /&gt;
    else {&lt;br /&gt;
      System.out.println(&amp;quot;212 degrees Fahrenheit = &amp;quot;&lt;br /&gt;
          + tc.convertTemperature(212.0, true) + &amp;quot; degrees Celsius&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface TempConversion {&lt;br /&gt;
  double convertTemperature(double degrees, boolean toCelsius);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Test Compilation Speed ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.script.rupilable;&lt;br /&gt;
import javax.script.rupiledScript;&lt;br /&gt;
import javax.script.ScriptEngine;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
public class TestCompilationSpeed {&lt;br /&gt;
  final static int MAX_ITERATIONS = 10000;&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    ScriptEngine engine = manager.getEngineByName(&amp;quot;JavaScript&amp;quot;);&lt;br /&gt;
    String fact = &amp;quot;function fact (n){if (n == 0)return 1; else return n*fact (n-1);};&amp;quot;;&lt;br /&gt;
    long time = System.currentTimeMillis();&lt;br /&gt;
    for (int i = 0; i &amp;lt; MAX_ITERATIONS; i++)&lt;br /&gt;
      engine.eval(fact);&lt;br /&gt;
    System.out.println(System.currentTimeMillis() - time);&lt;br /&gt;
    Compilable compilable = null;&lt;br /&gt;
    if (engine instanceof Compilable) {&lt;br /&gt;
      compilable = (Compilable) engine;&lt;br /&gt;
      CompiledScript script = compilable.rupile(fact);&lt;br /&gt;
      time = System.currentTimeMillis();&lt;br /&gt;
      for (int i = 0; i &amp;lt; MAX_ITERATIONS; i++)&lt;br /&gt;
        script.eval();&lt;br /&gt;
      System.out.println(System.currentTimeMillis() - time);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Threading Behavior ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.script.ScriptEngineFactory;&lt;br /&gt;
import javax.script.ScriptEngineManager;&lt;br /&gt;
public class ThreadingBehavior {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;
    List&amp;lt;ScriptEngineFactory&amp;gt; factories = manager.getEngineFactories();&lt;br /&gt;
    for (ScriptEngineFactory factory : factories)&lt;br /&gt;
      System.out.println(&amp;quot;Threading behavior: &amp;quot;&lt;br /&gt;
          + factory.getParameter(&amp;quot;THREADING&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>