Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 581258-1 Johdatus ohjelmointiin
Copyright © 1997 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

2.1 Pieni ohjelma

(Muutettu viimeksi 12.9.1997)

Tässä luvussa tutustutaan ensimmäiseen Java-ohjelmaan, sen kääntämiseen ja suorittamiseen. Tavallisia ohjelmia kutsutaan sovelluksiksi (application). Myös Internetissä käytettävästä ohjelmasta, sovelmasta (applet) nähdään esimerkki.

Hoi maailma -sovellus

Ohjelmoinnin opiskelu usein aloitetaan tutustumalla pienen pieneen täydelliseen ohjelmaan, joka tulostaa maailmoja syleilevän tervehdyksen. Tämä kurssi ei ole poikkeus:

 
     public class Hoi{
       public static void main(String[] args){
         System.out.println("Hoi maailma!");
       }
     } 
Tuo arvoituksellisen näköinen teksti on Java-ohjelma "Hoi maailma" -tekstin tulostamiseen. Ohjelmassa on paljon asioita, jotka opitaan vasta myöhemmin. Seuraavan selityksen joidenkin kohtien on tarkoituskin jäädä vielä epäselviksi!


     public class Hoi{ 
        ...
     }
Jokainen Java-ohjelma on jossakin luokassa (class). Esimerkkiluokka on julkinen (public). Luokkia käytetään hyvin monin tavoin: sovelluksen ns. pääohjelma on jossakin luokassa, sovelmat toteutetaan luokkina, luokkiin voidaan kerätä välinekirjastoja, luokkien avulla voidaan toteuttaa ns. abstrakteja tietotyyppejä, luokkien avulla mallinnetaan erilaisia rakennehierarkioita, .... Voidaan sanoa, että lähes kaikki, mitä Javassa on, ohjelmoidaan jonkin luokan sisään!

 

       public static void main(String[] args){
         ...
       } 
Luokassa voidaan määritellä ns. metodeita (method). Metodi on jokin algoritmi. Algoritmi voi laskea ja palauttaa jonkin arvon tai sitten se vain "tekee jotakin".

Sovelluksen pääohjelma ohjelmoidaan aina(!) ylläolevan kaltaiseksi metodiksi: Se on aina julkinen (public), luokan oma (static), arvoa palauttamaton (void) ja nimeltään "main". Pääohjelmametodilla on aina parametrina String-taulukko, jonka nimi voi olla esim. "args". Tämän taulukon avulla pääohjelma saa käyttöönsä ns. komentoriviparametrit. Tähän palataan myöhemmin.

 

         System.out.println("Hoi maailma!");
Javan tulostusoperaatio on aika pitkä kirjoitettava. Seuraavaa selitystä ei ole vielä syytä ymmärtää, mutta korvaansa voi jo totutella siinä esiintyviin sanoihin:

Automaattisesti käytössä oleva pakkaus java.lang sisältää luokan System, jossa on PrintStream-tyyppinen kenttä out. Kaikille PrintStream-luokan ilmentymille on käytössä metodi println(String).

 
        "Hoi maailma!"
on merkkijono-olio, String-luokan eräs ilmentymä.

Ohjelman kirjoitus, käännös ja suoritus

Tässä esitellään ylläolevan sovelluksen toteuttaminen. tietojenkäsittelytieteen laitoksen Linux-järjestelmässä, mutta (kielen perusideoiden mukaisesti) vastaavalla tavalla pitäisi voida toimia muuallakin.

Laaditaan ensin jollakin editorilla (vaikkapa mikroemacsilla, komento ue Hoi.java) ohjelmatiedosto, "pääohjelmaluokka" Hoi.java:

 
     public class Hoi{
       public static void main(String[] args){
         System.out.println("Hoi maailma!");
       }
     } 

Tämä tiedosto käännetään Javan välikielelle (Bytecode) komennolla javac:
     javac Hoi.java
Jos kääntäjä ei havaitse mitään virheitä, syntyy välikielinen ns. class-tiedosto:
     Hoi.class
Kääntäjä tuottaa ohjelmatiedostossa "Hoi.java" olleen luokan "Hoi" nimen mukaan tiedoston "Hoi.class". Jos tiedostossa "Hoi.java" olisi useampia luokkia, niistä jokaisesta syntyisi oma class-tiedosto, jonka nimen alku on luokan nimi. (Jos tiedostossa on useampia luokkia, vain yksi niistä voi olla "public" ja juuri tuon luokan on oltava saman niminen kuin java-tiedoston nimen alkuosa.)

Tiedosto Hoi.class on suoritettava Bytecode-kielinen ohjelma. Se voidaan suorittaa tulkilla java:

     java Hoi

Komennon seurauksena kuvaruudulle tulostuu odotetusti:
     Hoi maailma!



Esimerkki sovelmasta

Sovelma (applet) on Javan Bytecode-välikielelle käännetty ohjelma. Se liitetään jollekin WWW-sivulle ja sen suorittaa selaimen oma Bytecode-tulkki. Sovelman oikeuksia on sovellukseen verrattuna huomattavasti rajoitettu; esimerkiksi tiedostonkäsittely ei yleensä ole mahdollista.

Suorittaisitko mistä tahansa löytyneen millaisen tahansa ohjelman omassa koneessasi? (Oikea vastaus on: EN!)

Seuraavassa on pikku sovelma, jolla hiiri voi syödä juustoa:

Selain ei ymmärrä Javaa!

Sovelman laatimista ei ole vielä tarkoitus opetella. Nyt riittää ymmärtää, että

Jos "kiellosta huolimatta" haluat katsoa sovelman koodia, tiedä että se on ohjelmoitu Javan versiolla 1.0.2. Uudempi kääntäjä 1.1.3 vähän rutisee, mutta kääntää kumminkin ...


Takaisin luvun 2 sisällysluetteloon.