Czy istnieje program lub wtyczka do Eclipse, który tworzy plik .exe bez tworzenia pliku .jar? Co właściwie robi JVM , gdy się klika w plik .jar? Ładuje klasy, wypakowuje do temp?

- Rejestracja:ponad 8 lat
- Ostatnio:39 minut
- Lokalizacja:U krasnoludów - pod górą
- Postów:4707
Tu masz opisane co robi JVM:
https://docs.oracle.com/javase/specs/jvms/se12/html/index.html
Ale generalnie nie musi nic wypakowywać.

- Rejestracja:ponad 9 lat
- Ostatnio:około 8 godzin
- Postów:373
Jak budujesz projekt Mavenem w Eclipsie to możesz użyć tego: http://launch4j.sourceforge.net/. Podpinasz pod projekt i w targecie wyrzuca Ci jara jak i exe'ka.

- Rejestracja:ponad 8 lat
- Ostatnio:około miesiąc
- Lokalizacja:Śląsk
- Postów:248
W javie nie kodze ale nie chodzi po porstu o wymagane srodowisko uruchomieniowe? Taki C# zostawia pliki w formie .dll potrzebne do uruchomienia aplikacji i potrzebny w przypadku c# jest .net framework. To normalne ze aplikacje po za plikiem .exe maja swoje wlasne pliki potrzebne do uruchomienia :)



- Rejestracja:ponad 9 lat
- Ostatnio:około miesiąc
- Postów:308
Czyli nie powinno byź różnicy w czasie otwierania programu miedzy .exe, a .jar?

- Rejestracja:prawie 20 lat
- Ostatnio:około godziny
Otwieranie .jar jest jak otwieranie .jpg - system szuka sobie skojarzonego programu do odpalania JARków bądź JPGów.
.jpg też możesz zamienić na .exe, ale pytanie jak. Możesz do pliku .exe zapakować .jpg razem z Photoshopem i wtedy po odpaleniu tego .exe będzie się odpalać Photoshop wyświetlający JPGa. Takie rozwiązanie będzie bardzo zasobożerne. Szybsze byłoby zostawienie .jpg i odpalenie go np przez wbudowaną w system pokazywarkę zdjęć.
Co właściwie robi JVM , gdy się klika w plik .jar? Ładuje klasy, wypakowuje do temp?
JVM nie rozpakowuje wstępnie JARów sam z siebie, ale niektóre biblioteki same to robią. Np w JARze jest 5 EXEków jako zasoby i żeby je odpalić trzeba je wypakować. Sam JVM natomiast traktuje JAR jako zwykłego ZIPa i na bieżąco strumieniuje zasoby do pamięci. Stąd np różnice w wydajności w zależności od tego czy JAR ma włączoną kompresję czy nie. Kompresja zwalnia odczytywanie JARa. Przykład tutaj: https://4programmers.net/Forum/Java/302457-program_kompilowany_chodzi_szybciej_niz_budowany?p=1437477#id1437477
PS:
JARa da się zamienić na natywną binarkę z wbudowanym okrojonym JVMem bez JITa i np dynamicznego ładowania bajtkodu, ale za to z całym bajtkodem skompliowanym do kodu natywnego. Działa tak https://www.graalvm.org/docs/reference-manual/aot-compilation/ Są jednak chyba też inne rozwiązania jak https://www.excelsiorjet.com/ które mają chyba więcej możliwości. Są to jednak rozwiązania niszowe, gdyż pierwsze jest jeszcze we wczesnej fazie rozwoju, a drugie kosztuje gruby hajs.
vpiotr