java利用JDK调用并执行js源码
前言:
不同开发语言之间具有通用性,更具有协作调用的可能。有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考。
js函数文件 expression.js
function merge(a, b) {
c = a * b;
return c;
}
function isPrime (num)
{
if (num <= 1) {
print("Please enter a positive integer >= 2.")
return false
}
var prime = true
var sqrRoot = Math.round(Math.sqrt(num))
for (var n = 2; prime & n <= sqrRoot; ++n) {
prime = (num % n != 0)
}
return prime
}
java调用代码:
package com.yeezhao.common.js; import java.io.FileReader; import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
/**
* JAVA 调用 js脚本
* @author Administrator -> junhong
* @since 2016年12月14日 上午11:20:00
*/
public class ScriptEngineTest { public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript"); String jsFileName = "expression.js"; // 读取js文件 String path = ScriptEngineTest.class.getClassLoader().getResource("").getPath();
System.out.println("path=" + path);
FileReader reader = new FileReader(path + jsFileName); // 执行指定脚本
engine.eval(reader); if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine; // 调用merge方法,并传入两个参数 // c = merge(2, 3); Double c = (Double) invoke.invokeFunction("merge", 2, 3); System.out.println("c = " + c); // ok = isPrime(5);
Integer[] nums = { 1, 2, 3, 5, 12, 112, 100, 4351561 };
for (Integer num : nums) {
System.out.println(num + " --> " + invoke.invokeFunction("isPrime", num));
} //hellp
invoke.invokeFunction("hello1", "John");
} reader.close(); }
}
输出Output:
path=/D:/Eclipse/workspace/yz-test-/target/classes/
c = 6.0
Please enter a positive integer >= 2.1 --> false
--> true
--> true
--> true
--> false
--> false
--> false
--> true
before hello2 ----> hello2 John
after hello2
java利用JDK调用并执行js源码的更多相关文章
- Workbench利用Python驱动DM执行Js进行建模
Workbench的工作平台下可以利用Python进行一些操作,包括添加system和component等等.DM可以通过执行Jscript脚本进行自动建模,因此,结合这两块的内容,可以利用Pytho ...
- Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程
下面将依次介绍: 1. 线程状态.Java线程状态和线程池状态 2. start方法源码 3. 什么是线程池? 4. 线程池的工作原理和使用线程池的好处 5. ThreadPoolExecutor中的 ...
- basket.js 源码分析
basket.js 源码分析 一.前言 basket.js 可以用来加载js脚本并且保存到 LocalStorage 上,使我们可以更加精准地控制缓存,即使是在 http 缓存过期之后也可以使用.因此 ...
- Underscore.js 源码学习笔记(上)
版本 Underscore.js 1.9.1 一共 1693 行.注释我就删了,太长了… 整体是一个 (function() {...}()); 这样的东西,我们应该知道这是一个 IIFE(立即执行 ...
- underscore.js源码研究(6)
概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...
- Java的三种代理模式&完整源码分析
Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCache缓存的实现机制](https://www.c ...
- Java SPI机制实战详解及源码分析
背景介绍 提起SPI机制,可能很多人不太熟悉,它是由JDK直接提供的,全称为:Service Provider Interface.而在平时的使用过程中也很少遇到,但如果你阅读一些框架的源码时,会发现 ...
- 深入理解unslider.js源码
最近用到了一个挺好用的幻灯片插件,叫做unslider.js,就想看看怎么实现幻灯片功能,就看看源码,顺便自己也学习学习.看完之后收获很多,这里和大家分享一下. unslider.js 源码和使用教程 ...
随机推荐
- windows go安装
1.安装git 因为golang是通过git来管理远程包的,所以我们首先要安装git,下载地址:http://www.git-scm.com/download/. git安装比较简单,直接下一步即可( ...
- Waud.js – 使用HTML5降级处理的Web音频库
Waud.js 是一个Web音频库,有一个HTML5音频降级处理方案. 它允许您利用Web音频API为你的Web应用程序控制音频功能.在不支持Web音频API的非现代浏览器使用HTML5音频降级方案. ...
- 基于JQuery的获取鼠标进入和离开容器方向的实现
做动画时,需要判断鼠标进入和退出容器的方向.网上找到的基于JQuery的实现方法,用函数封装了一下,写了一个示例.注意绑定鼠标事件用的是on(),所以JQuery版本需高于1.7. <!DOCT ...
- Dynamics CRM 2011-RootComponent Type
笔者因为时不时要导出solution,对solution xml进行处理,所以把xml中的rootcomponent type列一下 Type Description 1 Entity 2 Attr ...
- DevExpress v16.1.5图表、Dashboard等多个控件API发生变化
Dashboard # BC3835: WinForms Dashboard Designer - ChartSeriesTypeGalleryItem bar item停用 在v16.1.5之前,D ...
- 最新Android系统版本与API等级对应关系表
最新Android系统版本与API等级对应关系表 从Android官网拷过来的,方便查阅... 官网地址:https://developer.android.com/guide/topics/mani ...
- Extjs5 tabs实例
<%@ page language= "java" contentType ="text/html; charset=UTF-8" pageEnc ...
- 实时观察Apache访问情况的工具Apachetop
Linux服务器的负载.进程等信息可以通过top命令查看.而Apache的运转如何实时的观察呢?“tail -f”log文件?这是个好方法,但是太累了! 所以,感谢Chris Elsworth为我们提 ...
- Spring 资源文件处理
Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal) ...
- 2-sql基本操作
sql基本操作 一.Sqlplus常用命令 1.查看oracle数据库的进程 2.查看oracle数据库运行状态 3.显示实例名(数据库名) 4.用sys账户登陆到数据库 5.解锁账户scott,并登 ...