Java アプリケーションはプラットフォームに依存せずに別のプロセスで実行できますか?

Barbara Streisand
リリース: 2024-11-03 17:17:03
オリジナル
936 人が閲覧しました

Can Java Applications Be Executed in Separate Processes with Platform Independence?

プラットフォームに依存しない別のプロセスで Java アプリケーションを実行する

Java 開発の領域では、アプリケーションを別のプロセスで実行する必要があります。プラットフォームの独立性を維持します。ここで疑問が生じます: Java アプリケーションは、プラットフォームの制限を超えて、完全修飾名を指定することで別のプロセスにロードできますか?

現在の制限

伝統的に、Javaアプリケーションは、プラットフォーム固有のコマンドを呼び出す Runtime.getRuntime().exec(COMMAND) メソッドを使用して実行されます。このアプローチには、クロスプラットフォームの互換性という課題があります。

理想的なソリューション

理想的なシナリオには、アプリケーション クラス名を受け入れてそれを実行する単純化されたメソッドが含まれます。次の構成で例示される別個のプロセス:

EXECUTE.application(CLASS_TO_BE_EXECUTED);
ログイン後にコピー

プラットフォームに依存しないアプローチ

以前の回答からインスピレーションを得て、Java のシステム プロパティを利用して、 Java コマンド パスとクラスパスに関する重要な情報をプラットフォームに依存しない方法で取得します。次のコード スニペットは、このアプローチを示しています。

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();
    }

}
ログイン後にコピー

このメソッドを呼び出すには、単純なコマンドを使用します。

int status = JavaProcess.exec(MyClass.class, args);
ログイン後にコピー

文字列表現の代わりに実際のクラスを渡すことにより、このアプローチを成功させるには、クラスがクラスパスにすでに存在している必要があるという事実を利用します。

以上がJava アプリケーションはプラットフォームに依存せずに別のプロセスで実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート