国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java動態性(3) - 腳本引擎執行javascript代碼

dendoink / 3546人閱讀

摘要:腳本引擎執行代碼腳本引擎介紹使得應用程序可以通過一套固定的接口與各種腳本引擎交互從而達到在平臺上調用各種腳本語言的目的腳本是連通平臺和腳本語言的橋梁可以吧一些復雜異變的業務邏輯交給腳本語言處理這又大大提高了開發效率獲得腳本引擎對象腳本為開發

1.腳本引擎執行JavaScript代碼

腳本引擎介紹

使得Java應用程序可以通過一套固定的接口與各種腳本引擎交互,從而達到在Java平臺上調用各種腳本語言的目的

Java腳本API是連通Java平臺和腳本語言的橋梁

可以吧一些復雜異變的業務邏輯交給腳本語言處理,這又大大提高了開發效率

獲得腳本引擎對象

ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("javascript");

Java腳本API為開發者提供了如下功能:

獲取腳本程序輸入,通過腳本引擎運行腳本并返回運行結果,這是最核心的接口

注意是:接口 Java可以使用各種不同的實現,從而通用的調用js,groovy,python等腳本

Rhino是一種使用Java語言寫的JavaScript的開源實現,原先由Mozilla開發,現在被集成進入JDK6.0以及以上版本

通過腳本引擎的運行上下文在腳本和Java平臺間交換數據

通過Java應用程序調用函數腳本

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 {
       
        //獲得腳本引擎對象
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("javascript");
        
        //定義變量,存儲在引擎上下文中
        engine.put("msg", "I am a good man!");
        
        String str = "var user = {name:"Matrix42",age:18,schools:["清華大學","北京大學"]};";
        
        str+= "print(user.name);";
        
        engine.eval(str);
        
        engine.eval("msg = "Ha Ha";");
        
        System.out.println(engine.get("msg"));
        
        //定義函數
        engine.eval("function add(a,b){var sum = a + b; return sum;}");
        
        //取得調用接口
        Invocable jsInvocable = (Invocable) engine;
        
        //執行腳本中定義的方法
        Object result = jsInvocable.invokeFunction("add", new Object[]{13,20});
        
        System.out.println(result);
        
        //導入其他java包,使用其他包中的java類,如果想要深入了解可以學習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(["北京大學","清華大學"]);";
        
        engine.eval(jsCode);
        
        List list = (List) engine.get("list");
        
        for(String string:list){
            System.out.println(string);
        }*/
        
        //執行一個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的開源實現,原先由Mozilla開發,現在被集成進入JDK6.0

官方首頁:https://developer.mozilla.org...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71944.html

相關文章

  • Java知識點總結(動態執行JS代碼

    摘要:知識點總結動態執行代碼知識點總結動態字節碼操作之后提供了腳本引擎功能,讓我們可以執行某些腳本語言,特別是是一門解釋性語言,動態性非常好。腳本為開發者提供了如下功能獲取腳本程序輸入,通過腳本引擎運行腳本并返回運行結果,這是最核心的接口。 Java知識點總結(動態執行JS代碼 ) @(Java知識點總結)[Java, 動態字節碼操作] JDK6.0之后提供了腳本引擎功能,讓我們可以執行某些...

    qieangel2013 評論0 收藏0
  • Java知識點總結(動態執行JS代碼

    摘要:知識點總結動態執行代碼知識點總結動態字節碼操作之后提供了腳本引擎功能,讓我們可以執行某些腳本語言,特別是是一門解釋性語言,動態性非常好。腳本為開發者提供了如下功能獲取腳本程序輸入,通過腳本引擎運行腳本并返回運行結果,這是最核心的接口。 Java知識點總結(動態執行JS代碼 ) @(Java知識點總結)[Java, 動態字節碼操作] JDK6.0之后提供了腳本引擎功能,讓我們可以執行某些...

    forsigner 評論0 收藏0
  • [譯] Java 8 Nashorn 教程

    摘要:未來的主要發布基于。在中調用函數支持從代碼中直接調用定義在腳本文件中的函數。下面的函數稍后會在端調用為了調用函數,你首先需要將腳本引擎轉換為。調用函數將結果輸出到,所以我們會首先看到輸出。幸運的是,有一套補救措施。 原文:Java 8 Nashorn Tutorial 譯者:飛龍 協議:CC BY-NC-SA 4.0 這個教程中,你會通過簡單易懂的代碼示例,來了解Nashorn Ja...

    _ivan 評論0 收藏0
  • JavaScriptCore全面解析

    摘要:可嵌入動態文本于頁面,對瀏覽器事件作出響應,讀寫元素,控制等。年月,發布了一款面向普通用戶的新一代的瀏覽器版,市場份額一舉超過。網景將這門語言作為標準提交給了歐洲計算機制造協會。線程和的并發執行都是線程安全的。后面會詳細講解對象類型的轉換。 本文由云+社區發表作者:殷源,專注移動客戶端開發,微軟Imagine Cup中國區特等獎獲得者 JavaScript越來越多地出現在我們客戶端開...

    OnlyMyRailgun 評論0 收藏0
  • 一個后端開發者的前端語言基礎:JavaScript

    摘要:一基本概述概述一種直譯式腳本語言,是一種動態類型弱類型基于原型的語言,內置支持類型。 JavaScript (一) 基本概述 (1) 概述 JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給H...

    ephererid 評論0 收藏0

發表評論

0條評論

dendoink

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<