Mainos

Java-virtuaalikone (JVM) on oikean nimen tiputin, kun ohjelmoit Java-ohjelmassa. Vastoin sen, mitä nimi osoittaa, Java-virtuaalikone voidaan kohdata suhteessa myös muihin ohjelmointikieliin.

Yleensä ei ole välttämätöntä tietää, mikä Java-virtuaalikone on tai edes mitä se tekee, jotta Java-ohjelmointi olisi mahdollista. Toisaalta koneen sisäisen toiminnan tunteminen auttaa parantamaan ymmärrystäsi ja yleistä käsitystäsi.

Tämä artikkeli käsittelee Java-virtuaalikoneen ajatusta, mitä se tekee sinulle ja joitain tärkeimmistä eduista ja haitoista. Vaikka olen yrittänyt pitää sen yksinkertaisena ja aiheesta on ehdottomasti edistyneempää kirjallisuutta, Java: n ja ohjelmoinnin odotetaan alkeellista ymmärtämistä.

Korkean tason kielet

Ohjelmointikielen semantiikka on suunniteltu olemaan lähellä luonnollista kieltämme, pysyen samalla tiiviinä ja helppo tulkita koneelle. Kuten luultavasti tiedät, ohjelmointikieli on täysin erilainen kuin konekoodi, ohjejoukko, jota tietokone käyttää ohjelman rakentamiseen ja ajamiseen. Tätä kutsumme

instagram viewer
korkean tason kielet; yksi tai useampi abstraktiotaso konekoodista.

Ennen kuin se pystyy suorittamaan, korkean tason koodi on ensin tulkittava. Monet ohjelmointirajapinnat kääntyvät etukäteen (AOT-kokoelma) tietylle alustalle. Tämä tekee ohjelmasta tehokkaamman suorituksen, mutta paljon vähemmän yhteensopiva eri alustojen kanssa. Java, sen sijaan, toimii välikielen, nimeltään Java-tavukoodi ja Java-virtuaalikone.

JVM ja Java-tavukoodi

Kun Java-projekti rakentuu, se kääntää lähdekoodin (sisältyy *.java lähdetiedostot) Java-tavukoodiin (sisältyy useimmiten * .class-tiedostoihin). Tämä vie korkeatasoisen koodisi yhden askeleen lähemmäksi konekoodia, mutta ei vielä aivan siellä. Tämä tavukoodi on kokoelma pienikokoisia ohjeita; koneen tulkitseminen on helpompaa, mutta vähemmän luettavissa.

Kun ajat Java-sovellusta tietokoneellasi, matkapuhelimellasi tai jollain muulla Java-yhteensopivalla alustalla, siirrät olennaisesti tämän Java-tavukoodin Java-virtuaalikoneelle. Java-virtuaalikoneessa oleva tulkki aloittaa yleensä koko tavukoodin suorittamisen ajon aikana noudattaen ns. juuri ajoissa -kokoonpano. Tämä aiheuttaa tyypillisen, tosin usein pienen viiveen Java-sovelluksen avaamisessa, mutta parantaa yleensä ohjelman suorituskykyä verrattuna tulkittu kokoelma.

Java-virtuaalikone

Tämän järjestelmän tärkein etu on lisääntynyt yhteensopivuus. Koska sovelluksesi toimivat virtuaalikoneessa eikä suoraan laitteistosi, kehittäjä voi ohjelmoida ja rakentaa heidän sovelluksensa kerran, joka voidaan sitten suorittaa jokaiselle laitteelle Java Virtual -sovelluksen avulla Kone. Tämä periaate on synnyttänyt Java-iskulauseen: “Kirjoita kerran, juokse kaikkialla.”

Pro: Yhteensopivuus ja lisääntynyt turvallisuus

Koodin yhteensopivuuden lisäksi Java-virtuaalikoneessa on muita etuja. Yksi tärkeimmistä näistä on Java-ohjelmien suhteellinen turvallisuus Java-virtuaalikoneen seurauksena. Suojaus, mikä tarkoittaa, että virtuaalikoneessa käynnissä oleva ohjelma häiritsee käyttäjän käyttöjärjestelmää paljon tai vioittaa datatiedostoja, jos virheitä ilmenee.

Con: Erilaiset JVM-toteutukset ja virheenkorjaus

Yksi tärkeimmistä kritiikkeistä, joita on ilmaistu koodien yhteensopivuutta ja Java-virtuaalikoneita vastaan, johtuu jälkimmäisten monista erilaisista toteutuksista. Java-virtuaalikone ei ole yksi ohjelmistopala. Java-omistajilla Oracleilla on Java-koneen käyttöönotto, mutta muut ihmiset voivat tehdä omia, jos se tyydyttää useita käytännön ja sopimusvaatimuksia.

Nämä erilaiset toteutukset tarkoittavat, että koodisi voi toimia sujuvasti yhdessä Java-virtuaalikoneessa, mutta kaatua ja palaa toisessa. Vaikka käytännössä voit kirjoittaa koodisi kerran ja käyttää sitä kaikkialla, joskus monimutkaisempi koodi on vielä suoritettava vianetsintä erilaisissa Java-virtuaalikoneen toteutuksissa oikean toiminnan varmistamiseksi.

Onko sinulla kokemusta Java-virtuaalikoneen käytöstä? Jos on, onko täällä jotain mitä kaipaisin ja joka olisi mainittava?

Kuvahyvitys: Michaelaw, Dcoetzee

Olen kirjailija ja tietotekniikan opiskelija Belgiasta. Voit aina tehdä minulle palvelun hyvän artikkeliidean, kirjasuosituksen tai reseptiidean avulla.