JVMを必要とせずにJavaからスタンドアロン(またはライブラリ)マシンコードにコンパイルする方法はありますか?
JVMを必要とせずにJavaからスタンドアロン(またはライブラリ)マシンコードにコンパイルする方法はありますか?
回答:
以前はGCCの一部であったGCJというツールがありましたが、削除されました。現在、GCCサイト内のすべてのリンクは、GCJ以外の同等のリンクにリダイレクトされます。
注意:コメントはすべて、GCJを使用してJavaをネイティブコードにコンパイルできるという私の元の回答を参照しています。
はい!
オラクルは、ネイティブイメージをサポートするGraalVmに取り組んできました。ここをチェックしてください:https: //www.graalvm.org/
ネイティブイメージ GraalVMSDKのネイティブイメージ機能は、Javaアプリケーションの起動時間を改善し、フットプリントを小さくするのに役立ちます。事実上、JVM(任意のプラットフォーム)で実行されるバイトコードを、特定のOS /プラットフォームのネイティブコードに変換します。これがパフォーマンスの源です。優れたパフォーマンスを実現するために、積極的な事前(AOT)最適化を使用しています。
続きを見る:
Windows
おもちゃのプログラムだけで機能しますが、より高度なものや、を使用する場合GUI
はまだ十分ではありません。Twitter
おそらくLinux
何も使用せずに使用しますGUI
が、私がコミュニティのものを試しただけで、おそらく商用バージョンも使用しています。いくつかのユースケースでは機能するかもしれWindows
ませんが、Javaデスクトップアプリケーションはそれらの1つではないため、プロジェクトは少しがっかりします。Excelsior JET
これを確実に行うことができましたが、現在は廃止されています。
Excelsior JETは、商用のJavaからネイティブのコードコンパイラです。ただし、2019年5月に廃止されました。
はい、JVMのJITはまさにそれを行います。
実際、実行時のコードの使用方法に基づいて特定のプラットフォーム用に最適化されたコードを生成できるため、事前にコードをコンパイルするよりも高速なコードを生成できます。
バイトコードを動的にロードして実行できるため、非常に高い割合がネイティブコードにコンパイルされている場合でも、JVMは常に関与します。
別の可能性はですRoboVM
。しかし、それだけで動作しているようですLinux
、iOS
とMac OS X
。
今日の時点で、プロジェクトが死んだと主張するオンラインのいくつかの投稿とは対照的に、プロジェクトはまだいくらか生きているようです。