Új hozzászólás Aktív témák
-
DarkByte
addikt
válasz direwolf #5985 üzenetére
Tud akár egyetlen binárisként is menni, nézz rá a GraalVM-re.
Vagy nézd meg a Java Card platformot (kb. az összes SIM kárty, bankkártya, e-személyi alapja), az is egy Java-ból fordított natív kód.De a "normál" JVM ami a saját kis runtime-jával jön is ezt csinálja, csak te nem látsz exe-t, de a VM előfordítja memóriába (disk cache-be) x86 vagy ARM kódra az egész bytecode-ot és utána kezdi futtatni.
A bytekódra tekints úgy mint egy absztrakció. Nagyon bután lehet interpreter-es módon is futtatni úgy hogy emulálod azt a virtuális processzort amire definiálva van, meg úgy is hogy előfordítod az egészet a cél platformra architektúrájára. Minden modern JVM utóbbit csinálja, a VM rész az elnevezésben félrevisz. Az interpreter-es megoldás az a hőskor. Lásd.
A JRE része a standard Java kód library-k. Ezek szintén natív kódban vannak megvalósítva és ezért is kell platformtól függően más JRE-t telepítened. Ez köti össze a Java programot univerzálisan az OS-el. De ez pont olyan absztrakcióként működik mint egy OpenGL vagy Vulkan, vagy SDL2.
Az Android féle JVM amúgy speciális, a bytekód nem kompatibilis az asztali Java-val, saját Dalvik VM-jük futtatja a dex fájlokat. De Android 5 óta ez is telepítési időben átforgatja natív kódra a bytekódot, ahogy a linkelt StackOverflow válasz is írja.
A Java ettől még nem állítom hogy nem lesz valamivel lassabb lesz mint a natív, szimplán az absztrakció okán, a hordozhatóságnak van költsége. De közel sem annyira már mint a régmúltbeli beidegződések sejtetik.
[ Szerkesztve ]
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Promenade Publishing House Kft.
Város: Budapest