Gibt es eine Möglichkeit, von Java zu eigenständigem (oder Bibliotheks-) Maschinencode zu kompilieren, ohne dass eine JVM erforderlich ist?
java
compilation
native-code
Barroco
quelle
quelle
Antworten:
Früher gab es ein Tool namens GCJ, das Teil von GCC war, aber es wurde entfernt . Jetzt verweisen alle Links auf der GCC-Site auf ihre Nicht-GCJ-Entsprechungen.
NB: Die Kommentare bezogen sich alle auf meine ursprüngliche Antwort, wonach Sie Java mit GCJ zu nativem Code kompilieren können.
quelle
Ja!
Oracle hat an GraalVm gearbeitet, das native Images unterstützt. Überprüfen Sie hier: https://www.graalvm.org/
Mehr sehen:
Zusammenfassung
https://www.graalvm.org/docs/getting-started/#native-images
Demos: Native Images für einen schnelleren Start
https://www.graalvm.org/docs/examples/native-list-dir/
Detailliert: "Vorzeitige Kompilierung"
https://www.graalvm.org/docs/reference-manual/aot-compilation/
quelle
Windows
nur Spielzeugprogramme funktionieren, aber alles, was fortgeschrittener ist und / oder wenn man ein verwendet,GUI
noch nicht ganz da ist.Twitter
verwendet wahrscheinlichLinux
ohne,GUI
aber sie verwenden wahrscheinlich auch die kommerzielle Version, während ich nur die Community ausprobiert habe. Es kann für einige Anwendungsfälle aber Java funktionierenWindows
Desktopanwendungen gehören nicht dazu, was das Projekt dennoch etwas enttäuschend macht.Excelsior JET
könnte dies zuverlässig tun, aber es wird jetzt eingestellt.Excelsior JET ist ein kommerzieller Java-Compiler für nativen Code. Es wurde jedoch im Mai 2019 eingestellt.
quelle
Ja, die JIT in der JVM erledigt genau das für Sie.
Tatsächlich kann es schnelleren Code erzeugen als das vorherige Kompilieren des Codes, da es Code generieren kann, der für die spezifische Plattform optimiert ist, basierend darauf, wie der Code zur Laufzeit verwendet wird.
Die JVM ist immer beteiligt, auch wenn ein sehr hoher Prozentsatz zu nativem Code kompiliert wird, da Sie Bytecode dynamisch laden und ausführen können.
quelle
Eine andere Möglichkeit wäre
RoboVM
. Es scheint jedoch nur zu funktionierenLinux
,iOS
undMac OS X
.Bis heute scheint das Projekt noch etwas lebendig zu sein, im Gegensatz zu einigen Online-Posts, in denen behauptet wird, das Projekt sei tot .
quelle