码迷,mamicode.com
首页 > 编程语言 > 详细

java 执行JavaScript 以及容器话的问题

时间:2017-08-05 14:14:32      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:引擎   shanghai   linu   9.png   javascrip   localtime   mat   man   containe   

1. 可选方案
 
  a. jdk 6 开始内置的Rhino 引擎
  b. jdk8 替换的nashorn (性能高,对于ECMA 支持更好)
  c. java 版的nodejs vertx.io
 
2. 实践操作
public static void main(String[] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");
        try {
            int value=2;
            SimpleBindings bind=new SimpleBindings();
            SimpleBindings bind2=new SimpleBindings();
            SimpleBindings bind3=new SimpleBindings();
            bind.put("点数", value);
            bind2.put("a", value);
            bind2.put("b", value);
            bind3.put("a1", value+1);
            bind3.put("b1", value+2);
             System.out.println(engine.eval("点数<50?50:Math.ceil(56/50)*50",bind));
            System.out.println(engine.eval("demosum=function(a,b){return a+b}; demosum(a,b);",bind2));    // 定义方法,并调用支持参数绑定
            System.out.println(engine.eval("(function(a1,b1){function demosub(a,b){ return a+b;}return demosub(a1,b1)})(a1,b1)",bind3));    // 使用js 立即执行函数
          } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
 
3. docker 容器处理
 
 docker 容器实践有一个原则就是容器的镜像要尽可能的小
一般大家会选择使用 alpine linux 发行版本
对于Dockerfile 如下:
FROM frolvlad/alpine-oraclejdk8:full
VOLUME /tmp
ADD demo.class demo.class
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","app"]
 
注意镜像的tag 选择使用 full 
执行结果
技术分享
 



java 执行JavaScript 以及容器话的问题

标签:引擎   shanghai   linu   9.png   javascrip   localtime   mat   man   containe   

原文地址:http://www.cnblogs.com/rongfengliang/p/7290013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!