Istnieje kilka narzędzi ( Excelsior JET itp.), Które twierdzą, że przekształcają aplikacje Java w natywne pliki wykonywalne ( *.exe
). Jednak rozumiem, że te narzędzia naprawdę tworzą po prostu natywne opakowania, które wywołują / wykonują java
z powłoki lub wiersza poleceń.
Jeśli to zrozumienie jest nieprawidłowe, nie rozumiem, jak mogłoby być. Jeśli działający JVM ( java
proces) jest zasadniczo bardzo wydajnym interpretatorem, ładującym kod bajtowy z plików klas Java w locie, to nie widzę, jak aplikacja Java (zbiór plików kodu bajtowego, który służy jako dane wejściowe do JVM) naprawdę przekształcone w plik wykonywalny.
Wynika to z faktu, że proces JVM jest już rodzimym plikiem wykonywalnym, który pobiera zestawy plików kodu bajtowego jako dane wejściowe. Scalenie tych plików kodu bajtowego i procesu JVM w pojedynczy, zunifikowany natywny plik wykonywalny nie wydaje się możliwe bez całkowitego przepisania JVM i wycofania się ze specyfikacji JVM.
Pytam więc: w jaki sposób te narzędzia faktycznie „przekształcają” pliki klasy Java w natywny plik wykonywalny, czy też?