-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpolyglotAbs.java
More file actions
38 lines (33 loc) · 1.21 KB
/
Copy pathpolyglotAbs.java
File metadata and controls
38 lines (33 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import org.graalvm.polyglot.*;
import org.graalvm.polyglot.proxy.*;
public class polyglotAbs {
// Embedding JavaScript
public static void jsAbs(int input){
try (Context context = Context.create("js")){
Value jsBindings = context.getBindings("js");
context.eval("js", "print('running abs in JavaScript!')");
System.out.println(jsBindings.getMember("Math").getMember("abs").execute(input));
}
}
// Embedding Python
public static void pyAbs(int input){
try (Context context = Context.create("python")){
Value pyBindings = context.getBindings("python");
context.eval("python", "print('running abs in Python!')");
System.out.println(pyBindings.getMember("abs").execute(input));
}
}
// Embedding Ruby
public static void rbAbs(int input){
try (Context context = Context.create("ruby")){
context.eval("ruby", "puts 'running abs in Ruby!'");
context.eval("ruby", "puts " + input + ".abs");
}
}
public static void main(String[] args) {
System.out.println("This polyglot example runs abs functions.");
jsAbs(-42);
pyAbs(-42);
rbAbs(-42);
}
}