Java教程 专题
专题目录
您的位置:java > Java教程专题 > Java 脚本引擎
Java 脚本引擎
作者:--    发布时间:2019-11-20

java脚本教程 - java脚本引擎


java scripting api有许多类和接口。它们在javax.script包中。

scriptengine 接口是其实例执行以脚本语言编写的脚本的接口

scriptenginefactory执行两个任务:

  • 创建脚本引擎的实例。
  • 提供有关脚本引擎的信息,如引擎名称,版本,语言等。

abstractscriptengine类是一个抽象类,并为scriptengine接口提供了部分实现。

scriptenginemanager类发现和实例化脚本引擎。

可用的引擎

以下代码显示如何列出所有可用的脚本引擎。

import java.util.list;

import javax.script.scriptenginefactory;
import javax.script.scriptenginemanager;

public class main {
  public static void main(string[] args) {
    scriptenginemanager manager = new scriptenginemanager();

    // get the list of all available engines
    list<scriptenginefactory> list = manager.getenginefactories();

    // print the details of each engine
    for (scriptenginefactory f : list) {
      system.out.println("engine name:" + f.getenginename());
      system.out.println("engine version:" + f.getengineversion());
      system.out.println("language name:" + f.getlanguagename());
      system.out.println("language version:" + f.getlanguageversion());
      system.out.println("engine short names:" + f.getnames());
      system.out.println("mime types:" + f.getmimetypes());
      system.out.println("===");
    }
  }
}

上面的代码生成以下结果。

例子

以下代码显示了如何使用javascript,groovy,jython和jruby在标准输出上打印消息。

如果脚本引擎不可用,程序会向用户提示错误消息。

import javax.script.scriptengine;
import javax.script.scriptenginemanager;
import javax.script.scriptexception;

public class main {
  public static void main(string[] args) {
    // get the script engine manager
    scriptenginemanager manager = new scriptenginemanager();

    // try executing scripts in nashorn, groovy, jython, and jruby
    execute(manager, "javascript", "print("hello javascript")");
    execute(manager, "groovy", "println("hello groovy")");
    execute(manager, "jython", "print "hello jython"");
    execute(manager, "jruby", "puts("hello jruby")");
  }

  public static void execute(scriptenginemanager manager, string enginename,
      string script) {

    scriptengine engine = manager.getenginebyname(enginename);
    if (engine == null) {
      system.out.println(enginename + " is not available.");
      return;
    }

    try {
      engine.eval(script);
    } catch (scriptexception e) {
      e.printstacktrace();
    }
  }
}

上面的代码生成以下结果。

找出语法

要获得用于在标准输出上打印消息的语法,请使用scriptenginefactory类中的方法getoutputstatement(string todisplay)。

以下代码段显示了如何获取nashorn的语法。

import javax.script.scriptengine;
import javax.script.scriptenginefactory;
import javax.script.scriptenginemanager;
import javax.script.scriptexception;

public class main {
  public static void main(string[] args) {
        // get the script engine factory for nashorn
        scriptenginemanager manager = new scriptenginemanager();
        scriptengine engine = manager.getenginebyname("javascript");
        scriptenginefactory factory = engine.getfactory();

        // get the script
        string script = factory.getoutputstatement("\"w3cschool\"");
        system.out.println("syntax: " + script);

        // evaluate the script
        try {
      engine.eval(script);
    } catch (scriptexception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }
  }
}

上面的代码生成以下结果。

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册