美文网首页
【Java基础】脚本引擎

【Java基础】脚本引擎

作者: 灰色孤星 | 来源:发表于2018-10-22 12:27 被阅读0次

源代码:https://gitee.com/AgentXiao/reflection
脚本引擎要点:
1、什么是脚本引擎
2、获得脚本引擎对象
3、执行脚本语句
4、执行js文件

一、脚本引擎

JAVA脚本引擎是从JDK6.0之后添加的新功能。
脚本引擎介绍:

  • 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在 Java 平台上调用各种脚本语言的目的。
  • Java 脚本 API 是连通 Java 平台和脚本语言的桥梁。
  • 可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。

二、实现

/**
 * @ClassName Demo01
 * @Description 测试脚本引擎执行js代码
 * @Author xwd
 * @Date 2018/10/22 11:12
 */
public class Demo01 {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException, FileNotFoundException {
        //获得脚本引擎对象
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("javascript");

        //定义变量,存储到引擎上下文
        engine.put("msg","xwd is a good man");
        String str = "var user = {name:'xwd',age:18,schools:['清华大学','华南农业大学']};";
        str += "print(user.name);";

        //执行脚本
        engine.eval(str);
        engine.eval("msg='lsm is beautiful!'");
        System.out.println(engine.get("msg"));

        //定义js函数
        engine.eval("function add(a,b){var sum = a + b;return sum;}");
        //取得调用接口
        Invocable invocable = (Invocable) engine;
        //执行js函数
        Object o = invocable.invokeFunction("add", new Object[]{13, 22});
        System.out.println(o);

        //导入其他的java包,使用其他包中的java类
//        String code = "importPackage(java.util);var list=Arrays.asList([\"xwd\",\"lsm\",\"bxd\"]);";
//        engine.eval(code);
//
//        List<String> list = (List<String>)engine.get("list");
//        for(String l:list){
//            System.out.println(l);
//        }

        //执行一个js文件
        URL resource = Demo01.class.getClassLoader().getResource("pri/xiaowd/engine/test.js");
        engine.eval(new FileReader(resource.getPath()));
    }
}
控制台输出

相关文章

  • 【Java基础】脚本引擎

    源代码:https://gitee.com/AgentXiao/reflection脚本引擎要点:1、什么是脚本引...

  • Java 动态特性三:脚本引擎

    java脚本引擎介绍: 使得java应用程序可以通过一定的接口与各种脚本引擎交互,从而达到在java平台上调用各种...

  • 十六 Gremlin Core Notes

    GremlinScriptEngineManager JSR223,是java 的脚本引擎,gremlin 使用g...

  • 暑假学习打卡4

    JSP:在原有html的基础+java脚本+jsp标签,动态资源 jsp九个内置对象 java脚本:<%........

  • 脚本引擎执行js代码

    Java脚本API为开发者提供如下功能:-获取脚本程序输入,通过脚本引擎运行脚本并返回结果,这是最核心的接口。注意...

  • Java基础

    Java基础 JDK、JRE、JVM JVM java虚拟机,运行java程序的程序,包含类加载器、内存、执行引擎...

  • cocos creator 引擎是如何处理脚本的

    引擎如何处理js脚本 举例一个js脚本来剖析到底引擎都会我们编写的脚本做了什么工作脚本源码为: 引擎在run过程中...

  • Java基础入门

    Java基础入门 1.eclipse使用 2.引用游戏引擎 添加游戏引擎的包:项目-src下添加jar-右键添加游...

  • PHP生命周期与结构体系

    PHP作为开源脚本语言,具有C、Perl、Java等编程语言的特性,由于引入了中间解释层(Zend引擎),所以PH...

  • 深入理解JVM - Class类文件的结构

    Class文件是Java虚拟机执行引擎的数据入口,也是Java技术体系的基础支柱之一。 Class文件本质 Cla...

网友评论

      本文标题:【Java基础】脚本引擎

      本文链接:https://www.haomeiwen.com/subject/pdgwzftx.html