Skelbimas

Šiuo metu svarstote, ar naudoti „Java“ kitai programai, ar naudoti vietinius įrankių rinkinius ir sistemas? Ar norėtumėte sužinoti, kokius pranašumus „Java“ teikia, palyginti su programos vietiniu programavimu? Skaitykite toliau ir sužinokite!

Kas yra vietinė programa?

Natūrali programa yra programa, sukurta specialiai operacinei sistemai (OS) ir galbūt tam tikrai aparatinei įrangai, kuriai ta OS naudojama. Dažniausiai rašoma tokia kalba, kaip C / C ++. C / C ++ šaltinio kodas komponuojamas į objekto formą, naudojant kompiliatorių, kuris po to surenkamas į vykdomąjį failą, susiejant reikalingas bibliotekas. Tokiu būdu sukurta programa veiks konkrečioje aparatinėje įrangoje ir OS, kuriai ji yra sukurta, tačiau gali tinkamai neveikti kitose sistemose.

Vietinio vykdomojo failo paruošimas

Kodėl „Vietinės programos“ nėra nešiojamos?

Kalbos, tokios kaip C / C ++, kompiliatorius išveda šaltinio kodo teiginius į tikslinio CPU mašininę kalbą. Bandant paleisti šį kodą kitame procesoriuje, programa gali neveikti tinkamai (arba visai neveikti), nes kompiuteryje esančios mašinos kalbos instrukcijos šiame procesoriuje gali būti nepalaikomos.

instagram viewer

Be to, naujoji operacinė sistema gali skirtis nuo pradinės ir gali net neatpažinti programos failo kaip vykdomojo. Taip yra dėl skirtingų failų formatų, naudojamų vykdomosioms programoms skirtingose ​​operacinėse sistemose (tokiose kaip „Windows“, „Linux“, „MacOS“ ir kt.).

Perkeliamumas yra tokia didelė problema, kaip vietinėms programoms, kad vien atnaujinus kompiliatorių į kitą versiją gali tekti sulaužyti pakeitimus. Gali reikėti ištaisyti savo kodą, kad jis veiktų su naujesniu kompiliatoriumi. Šaltinio kodo purslai, vadinami ifdefas paplitę teiginiai, skirti atskirti aparatinės įrangos, OS ar kompiliatoriaus būdus.

Toliau pateiktas nedidelis kodo fragmentas iš „BZLib“ suspaudimo biblioteka kuris iliustruoja ifdefasatskirti platformos ypatumus:

#ifdef _WIN32. # įtraukti # ifdef small / * windows.h apibrėžia mažus iki char * / # undef mažas. # endif. # ifdef BZ_EXPORT. # apibrėžti BZ_API (func) WINAPI func. # apibrėžti BZ_EXTERN išorę. # else / * importuoti „Windows“ dll dinamiškai * / # define BZ_API (func) (WINAPI * func) # apibrėžti BZ_EXTERN. # endif. #Kitas. # apibrėžti BZ_API (func) func. # apibrėžti BZ_EXTERN išorę. #endif.

Šaltinio kodo perkeliamumas visose operacinėse sistemose

Šią situaciją tam tikru mastu galima sušvelninti iš naujo sudedant C / C ++ šaltinio kodą naujajam procesoriui. Tačiau naujojo procesoriaus operacinė sistema gali būti skirtinga. Šaltinio kodas gali būti nesudaromas be didelių ar nedidelių pakeitimų. Net dėl ​​nedidelių operacinės sistemos versijų pakeitimų gali reikėti pakeisti kai kuriuos šaltinio kodus.

Ir kai jūs atsižvelgsite į skirtingas operacines sistemas, tokias kaip „Windows“ ir „Linux“ / UNIX, perkėlimas yra visiškai naujas rutulinis žaidimas. Šaltinio kodo perkeliamumas yra neįmanomas, jei nenaudojate priemonių rinkinio ar sistemos, kuri visiškai izoliuoja jus nuo operacinės sistemos. Taip yra todėl, kad operacinės sistemos sąsaja yra visiškai skirtinga tarp šių sistemų. Jei atokiausiuose kodo kampuose tiesiogiai naudosite bet kuriuos operacinės sistemos primityvus, tada jūsų kodas nebus perkeliamas per šias skirtingas operacines sistemas.

Kuo „Java“ skiriasi?

