|
Liite 3: Kääntäjä
Mihin kääntäjää tarvitaan?
Tietokone ei ymmärrä mitään muuta informaatiota kuin bittijonoja, jotka
muodostuvat nollista ja ykkösistä. Tietokone on myös rakennettu
ymmärtämään yksinkertaisia operaatioita, jotka käsittelevät tietokoneen
eri komponenteissa olevia bittijonoja. Tämmöistä operaatiojoukkoa
kutsutaan konekieleksi.
Konekielinen ohjelmointi on hyvin kömpelöä
ja virhealtista. Lisäksi ihmisen on hyvin vaikeaa ymmärtää konekieltä.
Tästä syystä, nykyään lähes aina ohjelmoinnissa käytetään niin kutsuttuja
lausekieliä, ja myös java kuuluu tähän ryhmään. Lausekielien käytön avulla
ohjelmoija välttyy koneen sisäisen rakenteen ajattelemiselta, ja voi
keskittyä olennaiseen, eli ohjelmakoodin kirjoittamiseen. Lisäksi
lausekielien vahvuuksiin kuuluu, että niillä kirjoitetut ohjelmat ovat
siirrettävissä toisiin tietokoneisiin, sekä kielen rakenne ja syntaksi on
lähempänä ihmisen omaa normaalia puhekieltä.
Jotta tietokoneella
voitaisiin suorittaa lausekielisiä ohjelmia, niin ohjelmat on muunnettava
konekielisiksi, eli tietokoneen ymmärtämään muotoon. Lausekielen
tulkitsemista konekielelle kutsutaan ohjelman kääntämiseksi. Operaatio
toteuttamista varten tarvitaan erillinen kääntäjä (engl. compiler). Eli
kääntäjäkin on eräänlainen algoritmi, ja ohjelma joka muuttaa tietyllä
lausekielellä kirjoitetun ohjelman konekieliseksi. Tästä syystä kääntäjiä
on olemassa useille eri ohjelmointikielille.
Esimerkkiohjelman kääntäminen
Tässä luvussa selitetään kuinka tietokoneella käännetään ja suoritetaan
yksinkertainen java-kielinen ohjelma. Ohjelman käännös ja suoritus tehdään
Joensuun yliopiston cc-koneella. Dokumentissa esitetyt komennot ja
toiminnot pitäisi olla samoja myös kaikilla muilla Unix-pohjaisilla
koneilla. Ohjelman suoritusta varten käyttäjä tarvitsee Joensuun
yliopiston cc- tai cs-koneelle käyttäjätunnuksen ja salasanan. Tämän ei
pitäisi olla ongelma, koska kaikilla yliopiston opiskelijoilla on
tunnukset yliopiston verkkoihin.
Ohjelman kääntämistä ja
suoritusta varten on laadittava lyhyt ja yksinkertainen java-kielinen
ohjelmakoodi. Sen voi tehdä jollakin tekstieditorilla. Esimerkiksi
Windowsissa Notepadilla tai Unix-ympäristössä Pico-editorilla. Jos
kirjoitat ohjelmakoodin Windows-ympäristössä, niin Unixissa on syytä
suorittaa dos2unix-komento ohjelmakooditiedostolle: dos2unix {Windows tiedoston nimi} {uuden Linux tiedoston nimi}. Tämä siitä syystä, että
tiedostojen sisällöt muuttuvat siirryttäessä Windowsista Unixiin.
Eli, kirjoita alla oleva java-koodinpätkä tekstieditoriin, ja
tallenna tiedosto Hei.java -nimiseksi. Muista kirjoittaa esimerkki
ohjelman kaikki pisteet, puolipisteet, kaarisulut, jne. juuri samalla
tavalla, kuin ne tuossa alapuolella on esitetty. public class Hei{
public static void main(String[] args){
System.out.println("Hei maailma!");
}
}
Annettaessa valmiille ohjelmakooditiedostolle tiedostonimeä
on syytä muistaa, että on käytettävä samaa nimeä, minkä olet antanut java-koodin public class -luokalle. Eli tässä tapauksessa Hei.java.
Ohjelmakoodia käännettäessä tietokoneessa oleva kääntäjä tuottaa
ohjelmakooditiedostossa Hei.java olleen luokan Hei-nimen mukaan tiedoston
Hei.class. Jos ohjelmakooditiedostossa Hei.java olisi useampia public
class -luokkia, niistä jokaisesta syntyisi oma class-tiedosto, jonka
nimen alku olisi aina kyseisen luokan nimi. Huomaa, että jos
ohjelmakooditiedostossa on useampia luokkia, vain yksi niistä voi olla
public class, ja juuri tuon luokan on oltava samanniminen kuin
tallennettavan Java-ohjelmakooditiedostonimen alkuosa. Tallennettavien
ohjelmakoodintiedostojen loppuosa on kaikilla tiedostoilla sama eli .java.
Esimerkki ohjelman kääntämistä ja suorittamista varten edellä
tehty ohjelmakooditiedosto on siirrettävä Unix-koneelle, mikäli et ole
sitä jo tehnyt. Joensuun yliopiston Unix-koneelle voit ottaa yhteyden
esimerkiksi SSH Secure Shell Clientilla. Unix-ympäristössä komennolla
javac voidaan äsken tehty ohjelmakoodi kääntää ns. javan välikielelle
(Bytecode).
Kirjaudu cc- tai cs -koneelle omilla tunnuksillasi.
Varmista, että olet oikeassa alihakemistossa, missä on myös Hei.java
-tiedosto. Kirjoita alla oleva teksti. javac Hei.java
Eli jos näyttöön ei ilmesty mitään virheilmoituksia, niin
javac-kääntäjä on tehnyt ohjelmakoodista Bytecode-tiedoston, ja antanut
sille nimen Hei.class. Voit tarkistaa asian kirjoittamalla komentoriville
komennon ls. Se näyttää kaikki tämän hetkisessä työskentelyhakemistossa
olevat tiedostot. Sieltä pitäisi löytyä edellä olleen komennon suorituksen
jälkeen myös tiedostot Hei.java ja Hei.class.
Tiedosto Hei.class
on suoritettava Bytecode-kielinen ohjelma. Se voidaan suorittaa Unix-järjestelmässä olevalla tulkilla java. Eli erillinen java-tulkki kääntää
Bytecode-kielisen ohjelman tietokoneen ymmärtämään muotoon. Eli, kirjoita
komentoriville alla oleva teksti. java Hei
Tämän jälkeen tietokone suorittaa kirjoittamasi java-kielisen ohjelman, ja kuvaruudulle pitäisi tulostua teksti: Hei maailma!
|