Hirdetés

Jelenleg azt vitatja, hogy a következő alkalmazáshoz Java-t kíván-e használni, vagy natív eszközkészleteket és kereteket kíván-e használni? Szeretné tudni, hogy milyen előnyöket nyújt a Java a natív programozáshoz egy alkalmazás számára? Olvassa tovább, hogy megtudja!

Mi a natív alkalmazás?

A natív alkalmazás olyan program, amelyet kifejezetten egy operációs rendszerhez (OS) és esetleg az adott operációs rendszert futtató hardverhez írtak. Leginkább olyan nyelven írják, mint például C / C ++. A C / C ++ forráskódot egy fordító segítségével egy objektumformára fordítják, amelyet azután a szükséges könyvtárak összekapcsolásával végrehajtható fájlba állítanak össze. Az így felépített program az adott hardveren és operációs rendszeren fog futni, amelyre épül, de előfordulhat, hogy más rendszerekben nem fog megfelelően működni.

Natív végrehajtható fájl előkészítése

Miért nem hordozható az natív alkalmazások?

Egy olyan nyelv fordítója, mint például a C / C ++ fordítja a forráskód-utasításokat gépi nyelvre a célzott CPU számára. Ha megkísérelte ezt a kódot egy másik CPU-n futtatni, akkor lehet, hogy a program nem működik helyesen (vagy egyáltalán nem működik), mivel a fordított kódban szereplő gépi nyelvi utasításokat ez a CPU nem támogatja.

instagram viewer

Ezenkívül az új operációs rendszer különbözhet az eredetitől, és esetleg nem is ismeri fel a programfájlt futtathatóként. Ennek oka a különböző operációs rendszerek (például Windows, Linux, MacOS stb.) Végrehajtható fájljainak eltérő formátuma.

A hordozhatóság olyan nagy kérdés a natív alkalmazásoknál, hogy ha csak a fordítót frissítik a következő verzióra, akkor törésveszélyes változtatásokat vezethet be. Előfordulhat, hogy a kódot rögzíteni kell az újabb fordítóval való együttműködéshez. Mint ilyen, a forráskód fröccsent az úgynevezett IFDEF Gyakori a hardver-, operációs rendszer- vagy fordítóspecifikus megoldások elkülönítése.

Az alábbiakban egy kis kódrészlet található BZLib tömörítési könyvtár amely szemlélteti a IFDEFs a platform sajátosságainak elkülönítése:

#ifdef _WIN32. # tartalmazza # ifdef kicsi / * a Windows.h meghatározza a kicsi a char * / # undef kicsi. # endif. # ifdef BZ_EXPORT. # definiálja a BZ_API (func) WINAPI func. # definiálja a BZ_EXTERN külsőt. # else / * az ablakok importálása dinamikusan * / # define BZ_API (func) (WINAPI * func) # definiálja a BZ_EXTERN értéket. # endif. #más. # definiálja a BZ_API (func) func-ot. # definiálja a BZ_EXTERN külsőt. #endif.

Forráskód-hordozhatóság az operációs rendszerekben

Ezt a helyzetet bizonyos mértékig enyhíthetjük, ha a C / C ++ forráskódot újra összeállítják az új CPU-hoz. Az új processzor operációs rendszere azonban eltérő lehet. És a forráskód nem fordulhat elő változások nélkül, legyen az nagy vagy kisebb. Még az operációs rendszer verzióinak kisebb változásaihoz szükség lehet bizonyos forráskód-változtatásokra.

És ha különféle operációs rendszereket veszünk figyelembe, mint például a Windows és a Linux / UNIX, a hordozhatóság teljesen új labdajáték. Hacsak nem használ olyan eszközkészletet vagy keretrendszert, amely teljes mértékben elválasztja Önt az operációs rendszertől, a forráskód hordozhatósága lehetetlen. Ennek oka az, hogy az operációs rendszer felülete teljesen különbözik ezek között a rendszerek között. Ha a kód legtávolabbi sarkában közvetlenül használja az operációs rendszer primitívjeit, akkor a kód nem lesz hordozható ezen a különféle operációs rendszeren keresztül.

