web-dev-qa-db-ja.com

Javaをネイティブコードにコンパイルできますか?

JVMを必要とせずにJavaからスタンドアロン(またはライブラリ)マシンコードにコンパイルする方法はありますか?

67
barroco

以前はGCCの一部であったGCJというツールがありましたが、それは 削除済み です。現在、GCCサイト内のすべてのリンクは、非GCJの同等のものにリダイレクトされます。

NB:コメントはすべて、JavaをGCJを使用してネイティブコードにコンパイルできるという私のオリジナルの回答を参照しています。

37
James Kingsbery

Excelsior JET は、ネイティブコードコンパイラへの商用Javaです。

16
Mark

はい!

Oracleは、ネイティブイメージをサポートするGraalVmに取り組んできました。ここで確認してください: https://www.graalvm.org/

ネイティブイメージGraalVM SDKのネイティブイメージ機能は、Javaアプリケーションの起動時間を短縮し、より小さなアプリケーションを提供します。フットプリント:事実上、JVM(任意のプラットフォーム)で実行されるバイトコードを特定のOS /プラットフォームのネイティブコードに変換します-これがパフォーマンスの源泉です。パフォーマンス。

続きを見る:

12
RobAu

はい、JVMのJITはまさにそれを行います。

実際、実行時のコードの使用方法に基づいて特定のプラットフォーム向けに最適化されたコードを生成できるため、コードを事前にコンパイルするよりも高速なコードを生成できます。

非常に高い割合がネイティブコードにコンパイルされる場合でも、バイトコードを動的にロードして実行できるため、JVMは常に関与しています。

10
Peter Lawrey