簡體   English   中英

如何將結果從我的 java 代碼傳遞給 nodeJs?

[英]How to pass a result from my java code to nodeJs?

我正在編寫一個算法來分析 Java 中的市場數據,以可視化我的數據,我想利用交易視圖中的現有圖表庫。 這個免費的圖表庫在 nodeJS 上運行。

我在理解如何用我的算法產生的數據填充它時遇到了很多麻煩。

例如,我的 Java 代碼返回一個“List< Candlestick >”對象,我如何將它發送到在 nodeJs 上運行的 Javascript 代碼?

如果有人願意就如何解決這個問題提供一些全球指導,我們將不勝感激。

我的假設是你有 java 代碼,你想要顯示的結果在 nodejs 上。

雖然此時建議從 API 調用數據,但我們還可以使用另一個選項來解決您的問題。 這是多語言編程的一個很好的例子。 我用過graalvm

通過 sdkman GraalVM 安裝

sdk install java 21.1.0.r11-grl

節點

gu install nodejs

兩個主要項目都位於這里https://gitlab.com/graalvm-java-to-nodejs

  • Java 項目(具有返回列表的方法)
  • NodeJS項目(在NodeJS中加載Java類並在類引用上調用方法以獲取列表)

在我的情況下,將任何代碼添加到 java 庫中,我有一個類,它只返回 Point 列表,如下所示:

public class GraphData {
    public List<Point> getPoints() {
        return List.of(new Point(1, 1), new Point(3, 5));
    }
}

其中Point是一個用於保存 (x, y) 值的 POJO 類。

克隆這個 java 項目https://gitlab.com/graalvm-java-to-nodejs/graalvm-simple-java並執行./gradlew clean build這應該會給你一個可執行的 jar 可以執行 java -jar file.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類從提供給節點程序的 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}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM