Sisällys. JAVA-OHJELMOINTI Osa 1: Ohjelmoinnin perusteita. Ohjelmoinnin kehityssuuntia. Ohjelmointi 50-60 luvuilla. Ohjelmointi 80-90 luvuilla



Samankaltaiset tiedostot
4. Lausekielinen ohjelmointi 4.1

1. Olio-ohjelmointi 1.1

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

4. Luokan testaus ja käyttö olion kautta 4.1

5. HelloWorld-ohjelma 5.1

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki

5. HelloWorld-ohjelma 5.1

4. Lausekielinen ohjelmointi 4.1

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

12. Näppäimistöltä lukeminen 12.1

1 Tehtävän kuvaus ja analysointi

P e d a c o d e ohjelmointikoulutus verkossa

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

8. Näppäimistöltä lukeminen 8.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Java-kielen perusteet

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

8. Näppäimistöltä lukeminen 8.1

Java-kielen perusteet

1. Omat operaatiot 1.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Ohjelmoinnin perusteet, syksy 2006

Java-kielen perusteita

7. Oliot ja viitteet 7.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

15. Ohjelmoinnin tekniikkaa 15.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Ohjelmoinnin perusteet Y Python

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Harjoitustyö: virtuaalikone

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

11. Javan valintarakenteet 11.1

13. Loogiset operaatiot 13.1

Metodien tekeminen Javalla

Ohjelmoinnin peruskurssien laaja oppimäärä

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

13. Loogiset operaatiot 13.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

A TIETORAKENTEET JA ALGORITMIT

812341A Olio-ohjelmointi, I Johdanto

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Mikä yhteyssuhde on?

11. Javan valintarakenteet 11.1

14. Poikkeukset 14.1

14/20: Keittokirja I

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Sisältö. 2. Taulukot. Yleistä. Yleistä

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Olio-ohjelmointi Javalla

Tietorakenteet (syksy 2013)

14. Poikkeukset 14.1

Javan perusteita. Janne Käki

12. Monimuotoisuus 12.1

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

15. Ohjelmoinnin tekniikkaa 15.1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Sisältö. 22. Taulukot. Yleistä. Yleistä

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

ITKP102 Ohjelmointi 1 (6 op)

7/20: Paketti kasassa ensimmäistä kertaa

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

4. Olio-ohjelmoinista lyhyesti 4.1

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Ohjelmoinnin perusteet Y Python

5/20: Algoritmirakenteita III

Ohjelmoinnin perusteet Y Python

Jakso 4 Aliohjelmien toteutus

Tietotyypit ja operaattorit

Ohjelmistotekniikan menetelmät, koe

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Matematiikan ohjelmointi. Joakim von Wright

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

ELM GROUP 04. Teemu Laakso Henrik Talarmo

9. Periytyminen Javassa 9.1

Transkriptio:

JAVA-OHJELMOINTI Osa 1: Ohjelmoinnin perusteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Sisällys Ohjelmoinnin kehityssuuntia Ohjelman kehittäminen Algoritmin käsite Muuttujan käsite Laskennan kulku Ohjelmointi käytännössä Java ohjelmointikielenä Ensimmäinen Java-ohjelma 4.10.1999 E. Hyvönen: Java Osa 1 2 Ohjelmointi 50-60 luvuilla Ohjelmoinnin kehityssuuntia Ohjelmointi ensin konekielellä (biteillä, kytkimillä) Erittäin hidasta, hankalaa ja työlästä Konekielistä symbolisiin assemblerkieliin Lukujen korvaaminen lyhyillä nimillä Esim. kahden kokonaisluvun yhteenlasku: 010000110011101000111101010000010010101101000010 -> LOAD A ADD B STORE C Assebler kielistä lausekieliin (Fortran, Lisp, ) C=A+B tai C:=A+B tai (SETQ C A+B)... Kääntäjä tai tulkki hoitaa muunnoksen konekielelle Koneen ohjauksesta ongelman ratkaisun kuvaamiseen 4.10.1999 E. Hyvönen: Java Osa 1 4 Ohjelmointi 60-70 luvuilla Ohjelmointi 80-90 luvuilla Ohjelmoinnin kriisi Kehitystyön ja ylläpidon vaikeus Jatkuu edelleen: Alan työllisyys turvattu! Ratkaisumalli: rakenteinen ohjelmointi Ongelman ratkonta eri abstraktiotasoilla Ongelman jäsentely lohkoihin ja aliohjelmiin Kurinalainen ohjelmontitapa Esim. Goto-hyppyjen kieltäminen Kriisi jatkuu... Tärkein uusi idea: Olio-ohjelmointi Uusi tapa jäsentää tietorakenteet ja niitä käyttävät proseduurit itsenäisiksi kokonaisuuksiksi Proseduurit hierarkisesti järjestetyn tiedon osana Itsenäisten data-proseduuri-kokonaisuuksien kapselointi Bottom-up ohjelmointi Oliokirjastot Koodin uudelleenkäyttö Laajat ohjelmisto, käyttöliittymät Olio- ja rakenteisen ohjelmoinnin yhdistäminen Eri tekniikat tukevat toisiaan 4.10.1999 E. Hyvönen: Java Osa 1 5 4.10.1999 E. Hyvönen: Java Osa 1 6

Eräitä muita kehityssuuntia Kertausta Funktionaalinen ohjelmointi (Lisp, ) Jäsentely arvoja palauttaviksi funktioiksi ilman sivuvaikutuksia Deklaratiivinen ohjelmointi (Prolog, solvelluskehittimet, ) Ei kuvata ohjelman ratkaisutapaa -- ainoastaan ongelma Ratkaisu(t) löytyvät reunaehtojen avulla automaattisesti Tapahtuma-perustainen ohjelmointi Laskentaa ohjaavat tapahtumat vs. proseduurit Esim. Windows-ohjelmointi WWW-ohjelmointi Lähtökohtana selaimen käyttöliittymä ja etäkäyttö verkon yli Yleensä eri tapoja yhdistellään Lausekielen ja konekielen välinen suhde? Miten eroaa deklaratiivinen ohjelmointikieli proseduraalisesta? 4.10.1999 E. Hyvönen: Java Osa 1 7 4.10.1999 E. Hyvönen: Java Osa 1 8 Ohjelman kehittämisen vaiheet Ohjelman kehittäminen 1. Vaatimusmäärittely (requirements analysis) 2. Suunnittelu (design) 3. Toteutus (implementation) 4. Testaus (testing) Iteratiivinen prosessi T&K hankkeissa usein prototyyppilähestymistapa 4.10.1999 E. Hyvönen: Java Osa 1 10 Ohjelmien kirjoittaminen ja ajaminen Ohjelma kirjoitetaan lausekielellä Lähdekielinen (source) versio, tekstitiedosto Kielestä riippuen lähdekielinen koodi joko käännetään ja linkataan kääntäjällä ajettavaan (konekieliseen) binäärimuotoon tai tulkitaan (interpret) suoraan tulkilla tai muunnetaan symboliselle tulkittavalla välikielelle. Tuloksena oleva objektikoodi (binäärikoodi) voidaan ajaa 4.10.1999 E. Hyvönen: Java Osa 1 11 Virheiden etsiminen ja korjaaminen, ylläpito Kääntäjä/tulkki Ilmoittaa syntaksivirheet Esim. sulut väärin Testaus Löytyy ajonaikaiset virheet ja poikkeukset Esim. nollalla jako, tiedostoa ei voi avata Löytyy loogiset virheet Ohjelma ei toimi niinkuin määriteltiin tai haluttaisiin Virheenetsintä (debug) Jäljitetään ja analysoidaan virheet testeissä Tehdään korjaukset 4.10.1999 E. Hyvönen: Java Osa 1 12

