Melaksanakan Aplikasi Java dalam Proses Berasingan dengan Kebebasan Platform
Dalam bidang pembangunan Java, ia menjadi perlu untuk melaksanakan aplikasi dalam proses berasingan sementara mengekalkan kebebasan platform. Ini menimbulkan persoalan: Bolehkah aplikasi Java dimuatkan dalam proses berasingan dengan menyatakan nama yang layak sepenuhnya, melangkaui had platform?
Had Semasa
Secara tradisinya, Java aplikasi dilaksanakan menggunakan kaedah Runtime.getRuntime().exec(COMMAND), yang menggunakan arahan khusus platform. Pendekatan ini memberikan cabaran untuk keserasian merentas platform.
Penyelesaian Ideal
Senario yang ideal akan melibatkan kaedah ringkas yang menerima nama kelas aplikasi dan melaksanakannya dalam proses yang berasingan, seperti yang ditunjukkan oleh binaan berikut:
EXECUTE.application(CLASS_TO_BE_EXECUTED);
Pendekatan Bebas Platform
Menarik inspirasi daripada respons sebelumnya, kami boleh menggunakan sifat sistem Java untuk dapatkan maklumat penting berkenaan laluan arahan Java dan classpath dalam cara yang bebas platform. Coretan kod berikut menunjukkan pendekatan ini:
public final class JavaProcess { private JavaProcess() {} public static int exec(Class klass, List<String> args) throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; String classpath = System.getProperty("java.class.path"); String className = klass.getName(); List<String> command = new LinkedList<>(); command.add(javaBin); command.add("-cp"); command.add(classpath); command.add(className); if (args != null) { command.addAll(args); } ProcessBuilder builder = new ProcessBuilder(command); Process process = builder.inheritIO().start(); process.waitFor(); return process.exitValue(); } }
Untuk menggunakan kaedah ini, anda akan menggunakan arahan mudah:
int status = JavaProcess.exec(MyClass.class, args);
Dengan menghantar kelas sebenar dan bukannya perwakilan rentetannya, kami manfaatkan fakta bahawa kelas mesti sudah ada dalam laluan kelas untuk pendekatan ini berjaya.
Atas ialah kandungan terperinci Bolehkah Aplikasi Java Dilaksanakan dalam Proses Berasingan dengan Kebebasan Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!