摘要:腳本引擎執(zhí)行代碼腳本引擎介紹使得應(yīng)用程序可以通過一套固定的接口與各種腳本引擎交互從而達(dá)到在平臺(tái)上調(diào)用各種腳本語言的目的腳本是連通平臺(tái)和腳本語言的橋梁可以吧一些復(fù)雜異變的業(yè)務(wù)邏輯交給腳本語言處理這又大大提高了開發(fā)效率獲得腳本引擎對(duì)象腳本為開發(fā)
1.腳本引擎執(zhí)行JavaScript代碼
腳本引擎介紹
使得Java應(yīng)用程序可以通過一套固定的接口與各種腳本引擎交互,從而達(dá)到在Java平臺(tái)上調(diào)用各種腳本語言的目的
Java腳本API是連通Java平臺(tái)和腳本語言的橋梁
可以吧一些復(fù)雜異變的業(yè)務(wù)邏輯交給腳本語言處理,這又大大提高了開發(fā)效率
獲得腳本引擎對(duì)象
ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("javascript");
Java腳本API為開發(fā)者提供了如下功能:
獲取腳本程序輸入,通過腳本引擎運(yùn)行腳本并返回運(yùn)行結(jié)果,這是最核心的接口
注意是:接口 Java可以使用各種不同的實(shí)現(xiàn),從而通用的調(diào)用js,groovy,python等腳本
Rhino是一種使用Java語言寫的JavaScript的開源實(shí)現(xiàn),原先由Mozilla開發(fā),現(xiàn)在被集成進(jìn)入JDK6.0以及以上版本
通過腳本引擎的運(yùn)行上下文在腳本和Java平臺(tái)間交換數(shù)據(jù)
通過Java應(yīng)用程序調(diào)用函數(shù)腳本
a.js
function test(){ var a = 3; var b = 4; print("invoke js file:"+(a+b)); } test();
import java.io.FileReader; import java.net.URL; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class JavaScript { public static void main(String[] args) throws Exception { //獲得腳本引擎對(duì)象 ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("javascript"); //定義變量,存儲(chǔ)在引擎上下文中 engine.put("msg", "I am a good man!"); String str = "var user = {name:"Matrix42",age:18,schools:["清華大學(xué)","北京大學(xué)"]};"; str+= "print(user.name);"; engine.eval(str); engine.eval("msg = "Ha Ha";"); System.out.println(engine.get("msg")); //定義函數(shù) engine.eval("function add(a,b){var sum = a + b; return sum;}"); //取得調(diào)用接口 Invocable jsInvocable = (Invocable) engine; //執(zhí)行腳本中定義的方法 Object result = jsInvocable.invokeFunction("add", new Object[]{13,20}); System.out.println(result); //導(dǎo)入其他java包,使用其他包中的java類,如果想要深入了解可以學(xué)習(xí)Rhino //查資料說jdk8好像不支持,jdk7支持 //- If you need JavaScript, use Java 7. //- If you need Java 8, don"t use JavaScript. /*String jsCode = "importPackage(java.util);var list=Arrays.asList(["北京大學(xué)","清華大學(xué)"]);"; engine.eval(jsCode); List2.Rhino介紹list = (List ) engine.get("list"); for(String string:list){ System.out.println(string); }*/ //執(zhí)行一個(gè)js文件(將js放到src下即可) URL url = JavaScript.class.getClassLoader().getResource("a.js"); FileReader fr = new FileReader(url.getPath()); engine.eval(fr); fr.close(); } }
Rhino是一種使用java語言編寫的JavaScript的開源實(shí)現(xiàn),原先由Mozilla開發(fā),現(xiàn)在被集成進(jìn)入JDK6.0
官方首頁:https://developer.mozilla.org...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71944.html
摘要:知識(shí)點(diǎn)總結(jié)動(dòng)態(tài)執(zhí)行代碼知識(shí)點(diǎn)總結(jié)動(dòng)態(tài)字節(jié)碼操作之后提供了腳本引擎功能,讓我們可以執(zhí)行某些腳本語言,特別是是一門解釋性語言,動(dòng)態(tài)性非常好。腳本為開發(fā)者提供了如下功能獲取腳本程序輸入,通過腳本引擎運(yùn)行腳本并返回運(yùn)行結(jié)果,這是最核心的接口。 Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)執(zhí)行JS代碼 ) @(Java知識(shí)點(diǎn)總結(jié))[Java, 動(dòng)態(tài)字節(jié)碼操作] JDK6.0之后提供了腳本引擎功能,讓我們可以執(zhí)行某些...
摘要:知識(shí)點(diǎn)總結(jié)動(dòng)態(tài)執(zhí)行代碼知識(shí)點(diǎn)總結(jié)動(dòng)態(tài)字節(jié)碼操作之后提供了腳本引擎功能,讓我們可以執(zhí)行某些腳本語言,特別是是一門解釋性語言,動(dòng)態(tài)性非常好。腳本為開發(fā)者提供了如下功能獲取腳本程序輸入,通過腳本引擎運(yùn)行腳本并返回運(yùn)行結(jié)果,這是最核心的接口。 Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)執(zhí)行JS代碼 ) @(Java知識(shí)點(diǎn)總結(jié))[Java, 動(dòng)態(tài)字節(jié)碼操作] JDK6.0之后提供了腳本引擎功能,讓我們可以執(zhí)行某些...
摘要:未來的主要發(fā)布基于。在中調(diào)用函數(shù)支持從代碼中直接調(diào)用定義在腳本文件中的函數(shù)。下面的函數(shù)稍后會(huì)在端調(diào)用為了調(diào)用函數(shù),你首先需要將腳本引擎轉(zhuǎn)換為。調(diào)用函數(shù)將結(jié)果輸出到,所以我們會(huì)首先看到輸出。幸運(yùn)的是,有一套補(bǔ)救措施。 原文:Java 8 Nashorn Tutorial 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 這個(gè)教程中,你會(huì)通過簡(jiǎn)單易懂的代碼示例,來了解Nashorn Ja...
摘要:可嵌入動(dòng)態(tài)文本于頁面,對(duì)瀏覽器事件作出響應(yīng),讀寫元素,控制等。年月,發(fā)布了一款面向普通用戶的新一代的瀏覽器版,市場(chǎng)份額一舉超過。網(wǎng)景將這門語言作為標(biāo)準(zhǔn)提交給了歐洲計(jì)算機(jī)制造協(xié)會(huì)。線程和的并發(fā)執(zhí)行都是線程安全的。后面會(huì)詳細(xì)講解對(duì)象類型的轉(zhuǎn)換。 本文由云+社區(qū)發(fā)表作者:殷源,專注移動(dòng)客戶端開發(fā),微軟Imagine Cup中國(guó)區(qū)特等獎(jiǎng)獲得者 JavaScript越來越多地出現(xiàn)在我們客戶端開...
摘要:一基本概述概述一種直譯式腳本語言,是一種動(dòng)態(tài)類型弱類型基于原型的語言,內(nèi)置支持類型。 JavaScript (一) 基本概述 (1) 概述 JavaScript一種直譯式腳本語言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)網(wǎng)頁上使用,用來給H...
閱讀 2175·2021-11-11 16:55
閱讀 1699·2019-08-30 15:54
閱讀 2831·2019-08-30 15:53
閱讀 2228·2019-08-30 15:44
閱讀 1164·2019-08-30 15:43
閱讀 978·2019-08-30 11:22
閱讀 1960·2019-08-29 17:20
閱讀 1579·2019-08-29 16:56