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

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

执行结果

时间: 2024-10-11 19:57:48

java 执行JavaScript 以及容器话的问题的相关文章

Java执行JavaScript代码

我们要在Java中执行JavaScriptMethods.js中的execute(s1,s2)方法,JavaScriptMethods.js文件内容如下: function execute(s1, s2){ return s1 + s2; } 首先需要定义一个接口,这个接口中给出与要执行的JavaScript方法一样的方法签名,我们定义接口Methods,它的内容如下: /** * 接口中的方法签名必须与要执行的JavaScript方法一致 * @author yuncong * */ publ

[Java][Js]利用Rhino在服务器端执行JavaScript

途牛网 5 月 9 日挂牌 5 月 9 日消息,据美国财经网站 iposcoop 网站报道,途牛旅游网将于今晚(5 月 9 日)在纳斯达克正式挂牌上市. 途牛网 4 月 4 日首次提交 IPO 招股书,最新版招股书显示,途牛网计划在纳斯达克上市,股票交易代码为"TOUR",发行价区间为每股美国存托股(ADS)9 美元至 11 美元,发行量最高 920 万股 ADS,最高融资额为 1.012 亿美元,销商为摩根士丹利国际.瑞信证券和华兴资本证券.OPPENHEIMER. 进入微软.亚马逊

java util - 在java代码中执行javascript代码工具 rhino-1.7.7.jar

需要 rhino-1.7.7.jar 包 代码示例: package cn.java.mozilla.javascript; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; public class Test { public static void main(String[] args) { test4JsNormalCode(); test4JsObj(); test4JsFun

Java 和 JavaScript 的关系

Java 和 JavaScript 是两门不同的编程语言. 一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的编程语言,带有 "Java" 的名字有助于这门新生语言的传播. 它们的相同之处包括: 它们的语法和 C 语言都很相似: 它们都是面向对象的(虽然实现的方式略有不同): JavaScript 在设计时参照了 Java 的命名规则: 它们的不同之处包括: JavaScript 是动态类型语言,而 Java

java和javascript真的有关系=。=

相同点:1. 内存管理,两者都采用GC来对内存进行回收.因此Java与javascript的内存泄露情况十分相似. 2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V8引擎采用JIT将js编译为机器码后由引擎执行. 3. 内存申请,对象(Object)与数组(Array)引用申请自栈(stack),其本身空间申请自堆(heap). 4. hash处理,对数组与对象来说,数字类型键值的hashCode为其本身,字符串类型键需要计算hashCode来找到对应的值,因

雷锋推到雷峰塔,Java implements Javascript。

最近遇到这么一个问题,如何让用户在软件中自定义函数. 举个例子,使用Java做一个小的监控系统,用户A希望CPU超过90%的时候报警,B用户希望内存超过90%的时候报警,C用户希望CPU超过90%或者内存超过80%的时候报警,D用户希望CPU超过60%且硬盘剩余小于10%的时候报警-- 程序员之力有限,而用户之欲无魇.以开发追需求,如抱薪救火,不妨让用户自己定义报警的规则. 我们当然不需要为此开发一种脚本语言,我觉得JavaScript就是一种不错的语言.我们以一个单输入单输出的函数为例讲解如何

从Java和JavaScript来学习Haskell和Groovy

直击现场 记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会: 学习和使用什么编程语言不重要,重要的是算法和设计: 程序员学习的精髓是面向对象的设计模式,掌握以后,一通百通. 简直就是是胡扯啊.也许在某个极其狭隘的上下文中还能这样说,但是泛泛而谈,这样的态度无疑是误人子弟的. 就说第一条,编程语言不但重要,而且太重要了.换句话说,学习一门新的编程语言,可能学习的是背后的范型和思考问

Java和JavaScript中使用Json方法大全

林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka   摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON採用全然独立于语言的文本格式,可是也使用了相似于C语言家族的习惯(包含C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写.同一时候也易于机器解析和生成

C++、Java、JavaScript中的日志(log)

编程思想之日志记录 什么是log? 相信你一定用日记写过点滴心事,或是用空间.微信.微博刷着动态,记录你每天的喜怒哀乐!在程序中也有一种类似的东西,记录着他主人(应用程序)每天的行踪,他叫日志(log).日记--是人类生活的记事本,日志(log)--是程序运行状况的记事本. 顾名思义,日志(log,后面均以log称之)就是用来记录程序每天的运行状况的,比如程序出现异常的情况,或是某个关键点,功某个重要的数据或交易等.这里的每天不是说每天一记,可以是伴随着程序运行的始终,只要程序在运行着就一直在记