// 调用内部脚本执行 engine eval(titlescript) // 转换为Invocable Invocable invocableEngine = (Invocable) engine // 不带参数调用sayTitle方法 invocableEngine invokeFunction( sayTitle ) // 调用外部脚本执行 // 创建JS文件的File对象 并读入流 File functionscript = new File( ajava js ) Reader reader = new FileReader(functionscript) // 开始执行ajava js里的程序 engine eval(reader) // 不带参数调用sayHello方法 invocableEngine invokeFunction( sayHello ) // 带参数调用sayHello方法 invocableEngine invokeFunction( sayHello mark ) } catch (Exception e) { e printStackTrace() } } } ajava js文件 function sayHello(){ sayHello(null) } function sayHello(name){ if(name==null){ println( 欢迎你!请注册Ajava会员 ) }else{ println(name+ 独立JAVA社区欢迎你 ) } } 运行结果(控制台) 源码实例 使用javax script调用JS脚本里的方法 lishixinzhi/Article/program/Java/hx/201311/26436
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class ExecJs {
/**
* 记录日志类
*/
private Logger log = Logger.getLogger(ExecJs.class)
/**
* 后置处理,执行js脚本
* @param js
* @throws Exception
*/
public void execJs(String js, Map<String,Object>map) throws Exception {
if (log.isDebugEnabled()) {
log.debug("execJs js : " + js)
Iterator<Entry<String, Object>>it = map.entrySet().iterator()
while (it.hasNext()) {
Entry<String, Object>entry = (Entry<String, Object>) it.next()
log.info("EXECJS MAP : " + entry.getKey() + "---" + entry.getValue())
}// end while
}// end if
if ("".equals(js) || js == null) {
log.info("EXECJS ERROR : JAVASCRIPT CONTENT IS NULL")
} else if(map == null || map.size()<=0){
log.info("EXECJS ERROR : MAP CONTENT IS NULL")
} else {
// 获取脚本引擎
ScriptEngineManager mgr = new ScriptEngineManager()
ScriptEngine engine = mgr.getEngineByName("javascript")
// 绑定数据
ScriptContext newContext = new SimpleScriptContext()
Bindings bind = newContext.getBindings(ScriptContext.ENGINE_SCOPE)
bind.putAll(map)
try {
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE)
engine.eval(js)
} catch (Exception e) {
log.info("EXECJS EXCEPTION : EXECUTE JAVASCRIPT EXCEPTION", e)
throw (e)
}// end try
}// end if
}
}
不是的,两者有很大的差别。语法方面JavaScript的基本语法和对象体系,是模仿Java而设计的。但是,JavaScript没有采用Java的静态类型。正是因为JavaScript与Java有很大的相似性,所以这门语言才从一开始的LiveScript改名为JavaScript。基本上,JavaScript这个名字的原意是“很像Java的脚本语言”。千锋官网每日更新最新软件开发基础知识内容,巩固日常学习中的基础技能。更有免费的软件开发视频教程帮助学员快速学习。 千锋教育就有线上免费的软件开发公开课,。
在JavaScript语言中,函数是一种独立的数据类型,以及采用基于原型对象(prototype)的继承链。这是它与Java语法最大的两点区别。JavaScript语法要比Java自由得多。数据结构部分则借鉴Java语言,包括将值分成原始值和对象两大类。另外,Java语言需要编译,而JavaScript语言则是运行时由解释器直接执行。总之,JavaScript的原始设计目标是一种小型的、简单的动态语言,与Java有足够的相似性,使得使用者(尤其是Java程序员)可以快速上手千锋教育集团目前已与国内4000多家企业建立人才输送合作,与500多所大学建立实训就业合作,每年为各大企业输送上万名移动开发工程师,每年有数十万名学员受益于千锋教育组织的技术研讨会、技术培训课、网络公开课及免费教学视频。