Java Academy · Oppitunti

Natiivin imagen rakentaminen

Ennen ajoa tehtävä käännös.

Oppitunti 2/413 vaihetta

Natiivin imagen rakentaminen on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Native Imagen rakentaminen

native-image-työkalu muuntaa käännetyn Java-tavukoodin yhdeksi itsenäiseksi natiivisuoritettavaksi tiedostoksi. Tässä oppitunnissa käydään läpi koontiprosessi, taustalla tapahtuvat vaiheet ja tuloksen suorittaminen.

Aloittakaa tavallisesta Javasta

Native image -koonti alkaa tavallisista käännetyistä luokista. Kuvitellaan, että käännämme seuraavan yksinkertaisen ohjelman natiivikoodiksi.

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello from a native binary!");
    }
}

Kääntäkää ensin, rakentakaa sitten

Vaiheita on kaksi: ensin javac Hello.java tuottaa tiedoston Hello.class; sen jälkeen native-image Hello tuottaa hello-nimisen suoritettavan tiedoston. Koonti kestää paljon kauemmin kuin kääntäminen, koska siinä analysoidaan koko ohjelma.

Suljetun maailman analyysi

native-image suorittaa closed-world-analyysin: sen on nähtävä kaikki koodi, joka voisi koskaan suorittua. Se aloittaa kohdasta main, käy läpi kaikki saavutettavat metodit ja sisällyttää binaariin vain ne. Kaikki saavuttamattomat osat poistetaan (kuolleen koodin eliminointi linkityksen aikana).

Etukäteiskäännös

Saavutettavat metodit käännetään natiiviksi konekoodiksi etukäteen. Koska tulkittavaa tavukoodia tai JIT-kääntäjää ei ole, myöskään lämmitysvaihetta ei tarvita — ohjelma toimii täydellä nopeudella ensimmäisestä käskystään lähtien.

Alustus koontiaikana

Nopeaa käynnistystä varten native-image voi suorittaa staattiset alustajat koontiaikana ja tallentaa tuloksena syntyvän keon osaksi imagea (image heap). Näin jotkin oliot ovat jo olemassa heti ohjelman käynnistyessä.

Suoritettavan tiedoston ajaminen

Tuloksena on tavallinen käyttöjärjestelmän suoritettava tiedosto. Ajatte sen suoraan — java -jar -komentoa tai kohdekoneeseen asennettua JVM:ää ei tarvita. Tiedosto on lipuista riippuen täysin staattinen tai enimmäkseen staattinen.

Yleiset koontiliput

Hyödyllisiä valitsimia ovat:

  • -o name — tulostiedoston nimi.
  • --no-fallback — epäonnistuu sen sijaan, että tuottaisi JVM:stä riippuvan varakuvan.
  • -O2 / -O3 — optimointitaso.
  • --static — täysin staattisesti linkitetty binaari (Linux).

Muisti ja levytila

Koonti kuluttaa itsessään paljon muistia — suuret sovellukset voivat tarvita useita gigatavuja RAM-muistia ja minuutteja suoritinaikaa. Tämä kustannus maksetaan kerran koontiaikana, ja vastineeksi saadaan nopea ja edullinen käynnistys ajon aikana.

Rakentaminen Mavenilla ja Gradlella

Todellisissa projekteissa native-image-komentoa harvoin kutsutaan käsin. GraalVM:n native-build-tools-lisäosat integroivat sen Mavenin (native:compile) ja Gradlen (nativeCompile) koontiin, joten binaari syntyy osana tavallista koontiputkea.

Käynnistyksen tarkistaminen

Koontivaiheen jälkeen verratkaa käynnistysaikoja: java -jar -käynnistys voi kestää satoja millisekunteja, kun taas natiivibinaari palauttaa hallinnan muutamassa millisekunnissa. Tämän eron mittaaminen on koko natiiviksi siirtymisen tarkoitus.

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte native image -tiedostojen rakentamista.

Kertaus

Opitte native-image-koonnin perusteet:

  • Aloittakaa käännetystä tavukoodista; native-image tuottaa itsenäisen suoritettavan tiedoston.
  • Closed-world-analyysi etsii kaiken kohdasta main saavutettavan koodin.
  • Saavutettava koodi käännetään AOT-menetelmällä; saavuttamaton koodi poistetaan.
  • Koontiaikainen alustus tallentaa image heapin imageen nopeaa käynnistystä varten.
  • Koonti on hidasta ja kuluttaa paljon muistia; integroikaa se Maven- ja Gradle-lisäosien avulla.
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Natiivin imagen rakentaminen” ilmainen?

Kyllä – oppitunnin ”Natiivin imagen rakentaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Natiivin imagen rakentaminen”?

Ennen ajoa tehtävä käännös. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Natiivin imagen rakentaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Mikä GraalVM on
  2. Natiivin imagen rakentaminen
  3. Reflektio ja määritys
  4. Natiivin imagen kompromissit
← Takaisin: Java Academy