Oglas

Trenutno raspravljate hoćete li za sljedeću aplikaciju koristiti Java ili koristiti izvorne alate i okvire? Želite li znati koje prednosti java nudi u odnosu na izvorno programiranje za aplikaciju? Čitajte dalje kako biste saznali!

Što je izvorna 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.

Priprema Native Executable

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 možda ovaj procesor ne podržava upute strojnog jezika u sastavljenom kodu.

instagram viewer

Nadalje, novi se operativni sustav može razlikovati od izvornog te čak i ne mož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 veliki 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, prskanje izvornog koda onim što su poznati ifdef izjave za izoliranje zaobilaznih zaobilaznica, hardvera, OS-a ili kompajlera su uobičajene.

Slijedi mali isječak koda iz BZLib biblioteka za kompresiju što ilustrira uporabu ifdefs za izoliranje karakteristika platforme:

#ifdef _WIN32. # uključuju # ifdef small / * windows.h definiraj malu za char * / # undef mala. # završi ako. # ifdef BZ_EXPORT. # definiraj BZ_API (func) WINAPI funkc. # definiraj BZ_EXTERN ekstern. # else / * uvoz windows dll dinamički * / # definiraj BZ_API (func) (WINAPI * funkc) # definiraj BZ_EXTERN. # završi ako. #drugo. # definirati BZ_API (func) funkc. # definiraj BZ_EXTERN ekstern. #završi ako.

Prenosljivost izvornog koda u svim operativnim sustavima

Ova se situacija može donekle ublažiti ponovnim sastavljanjem C / C ++ izvornog koda u novi CPU. Međutim, operativni sustav za novi CPU može biti različit. I izvorni se kôd 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.

Po čemu 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.

Kôd za izvršavanje 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 i jave virtualni stroj odgovoran je za prevođenje ovih primitivaca u glavni operativni sustav sadržaji. Kada izađe nova verzija OS-a, dobavljač je odgovoran za ažuriranje Java virtualnog stroja kako bi ispravno radio na novom OS-u.

Izgradnja Java programa

Koje su prednosti Java virtualnog stroja?

Kao što je već spomenuto, virtualni stroj java pruža programeru virtualni pregled 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. Tako aplikacijski programer može pristupiti objektima kao što su Windowing Toolkit, umrežavanje, 3D grafika, više CPU-a itd. bez pribjegavanja pozivima niske razine koji na kraju čine program ne prenosivim.

Java program se piše i sastavlja se pomoću java prevoditelja. Rezultirajući objektni kod (nazvan byte kod) može se prevesti u 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 mogućnosti 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 s izvedbom? Javite nam u komentarima u nastavku.

Kreditna slika: Profit_Image putem Shutterstock.com