A Java-nak az a tulajdonsága, hogy le lehet fordítani közvetlen gépi kóddá is, alkalmassá teszi e arra, hogy olyan helyeken használjam, ahol a gyorsaság is szempont?
Ez nagyban függ attól, hogy milyen program és milyen környezetben fog futni. Egy modern gépen futtatott egyszerű, kevés adattal dolgozó program nem fog érezhetően lassabban futni. Másrészt nagyon nem mindegy, hogy mi a sebességben a szűk keresztmetszet. Ha online adatbázissal dolgozol, akkor jó eséllyel az adatbázis kapcsolat sávszélessége többet számít, mint a gépen futó általad írt kliens sebessége.
Általánosságban elmondható, hogy a Java (és a .NET) azért tud egyre nagyobb szerephez jutni, mert már nem a hardver a szűk keresztmetszet a sebesség szempontjából. Én a helyedben mindenképp a Java-val próbálkoznék, ha előre tekintesz még pár évet akkor a Java (és a .NET) egyre több teret nyer a C++ -szal szemben. Ráadásul sokrétűbb nyelv, több teret enged a specializációnak.
Muhaha, azt mondja platformfüggetlen.
Idézek: "Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders."
Átverés.
A kérdésre válaszolva: mit értesz az alatt, hogy a gyorsaság is szempont? Egy általános célú ablakos alkalmazás nem lesz látványosan lassab jáva alatt sem. Ami LÁTVÁNYOSAN lesz lassabb az a mindenféle számításigényes matematikai dolgok valamint ahol a C fordító inlineosít illetve normál függvényhívásokat hajt végre és a jáva fordító ezt nem tudja esetleg kioptimalizálni, és kénytelen virtuális függvénytáblát használni.
Azt tudom, hogy a .NET nem interpreter-alapú. Az CIL-alapú exéknek van egy ún. loader-fejrésze. Amikor elindítunk egy ilyen exét, a loader megkéri a .NETet, hogy fordítsa le gépi kódra (természetesen az adott gép hardverére optimalizálva) az exében lévő CIL-t (és az összes, általa hivatkozott szerelvényt), majd futtassa egy felügyelt környezeteben. Ez a fordítási folyamat a jittelés. A .NET 3.0-s progikra igaz, hogy mindössze 6%-kal lassabban futnak, mint a C-ben írt és gépi kódra fordított társuk. Jelenleg .NET 4.0-nál tartunk.
Valószínű, hogy a Java is így működik, de nem vagyok benne biztos. És a Javának éppen ez a CIL-kód a lelke, ahogyan a .NET-nek.
Egyrészt: szerelvény? :O Erre mondta .net bácsi hogy pofánveri ha valaki használni meri :D
Másrészt a jittelés (jit == just in time, igazából jit fordítás) független a nyelvtől, az adott virtuális gép dönti el hogy mit tegyen a kapott bytekóddal. Az a 6% meg egy fals érték lehet: matematikai számítások során SOKKAL lassabb, egyébként meg közel ugyanolyan gyors => átlagban nem sokkal lassabb.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!