Käännettävät kielet Muuta: Muistivuotojen etsintä Hankalaa monissa kielissä (C, C++,..) Javassa ongelmaa ei ole Profilointi Tehokkuuden pullonkaulojen etsintä Versionhallinta Ohjelmat elävät ja niitä tehdään tiimityönä Tästä syntyy ohjelmankehityssykli vaatimukset-> suunnittelu->toteutus->testaus->vaatimukset-> 4.10.1999 E. Hyvönen: Java Osa 1 13 Perinteinen kielen toteutustapa Esimerkiksi Fortran, Pascal, C, C++ Tuloksena tehokas konekieli (object code) Ongelmia: Käyttäjälle kömpelö erillinen käännösvaihe Hitaus: osittain kääntäminen hankalaa Konekieli voidaan ajaa vain käännösympäristössä Ristiinkääntäjällä voidaan kääntää eri ympäristöihin Epädynaamisuus: Monet päätökset tehdään jo käännöseikä ajovaiheessa Esimerkiksi muuttujien tyypin sitominen 4.10.1999 E. Hyvönen: Java Osa 1 14 Tulkittavat kielet Erillistä käännösvaihetta ei tarvita Ohjelma kehitetään usein tulkin kanssa keskustelemalla Käyttäjälle helpompi kehitystapa Ohjelman kasvattaminen osittain Dynaamisuus: Päätökset ajon aikana Ongelmia: Tulkki hitaampi: muunnos konekieleen ajoaikana Ohjelman ajaminen edellyttää tulkkia loppukäyttäjältä Ohjelmien koko, lisensiointikysymykset Hybridiratkaisu Ohjelman kehitys tulkaten ja lopuksi tehokas käännös 4.10.1999 E. Hyvönen: Java Osa 1 15 Välikieleen kääntäminen Mm. Java:ssa tehty ratkaisu Java-kääntäjä tuottaa välikielisen version (bytecode) Java-tulkki (virtuaalikone) tulkitsee välikieltä Miksi näin? Samaa välikielistä ohjelmaa voi ajaa eri ympäristöissä (Windows, Unix, MacOS, ) Riittää, että käyttäjän koneessa on Java-tulkki Käännettyjen ohjelmien nopeampi ajaminen verkon ylitse (sovelmat, applet) Tietoturva: Tulkki rajoittaa sovelman valtuuksia asiakaspäässä 4.10.1999 E. Hyvönen: Java Osa 1 16 Esimerkki: Java Linuxympäristössä xemacs ohjelma.java Laaditaan ohjelma javac ohjelma.java Käännös välikieleen -> ohjelma.class tiedosto java ohjelma Ajetaan ohjelma.class Java-tulkilla Käytettävissä myös erityisiä Java-ohjelmointiympäristöjä Editointi, kääntäminen, virheenetsintä ym. integroitu Kertausta Luettele ohjelmankehityksen eri vaiheet. Mitä virhetyyppeja ohjelmoinnissa esiintyy? Tulkitsemisen ja kääntämisen edut/haitat? Miksi Javassa käytetään välikieltä? 4.10.1999 E. Hyvönen: Java Osa 1 17 4.10.1999 E. Hyvönen: Java Osa 1 18

Algoritmin idea Algoritmin käsite Toimenpidesarja, joka suorittaa halutun toiminnan äärellisellä määrällä askeleita. Algoritmilla on aina tila: alkutilaa muuttamalla päästään lopputilaan Tilaa muutetaan toimenpidesarjalla (operation) Esimerkki: Ruokareseptit ovat algoritmeja Alkutilana tyhjä puhdas kulho ja ainekset tms. Tilana on valmistettava ruoka Lopputilana valmis ruoka tms. Operaatioina suolan lisäys, sekoittaminen yms. toimenpiteet 4.10.1999 E. Hyvönen: Java Osa 1 20 Algoritmien tutkimusalueita Nimi tulee 800-luvun persialaisesta matemaatikosta abu-jafar Mohammed ibn Musa al-khuwarizmi Samaa juurta kuin algebra -sana 4.10.1999 E. Hyvönen: Java Osa 1 21 Laskennan teoria Laskennan rajat, vaativuusluokat Algoritmien analyysi (algorithm analysis) Aika- ja tilakompleksisuuden muodot Worst-case, average case Keskeistä tietojenkäsittelytieteen aluetta Esimerkiksi puhelinnumeron etsiminen luettelosta Algoritmien oikeaksi todistaminen (proving, verification) Vaikeaa formaalisti Validiointi (validation) testaamalla helpompaa 4.10.1999 E. Hyvönen: Java Osa 1 22 Automaattinen ohjelmointi Ohjelmien syntetisointi kuvauksista Eri sovellusalueiden algoritmit Muuttujan käsite 4.10.1999 E. Hyvönen: Java Osa 1 23

