天天看點

java script android_Javascript可以高效地在安卓上運作了

Rhino和 Nashorn是Java中運作Javascript兩種常見的方式,但是在許多方面并沒有滿足我們的要求:

1.既不支援”初始類型 ”。 所有與平台的互動都需要包裝成類,如Integer、Double或Boolean。

2.Nashorn不支援Android。

3.Rhino編譯器不支援Android系統優化。

4. 無論是哪個引擎都不支援在Android上遠端調試。

為了幫助解決這些問題,一個基于Java的新JavaScript運作項目: 谷歌的JavaScript引擎V8。 其運作庫包稱為J2V8是基于EPL的開源項目,Github項目位址,可以在MacOS Linux和Android上運作。

也就是說,Javascript可以在安卓系統上高效運作了。

不像其他JS運作時(包括JV8 Jav8), J2V8 采用基于原始的方法,導緻更少的垃圾。 下面的腳本生成一個數組,其中包含第一個100斐波納契數列。 這些資料可以直接通路,不需要包裝成對象。 執行這個腳本Rhino需要7.5秒的10000倍。 相同的腳本運作J2V8上10000次隻需要1秒。

var i;

var fib = []; //Initialize array!fib[0] = 1;

fib[1] = 1;

for(i=2; i<=100; i++)

{

fib[i] = fib[i-2] + fib[i-1];

}

fib;

用Java通路javascript數組:

V8Array array = v8.executeArrayScript(script);

double total = 0;

for (int i = 0; i < 100; i++) {

total += array.getDouble(i);

}

System.out.println(total);

array.release();

運作環境是是由V8通過其薄的JNI暴露部分API。 這種方法允許您不使用C / c++情況下将V8直接嵌入到Java應用程式。 J2v8目前目标V8版本3.26,

運作環境目前支援:V8Objects V8Arrays, 腳本調用以及從Java調用JS函數和注冊Java函數作為JS回調函數。 還有一個小型庫包可以将V8Objects和V8Arrays轉換為Java Map和List。

最後,運作時支援遠端調試,可以使用IDE工具,如Chrome Developer Tools for Eclipse。

java script android_Javascript可以高效地在安卓上運作了

[該貼被banq于2014-11-26 13:01修改過]