Natiivin imagen rakentaminen
Ennen ajoa tehtävä käännös.
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-imagetuottaa itsenäisen suoritettavan tiedoston. - Closed-world-analyysi etsii kaiken kohdasta
mainsaavutettavan 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.
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
- Mikä GraalVM on
- Natiivin imagen rakentaminen
- Reflektio ja määritys
- Natiivin imagen kompromissit