
Michael Cain
0
1547
152
Trenutno raspravljate hoćete li za sljedeću prijavu koristiti Java ili koristite izvorne alate i okvire? Želite li znati koje prednosti java nudi u odnosu na izvorno programiranje za aplikaciju? Pročitajte da biste saznali!
Što je nativna aplikacija?
Izvorna aplikacija je program napisan posebno za operativni sustav (OS), a možda i za određeni hardver koji radi na tom OS-u. Uglavnom je napisana na jeziku poput C / C ++. C / C ++ izvorni kôd sastavlja se u objektni obrazac pomoću kompajlera, koji se zatim sastavlja u izvršnu datoteku povezivanjem potrebnih biblioteka. Ovako izgrađen program pokrenut će se na specifičnom hardveru i OS-u za koji je izgrađen, ali možda neće raditi ispravno na drugim sustavima.
Zašto prijenosni programi nisu nativni?
Sastavljač za jezik kao što je C / C ++ prevodi izjave izvornog koda u strojni jezik ciljanog CPU-a. Kada pokušate pokrenuti ovaj kôd na drugom CPU-u, program možda neće ispravno raditi (ili uopće ne radi) jer taj stroj ne podržava upute za strojni jezik u sastavljenom kodu..
Pored toga, novi se operativni sustav može razlikovati od izvornog i možda neće prepoznati programsku datoteku kao izvršnu datoteku. To se događa zbog različitih formata datoteka koji se koriste za izvršne datoteke u različitim operativnim sustavima (kao što su Windows, Linux, MacOS itd.).
Prijenosnost je tako velik problem s izvornim aplikacijama da samo nadogradnja kompajlera do sljedeće verzije može uvesti velike promjene. Vaš kôd možda treba popraviti za rad s novijim sastavljačem. Kao takav, raspršivanje izvornog koda onim što su poznati ifdef izjave za izoliranje zaobilaznih zaborava u vezi s hardverom, OS-om ili kompajlerom su uobičajene.
Slijedi mali isječak koda iz BZLib biblioteke kompresije koji ilustrira uporabu ifdefs za izoliranje karakteristika platforme:
#ifdef _WIN32 # uključuju # ifdef small / * windows.h definiraju male do char * / # undef small # endif # ifdef BZ_EXPORT # definiraju BZ_API (func) WINAPI funkc # definiraju BZ_EXTERN extern # else / * uvoz windows dll dinamički * / # definirati BZ_API (func) (WINAPI * func) # definirati BZ_EXTERN # endif #else # definirati BZ_API (func) funkc # definirati BZ_EXTERN vanjski #endif
Prenosljivost izvornog koda u svim operativnim sustavima
Ova se situacija može donekle ublažiti ponovnim sastavljanjem izvornog koda C / C ++ u novi CPU. Međutim, operativni sustav za novi CPU može biti različit. I izvorni se kod ne može sastaviti bez promjena, bilo glavnih ili manjih. Čak i manje promjene u verzijama operativnog sustava mogu zahtijevati neke promjene izvornog koda.
A kad uzmete u obzir različite operativne sustave kao što su Windows i Linux / UNIX, prenosivost je potpuno nova igra s loptom. Ako ne koristite alatni okvir ili okvir koji vas u potpunosti izolira od operativnog sustava, prenosivost izvornog koda nije moguća. To je zato što se sučelje operacijskog sustava potpuno razlikuje između tih sustava. Ako u najudaljenijim kutovima koda izravno upotrebljavate bilo koji primitivni operativni sustav, tada vaš kôd neće biti prenosiv u raznim operativnim sustavima.
Kako se Java razlikuje?
Upravo u tom scenariju java donosi novu paradigmu, novi način izrade softvera. Kada programirate u javi, ciljate a virtualni stroj. Takav stroj postoji kao koncept, a java jezik pruža sučelja za programiranje protiv ovog stroja. Na primjer, možete upitati količinu dostupne memorije, broj CPU-a, mrežna sučelja itd. Virtualnog stroja.
Kako se grade Java aplikacije?
Java jezik pruža java prevodilac koji prevodi izvorni kod u objektni kod. Objektni kod zatim izvršava java virtualni stroj, koji je zaseban program od prevoditelja. Operativni sustav, pak, java virtualni stroj smatra samo još jednim programom koji se izvodi na tom OS-u.
Teret prenosivosti sada se prebacio s aplikacijskog programera na dobavljača virtualnog stroja Java. Programski programer piše softver pomoću primitiva java jezika, a java virtualni stroj odgovoran je za prevođenje tih primitiva u host operativni sustav. Kada izađe nova verzija OS-a, dobavljač je odgovoran za ažuriranje java virtualnog stroja tako da ispravno radi na novom OS-u..
Koje su prednosti Java virtualnog stroja?
Kao što je već spomenuto, java virtualni stroj aplikacijskom programeru pruža virtualni prikaz operativnog sustava i hardvera. Ovaj je virtualni prikaz u obliku različitih sučelja i metoda, a služi za izoliranje aplikacijskog programera od razlika u host OS-u i osnovnom hardveru. Dakle, aplikacijski programer može pristupiti objektima kao što su Windowing Toolkit, umrežavanje, 3D grafika, više CPU-a itd., A da ne mora pribjeći pozivima niske razine koji na kraju čine program ne prijenosnim..
Java program je napisan i sastavlja se pomoću java prevoditelja. Rezultirajući objektni kod (nazvan byte kod) može se prenijeti na drugi operativni sustav domaćina koji radi na različitim hardverima i treba se izvoditi bez problema.
JIT prevodilac
Java virtualni stroj koristi a JIT prevodilac za optimizaciju bajt koda posebno za ciljni CPU. JIT je kratica Na vrijeme i odnosi se na optimizacije rada koje JVM primjenjuje na bajtni kod kako bi se bolje pokrenuo na trenutnom CPU-u.
Još jedna prednost korištenja Java Virtual Machine je da može primijeniti različite optimizacije za različite slučajeve uporabe, a sve s istim bajt kodom. Na primjer, Oracle JVM nudi dvije opcije za pokretanje bajt koda: poslužiteljski način i način rada klijenta. Način poslužitelja optimizira za dugotrajne poslužiteljske programe, dok se klijentov način JVM optimizira za brza vremena odziva, jer se vjerojatno koristi u interaktivnom načinu rada.
Ukratko, nativni je program izgrađen za određeni hardver i operativni sustav. Java aplikacija, s druge strane, slijedi a Izgradite jednom pokrenite bilo gdje filozofije, tako da JVM izvršava sastavljene upute byte koda. Iako se na domaće aplikacije tradicionalno gledaju kao na performanse više od java aplikacija, to možda nije uvijek istinito zbog korištenja JITM prevoditelja.
Jeste li razvili izvornu aplikaciju i morali ste se prenijeti na javu zbog prenosivosti? Ili obrnuto zbog problema sa performansama? Javite nam u komentarima u nastavku.
Kreditna slika: Profit_Image putem Shutterstock.com