8712. Running C and Java in Node.jsNodejs and Java
Introduce how to compile and run c program and java application in Node.js.
1. Prerequisites
Install gcc and JDK to compile c and java.
2. Source Files
Create a new folder named NodeCompile. Then, create ‘HelloC.c’ with following contnent.
#include <stdio.h>
int main(){
printf("Hello C!\n");
}
Create HelloJava.java
class HelloJava {
public static void main(String[] args) {
System.out.println("Hello Java!"); // Display the string.
}
}
3. Node Files
compiler.js
var spawn = require('child_process').spawn;
var path = require('path');
// compile the given c source file and execute it.
exports.clang = function (srcfile) {
// if srcfile = 'main.java'
var filename = path.parse(srcfile).name; // main
var extension = path.parse(srcfile).ext; // .java
if (extension === ".c") {
var args_compile = []; //['codec.c', '-o','codec.out']
args_compile[0] = srcfile;
args_compile[1] = '-o';
args_compile[2] = filename + '.out';
var cmd_run = './'+filename + '.out';
this.execute('gcc', args_compile, cmd_run, []);
} else {
console.log(srcfile + " is not a c file.");
}
}
// compile the given java source file and execute it.
exports.java = function (srcfile) {
// if srcfile = 'main.java'
var filename = path.parse(srcfile).name; // main
var extension = path.parse(srcfile).ext; // .java
if (extension === ".java") {
var args_compile = [];
args_compile[0] = srcfile;
var args_run = [];
args_run[0] = filename;
this.execute('javac', args_compile, 'java', args_run);
} else {
console.log(srcfile + " is not a java file.");
}
}
// compile source file and execute it.
exports.execute = function (cmd_compile, args_compile, cmd_run, args_run) {
//var compile = spawn('gcc', ['codec.c', '-o','codec.out']);
//var compile = spawn('javac', ['CodeJava.java']);
var compile = spawn(cmd_compile, args_compile);
compile.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
compile.stderr.on('data', function (data) {
console.log('stderr: ' + String(data));
});
compile.on('close', function (data) {
if (data === 0) {
var run = spawn(cmd_run, args_run);
run.stdout.on('data', function (output) {
console.log(String(output));
});
run.stderr.on('data', function (output) {
console.log('stderr: ' + String(output));
});
run.on('close', function (output) {
console.log('stdout: ' + output);
})
}
});
};
run_c.js
var compiler = require('./compiler');
compiler.clang('HelloC.c');
run_java.js
var compiler = require('./compiler');
compiler.java('HelloJava.java');
4. Testing
$ node run_c.js
$ node run_java.js