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

摘要:
1.选项a.jdk6启动内置的Rhino引擎b.jdk8以替换nashorn(高性能,更好地支持ECMA)c.java版本nodejsvertx.io2。实用操作publicstaticvoidmain(String[]args){ScriptEngineManager=newScriptEngineManager();ScriptEngine=manager.ge
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 以及容器化的问题第1张
 



免责声明:文章转载自《java 执行JavaScript 以及容器化的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇软件建模中UML的九种图C#中的String类2下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Rancher 2.1平台搭建及使用

一、概述 1.1、什么是Rancher 1.2、Rancher架构 1.2.1、Docker简述 1.2.2、Kubernetes简述 1.2.3、Rancher架构 二、相关术语 2.1、全局层 2.2、集群层 2.3、项目层 2.4、其他 (右上角登录菜单) 三、Rancher v2.1.0功能列表 3.1、K8S集群管理 3.2、多租户功能 3.3、...

使用docker安装宝塔面板

后端使用的命令太多了,容易忘记,所以记录在本文中,以便将来查询: 列出所有的容器 ID docker ps -aq 停止所有的容器 docker stop $(docker ps -aq) 删除所有的容器 docker rm $(docker ps -aq) 删除所有的镜像 docker rmi $(docker images -q) docker i...

ELK 完整部署和使用

上一节已经部署了容器化的 ELK,本节讨论如何将日志导入 ELK 并进行图形化展示。 几乎所有的软件和应用都有自己的日志文件,容器也不例外。前面我们已经知道 Docker 会将容器日志记录到 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log,那么只...

MacBookM1通过DockerDesk安装MySQL8容器

安装好DockerDesk后在preference里面找到DockerEngine将配置改为 { "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker...

[转]走近 STL

原文:http://www.vckbase.com/document/viewdoc/?id=1461   本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者。这实际上是我学习STL的一篇笔记,老鸟就不用看了。 什么是泛型程序设计我们可以简单的理解为:使用模板的程序设计就是泛型程序设计。就像我...

AWVS 14 使用

前言 参考:https://hub.docker.com/r/secfa/docker-awvs docker 下查找下awvs,发现有AWVS 14,而且是 210503151 日,比较新。 # docker search awvs NAME DESCRIPTION...