成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java動(dòng)態(tài)性(3) - 腳本引擎執(zhí)行javascript代碼

dendoink / 3547人閱讀

摘要:腳本引擎執(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);
        
        List 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();
    }

}
2.Rhino介紹

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

相關(guān)文章

  • Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)執(zhí)行JS代碼

    摘要:知識(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í)行某些...

    qieangel2013 評(píng)論0 收藏0
  • Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)執(zhí)行JS代碼

    摘要:知識(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í)行某些...

    forsigner 評(píng)論0 收藏0
  • [譯] Java 8 Nashorn 教程

    摘要:未來的主要發(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...

    _ivan 評(píng)論0 收藏0
  • JavaScriptCore全面解析

    摘要:可嵌入動(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)在我們客戶端開...

    OnlyMyRailgun 評(píng)論0 收藏0
  • 一個(gè)后端開發(fā)者的前端語言基礎(chǔ):JavaScript

    摘要:一基本概述概述一種直譯式腳本語言,是一種動(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...

    ephererid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

dendoink

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<