J2V8: Difference between revisions
Jump to navigation
Jump to search
(Created page with "==References== * [https://stackoverflow.com/questions/38848274/ Execute .js function with J2V8] * [http://eclipsesource.com/blogs/2016/07/20/running-node-js-on-the-jvm/ Runnin...") |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<source lang="xml"> | |||
<dependencies> | |||
<dependency> | |||
<groupId>com.eclipsesource.j2v8</groupId> | |||
<artifactId>j2v8_macosx_x86_64</artifactId> | |||
<version>2.0</version> | |||
<scope>compile</scope> | |||
</dependency> | |||
</dependencies> | |||
</source> | |||
==Example 1== | |||
<source lang="java"> | |||
package com.example; | |||
import com.eclipsesource.v8.V8; | |||
public class EclipseCon_snippet5 { | |||
public static class Printer { | |||
public void print(String string) { | |||
System.out.println(string); | |||
} | |||
} | |||
public static void main(String[] args) { | |||
V8 v8 = V8.createV8Runtime(); | |||
v8.registerJavaMethod(new Printer(), "print", "print", new Class<?>[]{String.class}); | |||
v8.executeVoidScript( "print('Hello, World!');" ); | |||
v8.release(true); | |||
} | |||
} | |||
</source> | |||
==Example 2== | |||
<source lang="java"> | |||
public static void main(String[] args) { | |||
V8 v8 = V8.createV8Runtime(); | |||
int x = (Integer) v8.executeScript("var func = x => x * x; func(5);"); | |||
System.out.println(x); | |||
v8.release(); | |||
} | |||
</source> | |||
==Example 3== | |||
<source lang="java"> | |||
public static void main(String[] args) { | |||
V8 runtime = V8.createV8Runtime(); | |||
int result = runtime.executeIntegerScript("" | |||
+ "var hello = 'hello, ';\n" | |||
+ "var world = 'world!';\n" | |||
+ "hello.concat(world).length;\n"); | |||
System.out.println(result); | |||
runtime.release(); | |||
} | |||
</source> | |||
==Example 4== | |||
<source lang="java"> | |||
V8Object player1 = new V8Object(runtime).add("name", "John"); | |||
V8Object player2 = new V8Object(runtime).add("name", "Chris"); | |||
V8Array players = new V8Array(runtime).push(player1).push(player2); | |||
hockeyTeam.add("players", players); | |||
player1.release(); | |||
player2.release(); | |||
players.release(); | |||
</source> | |||
<source lang="js"> | |||
var hockeyTeam = { | |||
name : 'WolfPack', | |||
players : [], | |||
addPlayer : function(player) { | |||
this.players.push(player); | |||
return this.players.size(); | |||
} | |||
} | |||
</source> | |||
<source lang="java"> | |||
V8Array parameters = new V8Array(runtime).push(player1); | |||
int size = hockeyTeam.executeIntegerFunction("addPlayer", parameters); | |||
parameters.release(); | |||
</source> | |||
==Example 5== | |||
{| | |||
| valign="top" | | |||
<source lang="js" highlight="9-14,17"> | |||
var Chorke=Chorke||(function(Chorke,$me){ | |||
$me=new Chorke(); | |||
$me.$package=''; | |||
$me.$namespace=''; | |||
$me.$class='Chorke'; | |||
return $me; | |||
}(function(){})); | |||
;Chorke.Academia||(function($,Academia,$me){ | |||
$me=new Academia(); | |||
$me.$package=$.$class; | |||
$me.$namespace=$.$class; | |||
$me.$class='Academia'; | |||
$.Academia=$me; | |||
return $me; | |||
}(Chorke,function(){})); | |||
</source> | |||
| valign="top" | | |||
<source lang="js" highlight="9-14,17"> | |||
var Chorke=Chorke||(function(Chorke,$me){ | |||
$me=new Chorke(); | |||
$me.$package=''; | |||
$me.$namespace=''; | |||
$me.$class='Chorke'; | |||
return $me; | |||
}(function(){})); | |||
;Chorke.Academia||(function($,$me){ | |||
$me.$package=$.$class; | |||
$me.$namespace=$.$class; | |||
$me.$class='Academia'; | |||
$.Academia=$me; | |||
return $me; | |||
}(Chorke,{})); | |||
</source> | |||
| valign="top" | | |||
<source lang="js" highlight="9-14,17"> | |||
var Chorke=Chorke||(function(Chorke,$me){ | |||
$me=new Chorke(); | |||
$me.$package=''; | |||
$me.$namespace=''; | |||
$me.$class='Chorke'; | |||
return $me; | |||
}(function(){})); | |||
;Chorke.Academia||(function($,$me){ | |||
$me={ | |||
$package:$.$class, | |||
$namespace:$.$class, | |||
$class:'Academia' | |||
}; | |||
$.Academia=$me; | |||
return $me; | |||
}(Chorke)); | |||
</source> | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" colspan="3" | | |||
<source lang="java" highlight="2,6-8"> | |||
public static void main(String[] args) { | |||
String oopjs= "var Chorke=Chorke||function(a,e){return(e=new function(){}).$package='',e.$namespace='',e.$class='Chorke',e}();Chorke.Academia||function(a,e){e={$package:a.$class,$namespace:a.$class,$class:'Academia'},a.Academia=e}(Chorke);"; | |||
V8 runtime = V8.createV8Runtime(); | |||
runtime.executeVoidScript(oopjs); | |||
V8Object chorke = runtime.getObject("Chorke"); | |||
V8Object academia = chorke.getObject("Academia"); | |||
System.out.println(academia.getString("$class")); | |||
academia.release(); | |||
chorke.release(); | |||
runtime.release(); | |||
} | |||
</source> | |||
|} | |||
==References== | ==References== | ||
{| | |||
| valign="top" | | |||
* [http://eclipsesource.com/blogs/2015/06/06/registering-java-callbacks-with-j2v8/ Registering Java Callbacks with J2V8] | |||
* [http://eclipsesource.com/blogs/2015/05/12/multithreaded-javascript-with-j2v8/ Multithreaded JavaScript with J2V8] | |||
* [https://stackoverflow.com/questions/38848274/ Execute .js function with J2V8] | * [https://stackoverflow.com/questions/38848274/ Execute .js function with J2V8] | ||
* [http://eclipsesource.com/blogs/2016/07/20/running-node-js-on-the-jvm/ Running Node JS on the JVM] | * [http://eclipsesource.com/blogs/2016/07/20/running-node-js-on-the-jvm/ Running Node JS on the JVM] | ||
* [https://stackoverflow.com/questions/6369919/ How to embed V8 in a Java] | |||
* [https://eclipsesource.com/blogs/tutorials/getting-started-with-j2v8/ Getting Started With J2V8] | * [https://eclipsesource.com/blogs/tutorials/getting-started-with-j2v8/ Getting Started With J2V8] | ||
* [https:// | * [https://github.com/eclipsesource/J2V8/blob/master/src/main/java/com/eclipsesource/v8/utils/V8ObjectUtils.java V8ObjectUtils] | ||
* [https://github.com/eclipsesource/j2v8 Building J2V8] | * [https://github.com/eclipsesource/j2v8 Building J2V8] | ||
* [https://github.com/alicorn-systems/v8-adapter V8 Adapter] | |||
* [https://www.programcreek.com/java-api-examples/?api=com.eclipsesource.v8.V8Object V8Object] | |||
| valign="top" | | |||
* [https://www.eclipsecon.org/na2015/session/j2v8-highly-efficient-js-runtime-java J2V8 A Highly Efficient JS Runtime For Java] | |||
* [https://github.com/eclipsesource/J2V8/issues/441 Reduce the scope of the J2V8 project] | |||
* [http://eclipsesource.com/blogs/2015/11/04/shipping-j2v8-as-an-aar/ Shipping J2V8 as an AAR] | |||
* [[Google Closure Compiler]] | |||
* [[JSON Schema Validation]] | |||
* [[Rhino]] | |||
|} |
Latest revision as of 02:12, 8 July 2022
<dependencies>
<dependency>
<groupId>com.eclipsesource.j2v8</groupId>
<artifactId>j2v8_macosx_x86_64</artifactId>
<version>2.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Example 1
package com.example;
import com.eclipsesource.v8.V8;
public class EclipseCon_snippet5 {
public static class Printer {
public void print(String string) {
System.out.println(string);
}
}
public static void main(String[] args) {
V8 v8 = V8.createV8Runtime();
v8.registerJavaMethod(new Printer(), "print", "print", new Class<?>[]{String.class});
v8.executeVoidScript( "print('Hello, World!');" );
v8.release(true);
}
}
Example 2
public static void main(String[] args) {
V8 v8 = V8.createV8Runtime();
int x = (Integer) v8.executeScript("var func = x => x * x; func(5);");
System.out.println(x);
v8.release();
}
Example 3
public static void main(String[] args) {
V8 runtime = V8.createV8Runtime();
int result = runtime.executeIntegerScript(""
+ "var hello = 'hello, ';\n"
+ "var world = 'world!';\n"
+ "hello.concat(world).length;\n");
System.out.println(result);
runtime.release();
}
Example 4
V8Object player1 = new V8Object(runtime).add("name", "John");
V8Object player2 = new V8Object(runtime).add("name", "Chris");
V8Array players = new V8Array(runtime).push(player1).push(player2);
hockeyTeam.add("players", players);
player1.release();
player2.release();
players.release();
var hockeyTeam = {
name : 'WolfPack',
players : [],
addPlayer : function(player) {
this.players.push(player);
return this.players.size();
}
}
V8Array parameters = new V8Array(runtime).push(player1);
int size = hockeyTeam.executeIntegerFunction("addPlayer", parameters);
parameters.release();
Example 5
var Chorke=Chorke||(function(Chorke,$me){
$me=new Chorke();
$me.$package='';
$me.$namespace='';
$me.$class='Chorke';
return $me;
}(function(){}));
;Chorke.Academia||(function($,Academia,$me){
$me=new Academia();
$me.$package=$.$class;
$me.$namespace=$.$class;
$me.$class='Academia';
$.Academia=$me;
return $me;
}(Chorke,function(){}));
|
var Chorke=Chorke||(function(Chorke,$me){
$me=new Chorke();
$me.$package='';
$me.$namespace='';
$me.$class='Chorke';
return $me;
}(function(){}));
;Chorke.Academia||(function($,$me){
$me.$package=$.$class;
$me.$namespace=$.$class;
$me.$class='Academia';
$.Academia=$me;
return $me;
}(Chorke,{}));
|
var Chorke=Chorke||(function(Chorke,$me){
$me=new Chorke();
$me.$package='';
$me.$namespace='';
$me.$class='Chorke';
return $me;
}(function(){}));
;Chorke.Academia||(function($,$me){
$me={
$package:$.$class,
$namespace:$.$class,
$class:'Academia'
};
$.Academia=$me;
return $me;
}(Chorke));
|
| ||
public static void main(String[] args) {
String oopjs= "var Chorke=Chorke||function(a,e){return(e=new function(){}).$package='',e.$namespace='',e.$class='Chorke',e}();Chorke.Academia||function(a,e){e={$package:a.$class,$namespace:a.$class,$class:'Academia'},a.Academia=e}(Chorke);";
V8 runtime = V8.createV8Runtime();
runtime.executeVoidScript(oopjs);
V8Object chorke = runtime.getObject("Chorke");
V8Object academia = chorke.getObject("Academia");
System.out.println(academia.getString("$class"));
academia.release();
chorke.release();
runtime.release();
}
|