Miben különbözik a Java?

Ebben a forgatókönyvben a java új paradigmát, a szoftverfejlesztési új módszert kínál. Amikor a java-ban programozol, akkor az a célpontja Virtuális gép. Egy ilyen gép fogalomszerűen létezik, és a java nyelv interfészeket biztosít a gép elleni programozáshoz. Lekérdezheti például a rendelkezésre álló memória mennyiségét, a processzorok számát, a virtuális gép hálózati interfészeit stb.

Virtuálisgép végrehajtó kódja

Hogyan épülnek a Java alkalmazások?

A java nyelv olyan java fordítót biztosít, amely a forráskódot objektumkódra fordítja. Az objektumkódot ezután a java virtuális gép, amely a fordítótól különálló program. Az operációs rendszer viszont a java virtuális gépet csupán egy másik, az adott operációs rendszeren futó programnak tekinti.

A hordozhatóság terhe most az alkalmazás-programozótól a java virtuális gép gyártójáig terjedt. Az alkalmazás programozója a szoftvert a java nyelv és a java primitívjeivel használja A virtuális gép felelős ezen primitíveknek a gazda operációs rendszerre történő fordításáért felszerelés. Amikor megjelenik az operációs rendszer új verziója, a gyártó felelőssége frissíteni a java virtuális gépet, hogy az megfelelően működjön az új operációs rendszeren.

Java programok készítése

Milyen előnyei vannak a Java virtuális gépnek?

Mint korábban említettük, a java virtuális gép az operációs rendszer és a hardver virtuális nézetét biztosítja az alkalmazás programozójának. Ez a virtuális nézet különféle interfészek és módszerek formájában van, és arra szolgál, hogy megkülönböztesse az alkalmazást programozót a gazda operációs rendszer és a mögöttes hardver különbségeitől. Így az alkalmazásprogramozó hozzáférhet olyan létesítményekhez, mint például egy Windowing Toolkit, Networking, 3D grafika, több CPU stb. anélkül, hogy alacsony szintű hívásokhoz kellene fordulniuk, amelyek a programot nem hordozhatóvá teszik.

Java programot írtunk, és a java fordítóval fordítottuk. A kapott objektum kódja (az úgynevezett bájt kód) egy másik gazdagépen futó, különböző hardveren futó operációs rendszerre szállítható, és probléma nélkül kell futnia.

JIT fordító

A java virtuális gép a A JIT fordítója a bájtkód optimalizálása kifejezetten a cél CPU-hoz. A JIT jelentése Épp időben és utal a futásidejű optimalizálásokra, amelyeket a JVM alkalmaz a bájtkódra, hogy ez jobban működjön az aktuális CPU-n.

A Java virtuális gép használatának további előnye, hogy különböző optimalizálásokat alkalmazhat különböző felhasználási esetekre, mindegyik azonos bájtkóddal. Például az Oracle JVM két lehetőséget kínál a bájtkód futtatásához: szerver mód és kliens mód. A szerver mód optimális a hosszú futású szerver programokhoz, míg az ügyfél JVM mód a gyors válaszidőhöz, mivel valószínűleg interaktív módban használják.

Összefoglalva: egy natív alkalmazás épül egy adott hardverhez és operációs rendszerhez. A java alkalmazás viszont a Építsd egyszer futtass bárhol filozófia azáltal, hogy a JVM futtatja az összeállított byte kód utasításokat. Noha a natív alkalmazásokat hagyományosan inkább teljesítőképesnek tekintik, mint a java alkalmazásokat, ez nem mindig igaz, mert a JVM a JIT fordítót használja.

Kidolgozott egy natív alkalmazást, és a hordozhatóság miatt át kellett váltania a Java-ra? Vagy fordítva teljesítményproblémák miatt? Tudassa velünk az alábbi megjegyzésekben.

Kép jóváírása: Profit_Image a Shutterstock.com webhelyen keresztül