Muuttujan idea Muuttuja (variable) on nimi, jolla on arvo. Arvo asetetaan sijoitusoperaatiolla (assignment): x = 5, vastaus = "Kyllä", data = new Alkio( ) Sijoitusoperaatio korvaa muuttujan aiemman arvon uudella Sijoitus on eri asia kuin vertailu matematiikassa x=x+2 Javassa: a+b = b+a = = = Olisi matemaattinen epätosi Universaali kaava kaikilla arvoilla Toimii sijoitusoperaationa Toimii yhtäsuuruuden vertailuna 4.10.1999 E. Hyvönen: Java Osa 1 25 Muuttujan tyypitys Lisäksi muuttujilla on tyyppi (type) Tietyn tyyppinen muuttuja voi saada vain samaa tyyppiä olevia arvoja. Vahvasti tyypitetyissä kielissä tyyppi pitää ilmoittaa etukäteen koodissa, eikä se voi muuttua ajon aikana. Heikosti tyypitetyissa kielissä muuttujan tyyppiä ei ole sidottu vaan määräytyy ajon aikana. 4.10.1999 E. Hyvönen: Java Osa 1 26 Tyypit Javassa Vahvan tyypityksen etuja tehokas koodi virheiden automaattinen tunnistus Heikon tyypityksen etuja koodi napakampaa, helpompi muuttaa dynaamisempi toiminta Java on vahvasti tyypitetty Muuttujat esiteltävä tyyppeineen ennen käyttöä int kokluku; String vastaus; Käyttäjä luo uusia omia tyyppejään (luokat) Olioajattelu antaa joustoa Käsitteellisesti yleisemmän tyypin muuttujalla voi olla alemman tyypin arvoja. 4.10.1999 E. Hyvönen: Java Osa 1 27 4.10.1999 E. Hyvönen: Java Osa 1 28 Algoritmien perusrakenteita Laskennan kulku Sijoituslauseet Arvojen asettaminen muuttujalle tai muulle tiedolle Arvolausekkeet Arvojen ilmaisumuodot, esim. aritmeettiset lausekkeet Loogista testiä edustavat lausekkeet (true/false) Käytetään mm. ohjauslauseissa Ohjauslauseet Peräkkäisyys: toimenpiteet suoritetaan annetussa järjestyksessä Ehdollisuus: eri toimintojen valinta testin perusteella Toisto: toistetaan joukko toimenpiteitä (jollain lopetusehdolla) Hierarkisuus: alialgoritmien kutsuminen Syöttö- ja tulostusoperaatiot 4.10.1999 E. Hyvönen: Java Osa 1 30

Esimerkkejä lue(x); // Peräkkäisyys lue(y); // Alialgoritmi, jossa luetaan z=x+y; kirjoita("tulos on: "); kirjoita(z); lue(x); // Ehdollisuus if (x==7) kirjoita("on seitsemän"); else kirjoita("ei ole seitsemän"); 4.10.1999 E. Hyvönen: Java Osa 1 31 x=50; while ( x<100) { // Toisto lopetusehdolla kirjoita(x*x); x=x-1; } 4.10.1999 E. Hyvönen: Java Osa 1 32 Kertausta Perusoperaatiotyypit löytyvät muodossa tai toisessa kaikista ohjelmointikielistä. Algoritmit voidaan kirjoittaa ohjelmointikieliriippumattomasti pseudokielellä. Algoritmi on yleinen laskennan/toiminnan abstraktio. Edellä olevaa kummempaa välineistöä ei tarvita (vähemmälläkin tullaan toimeen)! Kaikki ylipäätään mekanisoitavissa olevat toiminnat voidaan kuvata. 4.10.1999 E. Hyvönen: Java Osa 1 33 Luettele algoritmin perusrakenteita. 4.10.1999 E. Hyvönen: Java Osa 1 34 Reaalimaailman ohjelmat Ohjelmointi käytännössä Suuri määrä muuttujia Vain osa niistä olennaisia kulloinkin Tarvitaan mekanismeja muuttujien näkyvyyden säätelyyn Suuri määrä askeleita (jopa kymmeniä miljoonia) Kompleksisimpia ihmiskunnan aikaansaannoksia Toimenpiteet pitää jäsentää mielekkään kokoisiksi kokonaisuuksiksi Kokonaisuuden mahduttava näyttöön, lyhyys kaunistaa Ongelmien abstrahointi, osittaminen, kapselointi: ratkaiseminen eri tasoissa osissa Stepwise refinement, top-dopwn, structured programming Lohkot, aliohjelmat, oliot Koodin lyhyys, jäsentely ymmärrettäväksi 4.10.1999 E. Hyvönen: Java Osa 1 36

