如何将我的 java 代码的结果传递给 nodeJs?
How to pass a result from my java code to nodeJs?
我正在编写一个算法来分析 Java 中的市场数据,为了可视化我的数据,我想利用来自 tradingview 的现有图表库。这个免费的图表库在 nodeJS 上运行。
我很难理解如何用我的算法生成的数据填充它。
例如我的 Java 代码 returns 一个“List< Candlestick >”对象,我如何将它发送到 nodeJs 上的 Java 脚本代码 运行 ?
如果有人愿意就如何处理这个问题提供一些全球指导,我们将不胜感激。
我这里的假设是你有java代码并且你想要显示的结果在nodejs上。
虽然此时建议从 API 调用数据,但我们还可以使用另一种方法来解决您的问题。这是多语言编程的一个很好的例子。我用过graalvm.
通过sdkman安装
GraalVM
sdk install java 21.1.0.r11-grl
NodeJS
gu install nodejs
两个主要项目都位于此处https://gitlab.com/graalvm-java-to-nodejs
- Java 项目(有 return 列表的方法)
- NodeJS 项目(在 NodeJS 中加载 Java Class 并调用 class 引用上的方法以获取列表)
将任何代码添加到 java 库,在我的例子中,我有一个 class,它只是 return 点列表,如下所示:
public class GraphData {
public List<Point> getPoints() {
return List.of(new Point(1, 1), new Point(3, 5));
}
}
其中 Point
是一个 POJO class 来保存 (x, y) 值。
克隆这个 java 项目 https://gitlab.com/graalvm-java-to-nodejs/graalvm-simple-java
并执行 ./gradlew clean build
这应该会给你一个可以执行 java -jar file.jar 命令的可执行 jar。
现在,克隆 https://gitlab.com/graalvm-java-to-nodejs
并安装依赖项 npm install
然后执行
node --jvm --vm.cp=/home/ashish/IdeaProjects/graavlvm/java-lib-gvm/build/libs/java-lib-gvm-1.0-SNAPSHOT.jar bin/www
与java交互的相关代码如下:
var GraphDataJavaRef = Java.type('in.silentsudo.GraphData');
var graphData = new GraphDataJavaRef();
var data = graphData.getPoints();
in.silentsudo.GraphData
class 从提供给节点程序的 jar 文件加载,参数名为 --jvm --vm.cp path/to/file.jar
导航至 localhost:3000 后,您应该会看到
Express Tutorial
Welcome to Express Tutorial
Response from Java class
[Point{x=1, y=1}, Point{x=3, y=5}]
我正在编写一个算法来分析 Java 中的市场数据,为了可视化我的数据,我想利用来自 tradingview 的现有图表库。这个免费的图表库在 nodeJS 上运行。
我很难理解如何用我的算法生成的数据填充它。
例如我的 Java 代码 returns 一个“List< Candlestick >”对象,我如何将它发送到 nodeJs 上的 Java 脚本代码 运行 ?
如果有人愿意就如何处理这个问题提供一些全球指导,我们将不胜感激。
我这里的假设是你有java代码并且你想要显示的结果在nodejs上。
虽然此时建议从 API 调用数据,但我们还可以使用另一种方法来解决您的问题。这是多语言编程的一个很好的例子。我用过graalvm.
通过sdkman安装 GraalVM
sdk install java 21.1.0.r11-grl
NodeJS
gu install nodejs
两个主要项目都位于此处https://gitlab.com/graalvm-java-to-nodejs
- Java 项目(有 return 列表的方法)
- NodeJS 项目(在 NodeJS 中加载 Java Class 并调用 class 引用上的方法以获取列表)
将任何代码添加到 java 库,在我的例子中,我有一个 class,它只是 return 点列表,如下所示:
public class GraphData {
public List<Point> getPoints() {
return List.of(new Point(1, 1), new Point(3, 5));
}
}
其中 Point
是一个 POJO class 来保存 (x, y) 值。
克隆这个 java 项目 https://gitlab.com/graalvm-java-to-nodejs/graalvm-simple-java
并执行 ./gradlew clean build
这应该会给你一个可以执行 java -jar file.jar 命令的可执行 jar。
现在,克隆 https://gitlab.com/graalvm-java-to-nodejs
并安装依赖项 npm install
然后执行
node --jvm --vm.cp=/home/ashish/IdeaProjects/graavlvm/java-lib-gvm/build/libs/java-lib-gvm-1.0-SNAPSHOT.jar bin/www
与java交互的相关代码如下:
var GraphDataJavaRef = Java.type('in.silentsudo.GraphData');
var graphData = new GraphDataJavaRef();
var data = graphData.getPoints();
in.silentsudo.GraphData
class 从提供给节点程序的 jar 文件加载,参数名为 --jvm --vm.cp path/to/file.jar
导航至 localhost:3000 后,您应该会看到
Express Tutorial
Welcome to Express Tutorial
Response from Java class
[Point{x=1, y=1}, Point{x=3, y=5}]