ALOITTELIJAN JAVA-OPAS


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!
    
    
    

    Tietojärjestelmien dokumentointi 2005 | Aloittelijan JAVA-opas


    Valid CSS!