Ohjelmistotuotanto Pyrimys teollistyyppiseen ohjelmointiin Kurinalaisuus, "ohjelmistotehdas"-ajattelu Valmistus aiemmista raaka-aineista Menetelmät soveltuvat parhaiten Toistensa kaltaisten ohjelmistojen kehittämiseen Esim. eri kännykkämallien ohjelmistoversiot Ohjelmointi on kuitenkin usein käsityötä Uniikkitavaran valmistusta Aina ei edes tarkkaan tiedetä millainen tuloksen pitäisi olla Ohjelmointi on enemmän taidetta kuin tiedettä Mutta näköistaidetta! Java ohjelmointikielenä 4.10.1999 E. Hyvönen: Java Osa 1 37 Java-kielen lähtökohtia Olio-keskeisyys Tiedon ja proseduurien moderni jäsentely Filosofinen perusta: systemaattinen olio-ajattelu Ympäristöriippumattomuus Sama ohjelma pitää voida ajaa kaikkialla Kieli Internet/Intranet-ympäristöön Ohjelman suoritus verkon kautta Tietoturvaongelmien hallinta Miten uskaltaisin käynnistää tuntemattoman ohjelman koneessani? 4.10.1999 E. Hyvönen: Java Osa 1 39 Historiaa Aluksi Oak-kieli sulautettuihin järjestelmiin 90-luvun alussa Sitten siirto Internet-ympäristöön Java-nimisenä Julkistus 1996 Pääkehittäjänä James Gosling (SUN Microsystems) Kaupallisen yrityksen vapaa standardi Otettu laajaan käyttöön erittäin nopeasti Uusin versio 1.2.2, "Java 2 SDK" versio 1.1 kurssin oppikirjoissa perusasiat eivät ole muuttuneet 4.10.1999 E. Hyvönen: Java Osa 1 40 Javan perusominaisuuksia Syntaksi peräisin C ja C++ kielistä Helppo omaksua nämä jo tunteville Pieni mutta ilmaisuvoimainen kieli Vähän varattuja sanoja ja muotoja Laajentuu oliokirjastojen avulla Laaja tarjonta eri tehtäviä/sovelluksia varten Laaja hajautettu kehittäjien verkosto Vahva tyypitys Unicode merkkijärjestelmä Tukee useimpia maailman kieliä 4.10.1999 E. Hyvönen: Java Osa 1 41 Poikkeusten käsittely (exceptions) Virhetilanteista hallittu toipuminen Rinnakkaisohjelmointi (threads) Eri tehtävien näennäisesti samanaikainen suorittaminen Automaattinen muistinhallinta Varattu muisti vapatuu ilman eri ohjelmointia, kun muistia ei enää tarvita Käännös Bytecode-välikielelle Tulkitaan virtuaalikoneella eri ajoympäristöissä 4.10.1999 E. Hyvönen: Java Osa 1 42

Kertausta Sovellusohjelmatyypit Tavallinen ohjelma, joka ajetaan omassa koneessa Sovelma, applet, joka ajetaan WWW:n kautta asiakaspäässä Servletti, joka ajetaan WWW:n kautta palvelinpäässä Tietoturvallisuuden takaaminen Sovelma ei pääse käsiksi asiakaskoneen tiedostoihin. Sovelma voi ottaa yhteyden vain kutsujaansa. Pointer-tietotyyppi puuttuu: muisti on suojattu. Luettele Javan ominaispiirteitä. Minkälaisia ohjelmatyyppejä asiakaspalvelinympäristössä Javalla voi tehdä? 4.10.1999 E. Hyvönen: Java Osa 1 43 4.10.1999 E. Hyvönen: Java Osa 1 44 Hoi maailma - ohjelma Ensimmäinen Java-ohjelma class Hoi { public static void main(string[] args) { System.out.println("Hoi maailma!"); } } class Hoi { } Hoi luokan määrittely. Lähes kaikki Java-koodi kirjoitetaan jonkin luokkamäärittelyn sisään. 4.10.1999 E. Hyvönen: Java Osa 1 46 Hoi maailma -ajo public static void main(string[] args) { } Pääohjelma On oltava joissain luokassa. Pääohjelma on eräs metodi. Javassa algoritmit toteutetaan metodeilla. System.out.println("Hoi maailma!"); Tulostaa päätteelle viestin (ja rivinvaihdon). javac Hoi.java Kännetään tiedosto välikielelle. Kääntäjä osoittaa mahdolliset virheet. Jos ei virheilmoituksi, muodostuu Hoi.class -tiedosto. java Hoi Ajetaan ohjelma: Tulostuu "Hoi maailma!" Huom. "java Hoi.class" aiheuttaisi virheilmoituksen! 4.10.1999 E. Hyvönen: Java Osa 1 47 4.10.1999 E. Hyvönen: Java Osa 1 48

Kertausta Mitä tekevät seuraavat komennot java koe java koe.java java koe.class javac koe javac koe.java javac koe.class Lisätietoja Arto Wikla: Ohjelmoinnin perusteet Java-kielellä, OtaDATA, 1998. John Lewis, William Loftus: Java Software Solutions, Addison-Wesley, 1998. 4.10.1999 E. Hyvönen: Java Osa 1 49 4.10.1999 E. Hyvönen: Java Osa 1 50