Oglas
Ali trenutno razpravljate, ali naj za naslednjo aplikacijo uporabite java ali uporabljate izvorne komplete orodij in okvirjev? Bi radi vedeli, katere prednosti ponuja java pred izvornim programiranjem za aplikacijo? Preberite, če želite izvedeti!
Kaj je Native Application?
Naravna aplikacija je program, napisan posebej za operacijski sistem (OS) in morda za določeno strojno opremo, ki deluje v tem operacijskem sistemu. Večinoma je napisana v jeziku, kot je C / C ++. Izvorna koda C / C ++ je sestavljena v objektni obrazec s pomočjo prevajalnika, ki se nato sestavi v izvedljiv del s povezavo potrebnih knjižnic. Program, zgrajen na ta način, se bo izvajal na določeni strojni opremi in operacijskem sistemu OS, za katerega je zgrajen, vendar v drugih sistemih morda ne bo deloval pravilno.
Zakaj niso nativne aplikacije prenosne?
Prevajalnik za jezik, kot je C / C ++, prevede izjave izvorne kode v strojni jezik za ciljni procesor. Ko poskušate zagnati to kodo v drugem CPU-ju, program morda ne bo deloval pravilno (ali sploh ne deluje), ker ta procesor morda ne podpira navodil strojnega jezika v sestavljeni kodi.
Poleg tega se lahko nov operacijski sistem razlikuje od izvirnega in programske datoteke morda celo ne prepozna kot izvedljivo. To je posledica različnih formatov datotek, ki se uporabljajo za izvedljive datoteke v različnih operacijskih sistemih (kot so Windows, Linux, MacOS itd.).
Prenosljivost je tako velika težava pri izvornih aplikacijah, da lahko zgolj nadgradnja prevajalnika na naslednjo različico prinese velike spremembe. Za delo z novejšim prevajalnikom bo morda treba popraviti vašo kodo. Kot izlivanje izvorne kode s tistim, kar so znani kot ifdef izjave za izolacijo rešitve, povezane s strojno opremo, OS- ali prevajalnikom, so pogoste.
Sledi majhen delček kode Kompresijska knjižnica BZLib ki ponazarja uporabo ifdefs za izolacijo posebnosti platforme:
#ifdef _WIN32. # vključujejo # ifdef small / * windows.h opredeli majhno do char * / # undef majhna. # endif. # ifdef BZ_EXPORT. # definiraj BZ_API (func) WINAPI funkc. # definiraj BZ_EXTERN zunanji del. # else / * uvoz Windows dll dinamično * / # definiraj BZ_API (func) (WINAPI * funkc) # definiraj BZ_EXTERN. # endif. #else. # definiraj BZ_API (func) funkc. # definiraj BZ_EXTERN zunanji del. #endif.
Prenosljivost izvorne kode v operacijskih sistemih
To stanje je mogoče do neke mere ublažiti s ponovnim prevajanjem izvorne kode C / C ++ v nov CPU. Vendar pa je operacijski sistem za nov CPU lahko drugačen. In izvorna koda se ne more sestaviti brez sprememb, bodisi večjih ali manjših. Tudi manjše spremembe različic operacijskega sistema lahko zahtevajo nekatere spremembe izvorne kode.
In če upoštevate različne operacijske sisteme, kot sta Windows in Linux / UNIX, je prenosljivost povsem nova igra z žogo. Če ne uporabljate orodja ali okvira, ki vas popolnoma izolira od operacijskega sistema, prenosljivost izvorne kode ni mogoča. To je zato, ker je vmesnik operacijskega sistema med temi sistemi popolnoma drugačen. Če v najbolj oddaljenih kotičkih svoje kode neposredno uporabite kateri koli primitiv operacijskega sistema, potem vaša koda ne bo prenosljiva v teh različnih operacijskih sistemih.
Kako se Java razlikuje?
V tem scenariju java prinaša novo paradigmo, nov način gradnje programske opreme. Pri programiranju v javi ciljate na navidezni stroj. Takšen stroj obstaja kot koncept, jezik Java pa nudi vmesnike za programiranje na tem stroju. Na primer, lahko poizvedate količino razpoložljivega pomnilnika, število CPU-jev, omrežne vmesnike itd. Navideznega stroja.
Kako so izdelane Java aplikacije?
Jezik java ponuja prevajalnik java, ki izvorno kodo prevede v objektno kodo. Nato objektno kodo izvrši java virtualni stroj, ki je ločen program od prevajalnika. Operacijski sistem navidezno napravo java vidi kot le še en program, ki deluje v tem operacijskem sistemu.
Breme prenosljivosti se je zdaj preusmerilo od aplikacijskega programerja na proizvajalca java virtualnega stroja. Programski programer napiše programsko opremo z uporabo primitivov jezika java in jave virtualni stroj je odgovoren za prevajanje teh primitivov v gostiteljski operacijski sistem objektov. Ko se pojavi nova različica operacijskega sistema, je prodajalec odgovoren, da posodobi java virtualni stroj, tako da deluje pravilno v novem operacijskem sistemu.
Kakšne so prednosti Java navideznega stroja?
Kot smo že omenili, virtualni stroj java aplikacijskemu programerju omogoča virtualni pogled na operacijski sistem in strojno opremo. Ta virtualni pogled je v obliki različnih vmesnikov in metod in služi za izolacijo aplikacijskega programerja od razlik v gostiteljski OS in osnovni strojni opremi. Tako lahko aplikacijski programer dostopa do objektov, kot so Windowing Toolkit, Networking, 3D grafika, več CPU itd. ne da bi se morali zateči klice na nizki ravni, zaradi katerih program ni prenosljiv.
Program java je napisan in sestavljen s prevajalnikom java. Rezultat kode predmeta (imenovan bajtna koda) se lahko prevažajo v drug operacijski sistem gostitelja, ki deluje na različni strojni opremi in naj se izvaja brez težav.
Prevajalnik JIT
Java virtualni stroj uporablja a Prevajalnik JIT optimizirati bajtno kodo posebej za ciljni CPU. JIT pomeni Ravno pravi čas in se sklicuje na optimizacije izvajanja, ki jih JVM uporablja za bajtno kodo, da omogoči boljši zagon v trenutnem CPU-ju.
Druga prednost uporabe navideznega stroja Java je ta, da lahko uporablja različne optimizacije za različne primere uporabe, vse z isto bajtno kodo. Na primer, Oracle JVM ponuja dve možnosti za zagon bajtne kode: strežniški način in način odjemalca. Način strežnika optimizira za dolgo delujoče strežniške programe, medtem ko odjemalni način JVM optimizira za hitre odzivne čase, saj se verjetno uporablja v interaktivnem načinu.
Če povzamem, je domača aplikacija zgrajena za določeno strojno in operacijski sistem. Aplikacija java na drugi strani sledi a Zgradite enkrat zaženite kjer koli filozofije, tako da JVM izvaja zbrana navodila bajtne kode. Medtem ko tradicionalne aplikacije tradicionalno obravnavajo kot bolj uspešne kot java aplikacije, to morda ne drži vedno zaradi uporabe prevajalnika JIT s strani JVM.
Ste razvili domačo aplikacijo in ste se zaradi prenosljivosti morali preusmeriti na javo? Ali obratno zaradi težav z uspešnostjo? Sporočite nam v spodnjih komentarjih.
Kreditna slika: Profit_Image prek Shutterstock.com