这几天和之前工作的同事聊了一下Java和Python的一些底层。之前工作的同事目前在IBM中供职,目前IBM已经在系统应用架构中开始尝试语言异构以发挥出各自的优点弥补对方的缺点。我觉的这是一个趋势,为什么这么说呢?任何编程语言哪怕在未来的某个时间点中再创造出一个全新的编程语言,这些编程语言无法在各个方面都表现出特别的优势。说白了就是各个编程语言再强也只是在某方面或者某几个方面很强,不可能全部都强。你说C语言快,内存管理起来比较麻烦,你说Java不好学,但速度较快,安全性高、性能稳定、生态完善、人才济济;你说Python好学简单易用,但速度慢;你说go语言天生为高并发而生,但生态不完善,人才较少。所以各个语言都是各有长处也各有短板。所以我们就必须考虑进行融合取各个编程语言的长处补齐短板,这样才能无敌。
这里我就以目前市场上两大主编程语言Java和Python为例让Java调用Python的脚本。
args = sys.argv[0:]
print(args)
a=1
b=2
c=3
print(a+b+c)
package com.nnd.bean;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class JavaCallingPython {
public static void main(String[] args) throws IOException, Exception {
// Python脚本路径及参数
String pythonScript = "C:\\Users\\gaoke\\Desktop\\test.py";
// 要传递的参数列表
String[] arguments = {"1", "2abv"};
ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScript);
processBuilder.command().addAll(Arrays.asList(arguments));//向python中传入参数是需要加,不传入的时候不需要这句代码
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
int exitCode = process.waitFor();
System.out.println("Exit Code: " + exitCode);
System.out.println("Output:\n" + output.toString());
}
}