Būtent pagal šį scenarijų „Java“ pateikia naują paradigmą, naują programinės įrangos kūrimo būdą. Programuodami „Java“, jūs nukreipiate į a Virtuali mašina. Tokia mašina egzistuoja kaip sąvoka, o „Java“ kalba pateikia sąsajas programavimui prieš šią mašiną. Pvz., Galite paklausti turimos atminties kiekio, centrinių procesorių skaičiaus, tinklo sąsajų ir tt virtualioje mašinoje.

Virtualios mašinos vykdymo kodas

Kaip kuriamos „Java“ programos?

„Java“ kalba pateikia „Java“ kompiliatorių, kuris šaltinio kodą paverčia objekto kodu. Tada objekto kodą vykdo „Java“ virtualioji mašina, kuri yra atskira kompiliatoriaus programa. Savo ruožtu operacinė sistema žiūri „Java“ virtualiąją mašiną kaip tik į dar vieną programą, veikiančią toje OS.

Perkeliamumo našta nuo programų programuotojo perėjo prie „Java“ virtualiųjų mašinų tiekėjo. Programų programuotojas rašo programinę įrangą, naudodamas „Java“ kalbos primatus ir „Java“ virtualioji mašina yra atsakinga už šių primityvų vertimą į pagrindinę operacinę sistemą įrenginius. Kai pasirodys nauja OS versija, tiekėjo pareiga yra atnaujinti „Java“ virtualiąją mašiną, kad ji tinkamai veiktų naujojoje OS.

„Java“ programų kūrimas

Kokie yra „Java“ virtualios mašinos pranašumai?

Kaip minėta anksčiau, „Java“ virtualioji mašina programos programuotojui pateikia virtualų operacinės sistemos ir aparatinės įrangos vaizdą. Šis virtualus vaizdas pateiktas įvairių sąsajų ir metodų pavidalu ir yra skirtas atskirti programos programuotoją nuo pagrindinės OS ir pagrindinės aparatinės įrangos skirtumų. Taigi programų programuotojas gali pasiekti tokias priemones kaip „Windowing Toolkit“, „Networking“, 3D grafika, keli procesoriai ir kt. nereikia griebtis žemo lygio skambučių, dėl kurių programa tampa nešiojama.

Parašoma „Java“ programa ir ji sudaroma naudojant „Java“ kompiliatorių. Gautas objekto kodas (vadinamas baito kodas) gali būti gabenami į kitą pagrindinę operacinę sistemą, veikiančią skirtinga aparatine įranga, ir turėtų veikti be problemų.

JIT sudarytojas

„Java“ virtualioji mašina naudoja a JIT sudarytojas optimizuoti baito kodą konkrečiai tiksliniam procesoriui. JIT reiškia Pačiu laiku ir nurodo vykdymo laiko optimizavimą, kurį JVM taiko baito kodui, kad jis geriau veiktų dabartiniame procesoriuje.

Kitas „Java“ virtualios mašinos naudojimo pranašumas yra tas, kad ji gali pritaikyti skirtingas optimizavimo galimybes skirtingiems naudojimo atvejams, visi su tuo pačiu baito kodu. Pvz., „Oracle JVM“ teikia dvi baito kodo paleidimo galimybes: serverio ir kliento režimus. Serverio režimas optimizuojamas ilgai veikiančioms serverio programoms, o kliento JVM režimas optimizuojamas siekiant greito reagavimo laiko, nes jis greičiausiai bus naudojamas interaktyviame režime.

Apibendrinant galima pasakyti, kad savitoji programa sukurta konkrečiai aparatinei įrangai ir operacinei sistemai. Kita vertus, „Java“ programa atliekama taip: a Sukurkite „Vykdykite bet kur“ filosofija, turėdamas JVM paleisti sudarytas baito kodo instrukcijas. Nors tradicinės programos tradiciškai buvo vertinamos kaip veiksmingesnės nei „Java“ programos, tai ne visada gali būti tiesa dėl to, kad JVM naudoja JIT kompiliatorių.

Ar sukūrėte savąją programą ir dėl perkeliamumo turėjote ją pakeisti į „Java“? Arba atvirkščiai dėl spektaklio problemų? Praneškite mums toliau pateiktuose komentaruose.

Vaizdo kreditas: „Profit_Image“ per „Shutterstock.com“