Reklame

Diskuterer du i øjeblikket, om du vil bruge java til din næste applikation, eller bruge indbyggede værktøjssæt og rammer? Vil du vide, hvilke fordele java giver i forhold til indbygget programmering til en applikation? Læs videre for at finde ud af det!

Hvad er en indfødt ansøgning?

En oprindelig applikation er et program skrevet specifikt til et operativsystem (OS) og muligvis til den specifikke hardware, der kører dette operativsystem. Det er for det meste skrevet på et sprog som C / C ++. C / C ++ -kildekoden kompileres til en objektform ved hjælp af en compiler, der derefter samles til en eksekverbar ved at linke de krævede biblioteker. Et program, der er bygget på denne måde, kører på den specifikke hardware og det operativsystem, det er bygget til, men fungerer muligvis ikke korrekt på andre systemer.

Forberedelse af en indfødt eksekverbar

Hvorfor er ikke indbyggede applikationer bærbare?

En kompilator til et sprog som C / C ++ oversætter udsagn om kildekoder til maskinsprog for den målrettede CPU. Når du forsøger at køre denne kode på en anden CPU, fungerer programmet muligvis ikke korrekt (eller fungerer overhovedet), da maskinens sproginstruktioner i den kompilerede kode muligvis ikke understøttes af denne CPU.

instagram viewer

Derudover kan det nye operativsystem afvige fra det originale og måske ikke engang genkende programfilen som en eksekverbar. Dette skyldes forskellige filformater, der bruges til eksekverbare filer på tværs af forskellige operativsystemer (såsom Windows, Linux, MacOS osv.).

Portabilitet er et så stort problem med oprindelige applikationer, at blot opgradering af kompilatoren til den næste version kan medføre ødelagte ændringer. Din kode skal muligvis rettes for at arbejde med den nyere compiler. Som sådan sprøjter kildekoden med det, der er kendt som ifdef udsagn om at isolere hardware-, OS- eller compiler-specifikke løsninger er almindelige.

Følgende er et lille kodestykket fra BZLib-komprimeringsbibliotek som illustrerer brugen af ifdefs for at isolere ejendommens platform:

#ifdef _WIN32. # inkluderer # ifdef small / * windows.h definere small to char * / # undefarvet lille. # Afslut Hvis. # ifdef BZ_EXPORT. # definere BZ_API (func) WINAPI func. # definere BZ_EXTERN ekstern. # else / * import windows dll dynamisk * / # definere BZ_API (func) (WINAPI * func) # definere BZ_EXTERN. # Afslut Hvis. #andet. # definere BZ_API (func) func. # definere BZ_EXTERN ekstern. #Afslut Hvis.

Kildekodeportabilitet på tværs af operativsystemer

Denne situation kan til en vis grad afhjælpes ved at re-kompilere C / C ++ -kildekoden til den nye CPU. Operativsystemet til den nye CPU kan imidlertid være anderledes. Og kildekoden samles måske ikke uden ændringer, uanset om de er større eller mindre. Selv mindre ændringer i operativsystemversioner kan kræve nogle ændringer i kildekoden.

Og når du overvejer forskellige operativsystemer som Windows og Linux / UNIX, er portabilitet et helt nyt boldspil. Medmindre du bruger et værktøjssæt eller en ramme, der fuldstændigt isolerer dig fra operativsystemet, er kildekodeportabilitet umulig. Dette skyldes, at operativsystemgrænsefladen er helt anderledes mellem disse systemer. Hvis du i de fjerneste hjørner af din kode bruger alle operativsystemprimitiver direkte, er din kode ikke bærbar på tværs af disse forskellige operativsystemer.

Hvordan er Java forskellig?

Det er i dette scenarie, at java leverer et nyt paradigme, en ny måde at bygge software på. Når du programmerer i java, målretter du dig mod a virtuel maskine. En sådan maskine findes som et koncept, og java-sproget giver grænseflader til programmering mod denne maskine. For eksempel kan du spørge om den tilgængelige hukommelse, antallet af CPU'er, netværksgrænseflader osv. På den virtuelle maskine.

Eksekutiv kode til virtuel maskine

Hvordan er Java-applikationer bygget?

Java-sproget giver en java-kompilator, der oversætter kildekoden til objektkode. Objektkoden udføres derefter af java virtuel maskine, som er et separat program fra kompilatoren. Operativsystemet ser på sin side den virtuelle java-maskine som blot et andet program, der kører på dette operativsystem.

Byrden med portabilitet er nu skiftet fra applikationsprogrammøren til den virtuelle java-leverandør af java. Applikationsprogrammøren skriver softwaren ved hjælp af primitiverne på java-sproget og java virtuel maskine er ansvarlig for at oversætte disse primitiver til værtsoperativsystemet faciliteter. Når en ny version af OS kommer ud, er det leverandørens ansvar at opdatere den virtuelle java-maskine, så den fungerer korrekt på det nye operativsystem.

Bygning af Java-programmer

Hvad er fordelene ved Java Virtual Machine?

Som nævnt før giver den virtuelle java-maskine en virtuel visning af operativsystemet og hardware til applikationsprogrammøren. Denne virtuelle visning er i form af forskellige grænseflader og metoder og tjener til at isolere applikationsprogrammøren fra forskellene i værts OS og den underliggende hardware. Således kan applikationsprogrammøren få adgang til faciliteter såsom en Windowing Toolkit, netværk, 3D-grafik, flere CPU'er osv. uden at skulle ty til opkald på lavt niveau, som ender med at gøre programmet ikke-bærbart.

Et java-program skrives og kompileres ved hjælp af java-kompilatoren. Den resulterende objektkode (kaldet byte kode) kan transporteres til et andet host-operativsystem, der kører på forskellige hardware og skal køre uden problemer.

JIT Compiler

Den virtuelle java-maskine bruger a JIT-kompilator at optimere bytekoden specifikt til mål-CPU'en. JIT står for Lige til tiden og henviser til runtime-optimeringer, som JVM anvender byte-koden for at få den til at køre bedre på den aktuelle CPU.

En anden fordel ved at bruge Java Virtual Machine er, at den kan anvende forskellige optimeringer til forskellige anvendelsessager, alle med den samme byte-kode. For eksempel giver Oracle JVM to muligheder for at køre byte-koden: en servertilstand og en klienttilstand. Servertilstanden optimeres til langvarige serverprogrammer, mens klientens JVM-tilstand optimerer til hurtige responstider, da den sandsynligvis bruges i interaktiv tilstand.

For at opsummere er en oprindelig applikation bygget til en bestemt hardware og operativsystem. En java-applikation følger derimod a Byg en gang, hvor som helst filosofi ved at have en JVM til at køre de kompilerede byte-kodeinstruktioner. Mens oprindelige applikationer traditionelt har været set som mere performante end java-applikationer, er det muligvis ikke altid sandt på grund af brugen af ​​en JIT-compiler af JVM.

Har du udviklet en oprindelig applikation og var nødt til at skifte til java på grund af portabilitet? Eller omvendt på grund af præstationsproblemer? Fortæl os det i kommentarerne herunder.

Billedkredit: Profit_Image via Shutterstock.com