-
zblakany
Cześć,
Czy ktoś z was kompilował jave do natywnej binarki? Jeśli tak to jakich narzędzi używaliście i jakie są potencjalne zagrożenia takiego rozwiązania.
Pozdrawiam,
Michał -
sleeper
Cześć,
a mogę spytać jakie mogło by być zastosowanie takiego rozwiązania ? Po co unikać idealnego środowiska uruchomieniowego jakim jest JVM i pozbawiać się jego zalet (garbage collector, ochrona wątków, kompilacja JIT i zarządzalność) ?
Odpowiadając na Twoje pytanie, to nigdy nic takiego nie robilem, natomiast wiem, że można tak Linux'a skompilować, żeby uruchamiał pliki .class jak zwykłe elf'y czy a.out'y. Ale do tego chyba i tak jest konieczna jakaś wirtualna maszyna.
pozdr.
Wojtek (SCJP od piątku :P) -
Lipson Earl Grey
Excelsior Jet http://www.excelsior-usa.com/jet.ht...
Ale jesli liczysz na wzrost wydajnosci to mozesz sie zdziwic, prawdopodobnie odnotujesz wzrost o jakies 10% ale mozliwe też ze spadek, glowny zysk jest taki ze JRE nie kompiluje przy starcie wiec szybciej sie urchomi pewnie, ale reszta bez wiekszej różnicy, kompilator zawrty w maszynie wirtualnej jest naprawde wydajny, sprawdz sam.
Jesli chodzi ci o wydajnosc to bardzo mozliwe ze wystarczy uruchamianie javy w wersji serwerowej "-server" z lini komend jako parametr, potrzebne jest do tego aby uzywac maszynki z JDK a nie samego JRE, bo wypisze na Windowsie ze nie moze znaleźć odpowiedniego dlla, w Linuxie pewnie powie to samo o so, zobacz ze w katalogu jre/bin masz dwa podkatalogi server i client,a w przypadku samego JRE (bez javac itd.) masz tylko client, mozesz przekopiowac katalog server albo w Linuxie pewnie symlink załatwi sprawe.
Maszynka w wersji server moze naprawde przyśpieszyc, w microbenchmarkach mozesz czasem zanotowac nawet 20 krotne przyspieszenie.
Excelsior Jet to fajna zabawka ale w wersji darmowej do sciagniecia twoje "exeki" beda dzialaly chyba tylko przez 30 dni.
Nie ma sensu na dłuższa mete korzystanie z takiego rozwiazania, dodatkowe gmatwanie a zysk wydajnosci żaden.
Jesli chodzi ci o odpalanie Javy poprzez exek to wystarczy maly programik korzystajacy z Invocation API - mozliwosc wystartowania maszyny Javy z poziomu C/C++, odsyłam do doumentacji odnośnie JNI. -
YouCan'tGoWrongWithStretchyPants
Wygrzebałem ten artykuł z zakładek.. jest poparty pomiarami.
http://www-106.ibm.com/developerwor...
Piotr pisał o prędkości aplikacji bez GUI, jeśli natomiast GUI jest problemem, spróbuj użyć JVM 1.5.
-
-
Anonim
hmmm... nie jestem specem od Javy ale dla mnie to czysta perwersja... wzrost (?) wydajności wątpliwy, a mogą się pojawić problemy charakterystyczne dla 'natywnych' aplikacji czyli wyciekanie pamięci, memory-violation, etc. Zasadniczo tracisz IMHO wszystkie zalety jakie daje Java i pewnie nic nie zyskujesz w zamian. Ale mogę się mylić :-))
-
YouCan'tGoWrongWithStretchyPants
A ja chyba rozumiem motywację tych ludzi.. jak porównuję prędkość z jaką uruchamiają się natywne aplikacje na moim maku i aplikacje java, pierwsza myśl, jaka mnie naszła to "może jeśli skompiluje je natywnie, będzie szybciej?". to jednak nie jest dobra droga.
fakt faktem - natywne programy chodzą mi jak burza, pomimo, że system był zainstalowany kawał czasu temu. programy w javie są w tym porównaniu jakby flegmatyczne, choć dotyczy to głównie momentu startu oraz gui. -
Anonim
cos w tym jest...
ale ja znam Jave i .NET glownie od strony rozproszonych aplikacji serwerowych, gdzie faktyczna wydajnosc nie jest az tak istotna jak np. stabilnosc, bezpieczenstwo (takze wykonywania kodu) i skalowalnosc. pod tym wzgledem Java i .NET raczej maja przewage nad aplikacjami natywnymi. -
Lipson Earl Grey
jesli chodzi o problemy natywnych aplikacji to nie dotyczy to JETa, z tego co pamietam on przy instalacji najpierw kompiluje rt.jar ktore znajdzie, innymi slowy przemienie całą jave łącznie z klasami i mechanizmami pozajezykowymi (garbage collector itd) na natywne. Ale na dłuższa mete JET nie ma raczej sensu, choc faktycznie uruchamianie jest znacznie szybsze niz w przypadku standardowej javy.
Jesli hodzi o GUI to faktycznie - 1.5, w J2SE5.0 nawet BufferedImage sa akcelerowane, wiec mozna ich uzywac bez problemu, nie martwiac sie o wydajnosc, w poprzednich wersjah JRE trzeba było kombinowac z VolatileImage(mozna modyfikować) i Toolkit'owymi powstalymi z getImage(read only), no i w tym drugim przypadku obowiazkowy MediaTracker :)
- Przeglądaj grona w kategorii Internet i Komputery
- Przeglądaj grona w okolicy Warszawa
- Załóż własne grono tematyczne
- Zostań moderatorem
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

