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.
1.2 Java-kielestä
(Muutettu viimeksi 10.9.1997)
"Java is a general-purpose concurrent class-based object-oriented
programming language, specifically designed to have as few
implementation dependencies as possible. Java allows application
developers to write a program once and then be able to run it
everywhere on the Internet."
(Gosling, Joy, Steele: The Java Language Specification, 1996)
Tämä luku on pikainen katsaus Java-ohjelmointikielen luonteeseen.
Kaikkea ei ole välttämätöntä vielä ymmärtää.
Syntyhistoria:
- James Gosling suunnitteli Oak-nimisen kielen alunperin ns.
upotettujen
järjestelmien toteuttamiseen (kulutuselektroniikkaa varten!)
(Sun Microsystems inc.)(1991)
- Kieltä kehiteltiin useita vuosia (Ed Frank, Patrick Naughton,
Jonathan Payne, Chris Warth).
- Uudeksi sovellusalueeksi kielen kehittelyssä otettiin Internet ja
kieli nimettiin Javaksi. (Jaava on Indonesian pääsaari,
jaavalainen kahvi on hyväksi tunnettua!)
- Kielen määrittely "The Java Language Specification" julkaistiin
elokuussa 1996.
- Kieli on sen jälkeenkin hieman muuttunut (spesifikaatio määritteli
kielen 1.0 version, versioon 1.1 on lisätty muutamia vahvoja
piirteitä).
Perusominaisuuksia:
- C++:n (ja siis C:n) lauseet ja lausekkeet ("niiden hyvät puolet")
- olio-ohjelmointi: luokat, periytyminen, luokan ilmentymät eli
oliot
(ei luokkien moniperintää, mutta interface-moniperintä)
- vahva tyypitys
- "kaikki määritelty"
- Unicode: mykistävä merkkivalikoima
- "pieni kieli": vähän varattuja sanoja ja syntaktisia rakenteita,
silti hyvin ilmaisuvoimainen
- poikkeusten käsittely
- rinnakkaisuus
- automaattinen roskienkeruu
- hyvin monipuoliset, täsmällisesti määritellyt kirjastot
(kaikille samat!); mm. graafinen käyttöliittymä, tietoliikenne
verkossa, ...
- pyrkimys toteutusriippumattomuuteen ja ohjelmien siirrettävyyteen
- välikielen käyttö (Bytecode):
"käännetään missä käännetään, aina syntyy sama tulos",
"suoritetaan missä suoritetaan, seuraukset ovat aina samat"
(mutta ...)
- "kaiken täsmällinen määrittely": tietotyypit, kirjastot
- sovellusten (application) - tavallisten
ohjelmien - lisäksi kielellä
voi laatia ns. sovelmia
(applet), joiden idea on:
- WWW-selain noutaa välikielisen ohjelmatiedoston palvelun
tarjoajan koneesta
- selaimeen sisäänrakennettu tulkki suorittaa välikielisen
ohjelman käyttäjän omassa koneessa
- järjestelmään liittyy tarkistus siitä, että sovelma ei
voi tehdä mitään, mikä vaarantaa sovelman käyttäjän
tietojen suojauksen (vielä on ongelmia!)
Tulevaisuuden visio(?):
- Ohjelman osat (luokkakirjastot) voivat sijaita missä vain
verkkomaailmassa. Kun jotain palvelua tarvitaan, se käydään hakemassa
sieltä, mistä se löytyy. Haettu ohjelma puolestaan voi hakea
tarvitsemiaan osia muualta, jne. Ohjelmia ei näin enää osteta
omaksi vaan niiden yhdestä käyttökerrasta maksetaan "verkkopennejä".
Javan 'mikrorakenne' - lauseet ja lausekket - on kotoisin C++:sta,
siis oikestaan C:stä. Kielessä on tietenkin paljon vaikutteita muista
oliokielistä, mutta siinä voi nähdä jälkiä myös kehityslinjasta,
jonka aloitti Algol60, ja jota myös esimerkiksi Pascal edustaa:
vahva tyypitys on tärkein esimerkki. Java on tapana lukea kuitenkin
C:n ja C++:n kehityslinjaan.
Eroja ei käsitellä kurssilla tarkemmin, mutta seuraavista voi olla
iloa ohjelmointia jo osaavalle:
Takaisin luvun 1 sisällysluetteloon.