Reklama
V súčasnosti diskutujete o tom, či použiť java pre ďalšiu aplikáciu, alebo či použijete natívne súbory nástrojov a rámce? Chceli by ste vedieť, aké výhody poskytuje java oproti natívnemu programovaniu aplikácie? Čítajte ďalej a zistite to!
Čo je to natívna aplikácia?
Natívna aplikácia je program napísaný špeciálne pre operačný systém (OS) a prípadne pre konkrétny hardvér, na ktorom je tento operačný systém spustený. Väčšinou sa píše v jazyku ako C / C ++. Zdrojový kód C / C ++ sa skompiluje do formy objektu pomocou kompilátora, ktorý sa potom zostaví do spustiteľného súboru prepojením požadovaných knižníc. Program vytvorený týmto spôsobom bude bežať na konkrétnom hardvéri a operačnom systéme, pre ktorý je vytvorený, ale nemusí fungovať správne na iných systémoch.
Prečo nie sú natívne aplikácie prenosné?
Kompilátor pre jazyk, napríklad C / C ++, prekladá príkazy zdrojového kódu do strojového jazyka pre cieľový procesor. Keď sa pokúsite spustiť tento kód na inom CPU, program nemusí pracovať správne (alebo vôbec), pretože tento procesor nemusí podporovať inštrukcie jazyka stroja v kompilovanom kóde.
Nový operačný systém sa okrem toho môže líšiť od pôvodného a nemusí ani programový súbor rozpoznať ako spustiteľný súbor. Je to kvôli rôznym formátom súborov, ktoré sa používajú pre spustiteľné súbory v rôznych operačných systémoch (napríklad Windows, Linux, MacOS atď.).
Prenosnosť je taký veľký problém s natívnymi aplikáciami, že iba aktualizácia kompilátora na ďalšiu verziu môže priniesť zásadné zmeny. Možno bude potrebné opraviť váš kód, aby ste mohli pracovať s novším kompilátorom. Ako taký, postriekanie zdrojového kódu s tým, čo je známe ako IFDEF Príkazy na izolovanie špecifických riešení týkajúcich sa hardvéru, OS alebo kompilátora sú bežné.
Toto je malý útržok kódu z Knižnica komprimácie BZLib čo ilustruje použitie IFDEFs izolovať zvláštnosti platformy:
#ifdef _WIN32. # include # ifdef malé / * windows.h definujú malé znaky * / # undef small. # koniec Ak. # ifdef BZ_EXPORT. # define BZ_API (func) WINAPI func. # define BZ_EXTERN navonok. # else / * dynamicky importovať Windows dll * / # define BZ_API (func) (WINAPI * func) # define BZ_EXTERN. # koniec Ak. #else. # define BZ_API (func) func. # define BZ_EXTERN navonok. #koniec Ak.
Prenosnosť zdrojového kódu naprieč operačnými systémami
Túto situáciu možno do určitej miery zmierniť opätovným zostavením zdrojového kódu C / C ++ do nového CPU. Operačný systém pre nový procesor sa však môže líšiť. A zdrojový kód sa nemusí kompilovať bez zmien, či už veľkých alebo menších. Aj malé zmeny vo verziách operačného systému môžu vyžadovať určité zmeny zdrojového kódu.
A keď uvažujete o odlišných operačných systémoch ako Windows a Linux / UNIX, prenosnosť je úplne nová loptová hra. Pokiaľ nepoužívate súpravu nástrojov alebo rámec, ktorý vás úplne izoluje od operačného systému, prenosnosť zdrojového kódu nie je možná. Je to preto, že rozhranie operačného systému je medzi týmito systémami úplne odlišné. Ak v najvzdialenejších rohoch vášho kódu použijete priamo akékoľvek primitívy operačného systému, váš kód nebude prenosný cez tieto rôzne operačné systémy.
Ako sa Java líši?
To je v tomto scenári, že java prináša novú paradigmu, nový spôsob vytvárania softvéru. Pri programovaní v jave sa zameriavate na a virtuálny prístroj. Takýto stroj existuje ako koncept a jazyk java poskytuje rozhrania na programovanie proti tomuto stroju. Môžete napríklad dotazovať množstvo dostupnej pamäte, počet CPU, sieťové rozhrania atď. Virtuálneho počítača.
Ako sa vytvárajú Java aplikácie?
Jazyk java poskytuje kompilátor java, ktorý prevádza zdrojový kód do kódu objektu. Kód objektu potom vykoná java virtuálny stroj, čo je samostatný program od kompilátora. Operačný systém zase považuje virtuálny stroj java za ďalší program bežiaci na tomto OS.
Bremeno prenosnosti sa teraz presunulo z aplikačného programátora na dodávateľa virtuálnych strojov java. Aplikačný programátor píše softvér pomocou primitívov jazyka java a java virtuálny stroj je zodpovedný za preklad týchto primitívov do hostiteľského operačného systému zariadení. Keď vyjde nová verzia OS, je zodpovednosťou dodávateľa aktualizovať java virtuálny stroj tak, aby v novom OS fungoval správne.
Aké sú výhody Java Virtual Machine?
Ako už bolo uvedené, virtuálny stroj java poskytuje aplikačnému programátorovi virtuálny pohľad na operačný systém a hardvér. Toto virtuálne zobrazenie je vo forme rôznych rozhraní a metód a slúži na izoláciu aplikačného programátora od rozdielov v hostiteľskom OS a základnom hardvéri. Aplikačný programátor tak môže pristupovať k zariadeniam, ako sú Windowing Toolkit, Networking, 3D grafika, viac CPU, atď. bez nutnosti uchýliť sa k hovorom na nízkej úrovni, ktoré nakoniec spôsobia neprenosnosť programu.
Program java je napísaný a kompiluje sa pomocou kompilátora java. Výsledný kód objektu (nazývaný bajtový kód) je možné prenášať na iný hostiteľský operačný systém bežiaci na inom hardvéri a mal by bežať bez problémov.
Kompilátor JIT
Virtuálny stroj java používa Kompilátor JIT na optimalizáciu bajtového kódu špecificky pre cieľový procesor. JIT znamená Práve včas a odkazuje na optimalizácie runtime, ktoré JVM aplikuje na bajtový kód, aby ho lepšie bežal na aktuálnom CPU.
Ďalšou výhodou použitia Java Virtual Machine je to, že môže aplikovať rôzne optimalizácie pre rôzne prípady použitia, všetko s rovnakým bajtovým kódom. Napríklad Oracle JVM poskytuje dve možnosti na spustenie bajtového kódu: režim servera a režim klienta. Režim servera je optimalizovaný pre dlhodobo prevádzkované serverové programy, zatiaľ čo režim klienta JVM optimalizuje časy rýchlej odozvy, pretože sa pravdepodobne používa v interaktívnom režime.
V súhrne je natívna aplikácia vytvorená pre konkrétny hardvér a operačný systém. Na druhej strane nasleduje aplikácia java a Zostavte raz spustiť kdekoľvek filozofia tým, že má JVM spustené pokyny na zostavenie bajtového kódu. Aj keď natívne aplikácie boli tradične vnímané ako výkonnejšie ako aplikácie Java, nemusí to byť vždy pravda kvôli použitiu kompilátora JIT v JVM.
Vyvinuli ste natívnu aplikáciu a kvôli prenosnosti ste ju museli zmeniť na java? Alebo naopak z dôvodu problémov s výkonom? Dajte nám vedieť v komentároch nižšie.
Obrázok Kredit: Profit_Image cez Shutterstock.com