【コピペOK】Node.jsからjavaアプリを呼び出して実行する手順

★悩み★
・Node.jsからjavaで実装されたアプリを呼び出して実行できないかな。
・Node.jsからjavaコマンドを呼び出して実行する手順を知りたいなぁ。
・Node.jsからjavaコマンドの出力結果を受け取ることができるのだろうか。


こういった「悩み」に答えます。

★本記事の内容★
① Node.jsからjavaコマンドを呼び出して実行する手順をご紹介
② Node.jsで外部コマンドを呼び出して実行する方法をご紹介


これからご紹介する「Node.jsからjavaアプリを呼び出して実行する手順」を実践したことで、筆者は30分以内でNode.jsからjavaアプリを呼び出して実行できました。

記事の前半では「Node.jsからjavaを呼び出して実行する手順」をコマンドベースで解説しつつ、記事の後半では「Node.jsから外部コマンドを呼び出して実行する手順」をご紹介します。

この記事を読み終えることで、「Node.jsからjavaコマンドなどの外部コマンドを呼ぶ出して実行する手順」を把握した状態になります。

Node.jsからjavaコマンドを呼び出して実行する手順

「Node.jsからjavaコマンドを呼び出して実行する手順」に関してご紹介します。

★Node.jsでjavaを呼び出して実行するまでの流れ★
手順1:Node.jsのインストール
手順2:Node.jsから呼び出して実行したいjavaアプリケーションを作成
手順3:Node.jsからjavaコマンドを呼ぶ出して実行するプログラムを作成
手順4:javaを呼び出して実行するNode.jsのプログラムを実行


上記の手順で、Node.jsからjavaコマンドを呼び出して実行できます。

上記の各手順は、以下の環境で動作確認済みです。
動作確認済み環境:CentOS Linux release 7.8.2003 (Core)


以降で、「Node.jsでjavaを呼び出して実行するまでの流れ」の各手順に関してご紹介します。

手順1:Node.jsのインストール

「手順1:Node.jsのインストール」についてご紹介します。

Node.jsをインストールされているかを確認するために、端末またはコマンドプロンプトで以下のコマンドを実行しましょう。

# node -v
v12.20.0


上記のようにNode.jsのバージョンが表示された場合、Node.jsはお使いのパソコンにインストールされています。

そうではない方は、以下の記事を参照し、yum経由でNode.jsをインストールしましょう。

以上で、「手順1:Node.jsのインストール」は完了です。

手順2:Node.jsから呼び出して実行したいjavaアプリケーションを作成

「手順2:Node.jsから呼び出して実行したいjavaアプリケーションを作成」に関してご説明します。

Node.jsから呼び出して実行したいjavaアプリを作成しましょう。


以下のプログラムをtest.javaとして保存しましょう。

class test {
  public static void main(String argv[]){
    System.out.println("Hi!!");
  }
}


その後、以下のコマンドでtest.javaをビルド/コンパイルしましょう。

# ls
test.java
# javac test.java 
# ls
test.class	test.java
# 


ビルド/コンパイルしたjavaアプリケーションが正常に動作することを確認するために、以下のコマンドを実行します。

# ls
test.class	test.java
# java test 
Hi!!
#


上記のように「Hi!!」と表示された場合、正常に動作したこととなります。

以上で、「手順2:Node.jsから呼び出して実行したいjavaアプリケーションを作成」は完了です。

手順3:Node.jsからjavaコマンドを呼ぶ出して実行するプログラムを作成

「手順3:Node.jsからjavaコマンドを呼ぶ出して実行するプログラムを作成」に関してご説明します。

Node.jsからjavaコマンドを呼ぶ出して実行するプログラムを作成しましょう。


以下のプログラムをnode-test.jsとして保存しましょう。

var child = require('child_process');
var path = __dirname + '/' + 'test_java_dir';
var java = child.spawn('java', ['-classpath',path,'test'],{stdio:[ 'pipe',null,null, 'pipe' ]});
java.stdout.on('data', function(data){
    console.log(data.toString());
} );


上記のようにNode.jsのchild.spawn関数を利用し、javaコマンドを呼び出して実行することができます。

以上で、「手順3:Node.jsからjavaコマンドを呼ぶ出して実行するプログラムを作成」は完了です。

手順4:javaを呼び出して実行するNode.jsのプログラムを実行

「手順4:javaを呼び出して実行するNode.jsのプログラムを実行」に関してご説明します。

作成したNode.jsのプログラムを実行する方法をご紹介します。


以下のディレクトリ構造になっていることを確認しましょう。

$ tree
.
├── node-test.js
└── test_java_dir
    ├── test.class
    └── test.java

1 directory, 3 files


作成したNode.jsのプログラムを実行するために以下のコマンドを実行します。

$ node node-test.js 
Hi!!


上記のように「Hi!!」が表示された場合、Node.jsからjavaコマンドを呼び出して実行できたことになります。

以上で、「手順4:javaを呼び出して実行するNode.jsのプログラムを実行」は完了です。
 

上記の4手順で、簡単にNode.jsからjavaコマンドを呼び出して実行できました。

Node.jsで外部コマンドを呼び出して実行する方法

「Node.jsで外部コマンドを呼び出して実行する方法」に関してご紹介します。

Node.jsの公式ドキュメントを参照したところ、以下の方法でNode.jsから外部コマンドを呼び出して実行できます。

★Node.jsで外部コマンドを呼び出して実行する方法★
① execを利用する方法
② spawnを利用する方法

参照:Node.jsの公式ドキュメント


「exec」と「spawn」の差異に関して簡単に以下にまとめます。

★execとspawnの差異★
・exec
 → ある程度情報が溜まってからNode.jsに情報を返却(バッファ型
 → デフォルトだと200KB情報が溜まってからNode.jsに情報を返却

・spawn
 → 逐一Node.jsに情報を返却(ストリーム型

参照:execとspawnの違い


以上が、「Node.jsで外部コマンドを呼び出して実行する方法」となります。

【まとめ】Node.jsからjavaアプリを呼び出して実行する手順

今回の記事を通して、「Node.jsからjavaアプリを呼び出して実行する手順」をご紹介することで、以下の悩みを解消しました。

★悩み★
・Node.jsからjavaで実装されたアプリを呼び出して実行できないかな。
・Node.jsからjavaコマンドを呼び出して実行する手順を知りたいなぁ。
・Node.jsからjavaコマンドの出力結果を受け取ることができるのだろうか。


Node.jsからjavaコマンドを呼び出して実行する手順は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント