java 执行JavaScript 以及容器化的问题
2024-08-27 09:39:27
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
执行结果
最新文章
- iOS开发之Bug(持续更新)
- 新浪微博客户端(59)-hitTest withEvent方法的使用说明
- 导航VC的左右item代码
- javascript中字符串常用操作总结、JS字符串操作大全
- *[codility]MaxDoubleSliceSum
- 建立Go工作环境
- Recipes — Bottle 0.13-dev documentation
- mysql的并发处理机制_上篇
- echarts饼图点击事件
- 深度解密Go语言之关于 interface 的10个问题
- Python档案袋( Json、pickle、加密与解密)
- 微服务架构:Eureka参数配置项详解
- CodeForces Round #549 Div.2
- FPM六:接五,跳转到明细
- 网络流量状态命令总结 (含notp安装)
- MIPI接口资料汇总(精)
- [Oracle][Partition][Controlfile]Partition 操作是否和 Controlfile有关?
- UVALive 6916 Punching Robot dp
- 最长公共子序列(POJ1458)
- [LeetCode] 176. Second Highest Salary_Easy tag: SQL
热门文章
- SpringBoot AOP示例
- IE10下阿里旺旺无法快速登录解决办法
- Standard 1.1.x VM与Standard VM的区别
- Coundn&#39;t load memtrack module (No such file or directory)
- Binary Differences
- 使用MouseWithoutBordersSetup共享鼠标键盘教程
- Forms and Reports Developer 10g Certified on Windows 10 for EBS 12.x
- 【scala】IO
- git远程分支回退
- 【CSAPP】三、程序的机器级表示