2

これはかなり一般的な質問に見えますが、同時にコンパイルしないjavacの技術的な理由は何ですか?私はEclipseコンパイラが並列であることを読んでいます。なぜjavacではないのですか?Javacが複数のコアで動作しないのはなぜですか?

+1

「非常に技術的な」理由は、Sun/Oracleがjavacコンパイラをそのように設計/実装していないということです。 Oracleにお金を稼ぐ製品を提供するという点で、もっと重要なことがあると思います。 –

+0

open jdkについてはどうですか? – Snicolas

+0

どうしますか?同じ理由がそこに当てはまります。実際、OpenJDKは、Oracleのバッジ付きJDKリリースと同じコードベースの99.x%であり、同じチームによって開発されています。 –

答えて

-2

javacプログラムがシンプルで、内部並列の場合は、多くの競合状態を処理しなければならず、複雑になります。マルチコアを利用するには、複数のjavacプロセスを作成して同じ目標に達することができます。これはmakefileとgccがこのように動作するようです。

コンパイラが実際に並列に動作するように、私はEclipseのJavaコンパイラが例外であると言う任意のソースを見つけることができないのは非常に珍しいです

1

を「シンプルで愚かなことをしてください」。

eclipseには、複数のファイルを同時に並列にコンパイルする機能があります。これは、Eclipseに独自のJavaコンパイラが付属しているという事実とは無関係です。 javacを使用していた場合は、javacの複数のインスタンスを並行して実行できます。問題はありません。実際、それは正確には、複数のスレッドでビルドを実行するときに、mavenなどのビルドツールが行うことです。

+0

異なるモジュールで並列にコンパイルすることを意味しますか? Gradleもそうですが、ここでは1つのモジュールを並列にコンパイルすることについて実際に話しています。 – Snicolas

+0

@Snicolas私は、異なるファイルを並行してコンパイルすることを意味しました。同じモジュールの異なるファイルを並列にコンパイルすることも可能です(またはモジュールを持たないJavaバージョンではこれを行うことができます)。単一のファイルを並列にコンパイルすることはできません。 – sepp2k

関連する問題