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.
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ä.
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!
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 versiolla 1.0.2. Uudempi kääntäjä 1.1.3 vähän rutisee, mutta kääntää kumminkin ...
Takaisin luvun 2 sisällysluetteloon.