Tässä luvussa tutustutaan pienen pieneen Java-ohjelmaan, sen kääntämiseen ja suorittamiseen. Tavallisia ohjelmia kutsutaan sovelluksiksi (application). Myös internet-selaimella suoritettavasta ohjelmasta, sovelmasta (applet) nähdään pikkuriikkinen esimerkki.
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).
Java-jargonissa "metodi" tarkoittaa nimettyä algoritmia.
Yleisesti käytetty nimi tällaiselle on aliohjelma (subroutine).
Metodi voi laskea ja palauttaa jonkin arvon tai vain "tehdä jotakin".
Sovelluksen pääohjelma ohjelmoidaan Java-kielessä aina ylläolevan kaltaiseksi metodiksi: Se on aina julkinen (public), luokkaan liittyvä (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. Näihin asiohin palataan myöhemmin.
System.out.println("Hoi maailma!");
Javan tulostusoperaatio on valitettavan 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. PrintStream-luokan ilmentymille on käytössä metodi println(String), jolla voidaan tulostaa tekstiä esimerkiksi näyttöruudulle.
"Hoi maailma!"
on merkkijono-olio, String-luokan eräs ilmentymä.
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 suoritetaan Java-tulkilla komennolla java:
java Hoi
Huomaa että komento ei saa olla muodossa java
Hoi.class!
Komennon seurauksena ohjelma suoritetaan ja kuvaruudulle tulostuu odotetusti:
Hoi maailma!
Suorittaisitko mistä tahansa löytyneen millaisen tahansa ohjelman omassa koneessasi? (Oikea vastaus on: EN!)
Seuraavassa on pikku sovelma, jolla hiiri voi syödä juustoa:
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 vanhalla versiolla. Uudemmat kääntäjät vähän rutisevat, mutta kääntävät kuitenkin ...
Takaisin luvun 2 sisällysluetteloon.