Sisällys
![[Kansikuva]](KansiPieni.png)
1 Johdanto Javaan
1.1 Taustaa
1.2 JavaScript ja Ajax
1.3 Java ja C/C++
1.4 Javan ominaisuuksia pähkinänkuoressa
1.5 Javan kehittyminen
2 Ohjelmoinnin historiasta1.2 JavaScript ja Ajax
1.3 Java ja C/C++
1.4 Javan ominaisuuksia pähkinänkuoressa
1.5 Javan kehittyminen
2.1 Ohjelmointikielten historiasta
2.2 Oliokielten historiasta
3 Ensimmäiset ohjelmat2.2 Oliokielten historiasta
3.1 Ohjelman kirjoittaminen ja kääntäminen
3.2 Ensimmäinen sovellus
4 Olioperustainen ohjelman kehittäminen3.2 Ensimmäinen sovellus
3.2.1 Ohjelmakoodin kirjoittaminen
3.2.2 Koodin rakenne
3.2.3 Välikielelle kääntäminen
3.2.4 Sovelluksen ajaminen
3.3 Työskentely Eclipsellä3.2.2 Koodin rakenne
3.2.3 Välikielelle kääntäminen
3.2.4 Sovelluksen ajaminen
3.3.1 Eclipseen tutustuminen
3.3.2 Ensimmäinen projekti
3.3.3 Sovellus Eclipsellä
3.4 Tehtäviä3.3.2 Ensimmäinen projekti
3.3.3 Sovellus Eclipsellä
4.1 Johdatus olioperustaiseen ohjelman kehittämiseen
4.2 Esitutkimus
4.3 Vaatimusanalyysi
5 Luokat ja oliot4.2 Esitutkimus
4.3 Vaatimusanalyysi
4.3.1 Käyttötapaukset
4.3.2 Luokkien ja attribuuttien tunnistaminen
4.3.3 Tietohakemisto
4.3.4 Assosiaatiot
4.3.5 Luokkakaavio
4.4 Järjestelmäsuunnittelu4.3.2 Luokkien ja attribuuttien tunnistaminen
4.3.3 Tietohakemisto
4.3.4 Assosiaatiot
4.3.5 Luokkakaavio
4.4.1 Arkkitehtuuri
4.4.2 Suunnittelumallit
4.5 Oliosuunnittelu4.4.2 Suunnittelumallit
4.5.1 Luokkien toimintojen määrittäminen
4.5.2 Assosiaatioiden tarkastelu ja suunnittelu
4.5.3 Luokkakaavion viimeistely
4.5.4 Algoritmien suunnittelu
4.6 Toteutuksen kautta ylläpitoon4.5.2 Assosiaatioiden tarkastelu ja suunnittelu
4.5.3 Luokkakaavion viimeistely
4.5.4 Algoritmien suunnittelu
4.6.1 Toteutus ja testaus
4.6.2 Käyttöönotto ja ylläpito
4.7 Tehtäviä4.6.2 Käyttöönotto ja ylläpito
5.1 Olio-ohjelmoinnin peruskäsitteitä
5.2 Luokkien määrittely
5.3 Tunnukset ja Javan avainsanat
5.4 Muuttujat ja attribuutit
5.8 Luokkakaavion luokan toteuttaminen
5.9 Tehtäviä
6 Kontrollirakenteet5.2 Luokkien määrittely
5.3 Tunnukset ja Javan avainsanat
5.4 Muuttujat ja attribuutit
5.4.1 Muuttujien määrittely ja tietotyypit
5.4.2 Muuttujien arvojen tulostaminen
5.4.3 Muotoiltu tulostus
5.4.4 Tyyppimuunnokset primitiivityyppien välillä
5.4.5 Literaalit ja lukujärjestelmät
5.4.6 Muunnokset lukujärjestelmien välillä
5.4.7 Attribuuttien määrittely
5.4.8 Operaattorit
5.4.9 Käyttäjän kanssa keskusteleva ohjelma
5.5 Metodit5.4.2 Muuttujien arvojen tulostaminen
5.4.3 Muotoiltu tulostus
5.4.4 Tyyppimuunnokset primitiivityyppien välillä
5.4.5 Literaalit ja lukujärjestelmät
5.4.6 Muunnokset lukujärjestelmien välillä
5.4.7 Attribuuttien määrittely
5.4.8 Operaattorit
5.4.9 Käyttäjän kanssa keskusteleva ohjelma
5.5.1 Metodien määrittely
5.5.2 Metodien kutsuminen
5.5.3 Metodien kuormittaminen
5.6 Olioiden elinkaari5.5.2 Metodien kutsuminen
5.5.3 Metodien kuormittaminen
5.6.1 Olioiden luonti
5.6.2 Olion tilan alustaminen
5.6.3 Olioihin viittaavat muuttujat
5.6.4 Olion metodien kutsuminen
5.6.5 Olioiden tuhoaminen
5.6.6 Muistinhallinta
5.7 Koodin muotoilusta5.6.2 Olion tilan alustaminen
5.6.3 Olioihin viittaavat muuttujat
5.6.4 Olion metodien kutsuminen
5.6.5 Olioiden tuhoaminen
5.6.6 Muistinhallinta
5.8 Luokkakaavion luokan toteuttaminen
5.9 Tehtäviä
6.1 Logiikkaa ja ehtolausekkeita
7 Merkit ja merkkijonot
6.1.1 Yhtäsuuruusoperaattorit
6.1.2 Vertailuoperaattorit
6.1.3 Loogiset operaattorit
6.2 Valintalauseet6.1.2 Vertailuoperaattorit
6.1.3 Loogiset operaattorit
6.2.1 if-lauseet
6.2.2 Ehto-operaattori
6.2.3 switch-lause
6.3 Toistolauseet6.2.2 Ehto-operaattori
6.2.3 switch-lause
6.3.1 while
6.3.2 do-while
6.3.3 for
6.3.4 Parannettu for-silmukka
6.3.5 Yleisiä virheitä
6.4 Hyppylauseet6.3.2 do-while
6.3.3 for
6.3.4 Parannettu for-silmukka
6.3.5 Yleisiä virheitä
6.4.1 return-lause
6.4.2 break-lause
6.4.3 continue-lause
6.5 Tehtäviä6.4.2 break-lause
6.4.3 continue-lause
7.1 Merkit ja merkistöt
7.2 Merkkijonot ja String-luokka
7.3 Merkkien ja merkkijonojen käsittely
7.5 Säännölliset lausekkeet
8 Taulukot7.2 Merkkijonot ja String-luokka
7.3 Merkkien ja merkkijonojen käsittely
7.3.1 Character-luokka
7.3.2 StringBuilder ja StringBuffer
7.3.3 StringTokenizer
7.4 Merkkijonojen muuntaminen primitiivityypeiksi7.3.2 StringBuilder ja StringBuffer
7.3.3 StringTokenizer
7.5 Säännölliset lausekkeet
7.5.1 Merkkijoukot ja toisto
7.5.2 Javan regexp API
7.5.3 Rajahahmot ja tunnistajan ahneus
7.6 Tehtäviä7.5.2 Javan regexp API
7.5.3 Rajahahmot ja tunnistajan ahneus
8.1 Taulukkoon viittaavat muuttujat ja taulukon luonti
8.2 Taulukon alkioon viittaaminen
8.3 Taulukko metodin parametrina
8.4 Taulukon sisällön kopiointi toiseen taulukkoon
8.5 2-ulotteiset taulukot
8.6 Vaihteleva määrä metodin parametreja
8.7 Esimerkki: ajat järjestyksessä
8.8 Tehtäviä
9 Javan perusteet8.2 Taulukon alkioon viittaaminen
8.3 Taulukko metodin parametrina
8.4 Taulukon sisällön kopiointi toiseen taulukkoon
8.5 2-ulotteiset taulukot
8.6 Vaihteleva määrä metodin parametreja
8.7 Esimerkki: ajat järjestyksessä
8.8 Tehtäviä
9.1 Luokkakohtaiset piirteet
9.3 Luokkakohtaisten piirteiden tuonti
9.4 Kääreluokat ja primitiivityyppien automaattinen käärintä
9.5 Liittymät
9.6 Periytyminen
9.8 Geneeriset tyypit
9.10 Lueteltu tietotyyppi
9.11 Rekursio
9.12 Metaluokka Class
9.13 Sivuhuomautukset
9.14 Tehtäviä
10 Kokoelmat - olioiden säilyttäjät
9.1.1 Vakioarvot ja vakiomuuttujat
9.1.2 Tehdasmetodit ja ainokaiset
9.2 Pakkaukset ja luokkien tuonti9.1.2 Tehdasmetodit ja ainokaiset
9.3 Luokkakohtaisten piirteiden tuonti
9.4 Kääreluokat ja primitiivityyppien automaattinen käärintä
9.5 Liittymät
9.6 Periytyminen
9.6.1 Abstraktit luokat
9.6.2 Dynaaminen sidonta ja monimuotoisuus
9.6.3 Rakentajien kutsuminen
9.6.4 Luokan muiden rakentajien kutsuminen
9.6.5 this ja super
9.6.6 Object-luokan metodit
9.7 Tyyppimuunnokset ja olion tyypin tutkiminen9.6.2 Dynaaminen sidonta ja monimuotoisuus
9.6.3 Rakentajien kutsuminen
9.6.4 Luokan muiden rakentajien kutsuminen
9.6.5 this ja super
9.6.6 Object-luokan metodit
9.8 Geneeriset tyypit
9.8.1 Geneeristen tyyppien määrittely
9.8.2 Geneeristen tyyppien alityypitys ja jokerityyppi
9.8.3 Uuden ja vanhan koodin yhteiskäyttö
9.9 Sisäluokat9.8.2 Geneeristen tyyppien alityypitys ja jokerityyppi
9.8.3 Uuden ja vanhan koodin yhteiskäyttö
9.10 Lueteltu tietotyyppi
9.11 Rekursio
9.12 Metaluokka Class
9.13 Sivuhuomautukset
9.14 Tehtäviä
10.1 Tiedon lajittelu
10.3 Algoritmien vaativuus
10.4 Yleisiä tietorakenteita
10.5 Kokoelmat ja olioiden vertailu
10.7 Yleinen kokoelma - Collection
10.8 Iteraattori - Iterator
10.9 Joukot - HashSet ja TreeSet
10.10 Javan listarakenteet - ArrayList ja LinkedList
10.11 Avainnetut kokoelmat - HashMap ja TreeMap
10.12 Yhteenveto kokoelmista
10.13 Kokoelmakehyksen algoritmit
10.14 Luokkakaavion viittausten toteuttaminen
10.15 Ohjelman suorituskyvyn parantaminen
11 Kun jokin menee kuitenkin pieleen - poikkeukset
10.1.1 Kuplalajittelu
10.1.2 Valintalajittelu
10.1.3 Lisäyslajittelu
10.1.4 Lomituslajittelu
10.1.5 Pikalajittelu
10.2 Tiedon haku10.1.2 Valintalajittelu
10.1.3 Lisäyslajittelu
10.1.4 Lomituslajittelu
10.1.5 Pikalajittelu
10.3 Algoritmien vaativuus
10.4 Yleisiä tietorakenteita
10.5 Kokoelmat ja olioiden vertailu
10.5.1 Object.equals
10.5.2 Object.hashCode
10.5.3 Comparable
10.5.4 Comparator
10.6 Kokoelmakehys10.5.2 Object.hashCode
10.5.3 Comparable
10.5.4 Comparator
10.7 Yleinen kokoelma - Collection
10.8 Iteraattori - Iterator
10.9 Joukot - HashSet ja TreeSet
10.10 Javan listarakenteet - ArrayList ja LinkedList
10.11 Avainnetut kokoelmat - HashMap ja TreeMap
10.12 Yhteenveto kokoelmista
10.13 Kokoelmakehyksen algoritmit
10.14 Luokkakaavion viittausten toteuttaminen
10.15 Ohjelman suorituskyvyn parantaminen
10.15.1 Pullonkaulojen tunnistaminen
10.15.2 Yleisiä ohjeita
10.15.3 Turhien olioiden välttäminen
10.15.4 Merkkijonojen käsittely
10.15.5 Vältä muistin turhaa varaamista
10.15.6 Välimuistit ja resurssivarannot
10.16 Tehtäviä10.15.2 Yleisiä ohjeita
10.15.3 Turhien olioiden välttäminen
10.15.4 Merkkijonojen käsittely
10.15.5 Vältä muistin turhaa varaamista
10.15.6 Välimuistit ja resurssivarannot
11.1 Erilaisia poikkeuksia
11.2 Poikkeuksen aiheuttajan paikallistaminen
11.3 Poikkeustilanteen käsittely - try, catch ja finally
11.4 Käsiteltävät poikkeukset
11.5 Omat poikkeukset ja poikkeuksen aiheuttaminen
11.6 Ohjeita poikkeusten käyttämiseen
11.7 Tehtäviä
12 Testaus ja virheiden etsintä11.2 Poikkeuksen aiheuttajan paikallistaminen
11.3 Poikkeustilanteen käsittely - try, catch ja finally
11.4 Käsiteltävät poikkeukset
11.5 Omat poikkeukset ja poikkeuksen aiheuttaminen
11.6 Ohjeita poikkeusten käyttämiseen
11.7 Tehtäviä
12.1 Käännösaikaiset virheet
12.2 Ajonaikaiset ja loogiset virheet - bugit
12.3 Virheiden etsintää testaamalla
12.4 Ohjelman virheiden korjaaminen
12.5 Assert ja sopimuspohjainen suunnittelu
12.6 Tehtäviä
13 Mistä apua?12.2 Ajonaikaiset ja loogiset virheet - bugit
12.3 Virheiden etsintää testaamalla
12.4 Ohjelman virheiden korjaaminen
12.5 Assert ja sopimuspohjainen suunnittelu
12.6 Tehtäviä
13.1 JDK:n dokumentaatio
13.2 Omien luokkien dokumentointi
13.3 Tehtäviä
14 Graafiset käyttöliittymät13.2 Omien luokkien dokumentointi
13.3 Tehtäviä
14.1 Tapahtumapohjainen ohjelmointi
14.2 Swingin komponentit
14.3 Ensimmäinen ohjelma
14.4 Tapahtumien käsittely
14.5 Säiliöt ja asettelijat
15 Käyttöliittymän ohjelmointi Eclipsellä14.2 Swingin komponentit
14.3 Ensimmäinen ohjelma
14.4 Tapahtumien käsittely
14.5 Säiliöt ja asettelijat
14.5.1 FlowLayout
14.5.2 BorderLayout
14.5.3 GridLayout
14.5.4 GridBagLayout
14.5.5 BoxLayout
14.6 Muut komponentit14.5.2 BorderLayout
14.5.3 GridLayout
14.5.4 GridBagLayout
14.5.5 BoxLayout
14.6.1 Ikkuna
14.6.2 Viestiruudut
14.6.3 Tekstikomponentit
14.6.4 Painikkeet ja napit
14.6.5 Luettelo- ja yhdistelmäruutu
14.6.6 Puukomponentti JTree
14.6.7 Taulukkokomponentti JTable
14.7 Valikot ja välinepalkki14.6.2 Viestiruudut
14.6.3 Tekstikomponentit
14.6.4 Painikkeet ja napit
14.6.5 Luettelo- ja yhdistelmäruutu
14.6.6 Puukomponentti JTree
14.6.7 Taulukkokomponentti JTable
14.7.1 Valikkopalkki JMenuBar
14.7.2 Ponnahdusvalikko JPopupMenu
14.7.3 Välinepalkki JToolBar
14.7.4 Komponenttien yhdistetyt toimet
14.8 Näytölle piirtäminen14.7.2 Ponnahdusvalikko JPopupMenu
14.7.3 Välinepalkki JToolBar
14.7.4 Komponenttien yhdistetyt toimet
14.8.1 Komponentin piirtämisen pelisäännöt
14.8.2 Piirtämisen perusteet
14.8.3 Java 2D API
14.8.4 Tekstin piirtäminen
14.8.5 Kuvien piirtäminen
14.8.6 Animointi
14.9 Tehtäviä14.8.2 Piirtämisen perusteet
14.8.3 Java 2D API
14.8.4 Tekstin piirtäminen
14.8.5 Kuvien piirtäminen
14.8.6 Animointi
15.1 Ohjelman perustukset
15.2 Komponenttien lisäys käyttöliittymään
15.3 Komponenttien ominaisuuksien muuttaminen
15.4 Asettelijoiden muuttaminen
15.5 Tapahtumien käsitteleminen
15.6 Oma dialogi
15.7 Tehtäviä
16 Sovelmat15.2 Komponenttien lisäys käyttöliittymään
15.3 Komponenttien ominaisuuksien muuttaminen
15.4 Asettelijoiden muuttaminen
15.5 Tapahtumien käsitteleminen
15.6 Oma dialogi
15.7 Tehtäviä
16.1 JApplet-luokka
16.2 Sovelman tekeminen
16.3 Kuvat ja äänet
16.4 Sovelma sovelluksena
16.5 Luokkien paketointi
17 Ohjelman kansainvälistäminen16.2 Sovelman tekeminen
16.3 Kuvat ja äänet
16.4 Sovelma sovelluksena
16.5 Luokkien paketointi
17.1 Kielen ja maan määrittely
17.2 Merkkijonojen eristäminen
17.3 Tulostuksen muotoilu
17.4 Merkkijonojen vertailu
17.5 Esimerkki: Lintubongari
17.6 Tehtäviä
18 JavaBeans17.2 Merkkijonojen eristäminen
17.3 Tulostuksen muotoilu
17.4 Merkkijonojen vertailu
17.5 Esimerkki: Lintubongari
17.6 Tehtäviä
18.1 Ominaisuudet
18.2 Tapahtumat
18.3 Pavun paketointi ja käyttö Eclipsessä
18.4 Tehtäviä
19 Tehtävien samanaikainen suorittaminen - säikeet18.2 Tapahtumat
18.3 Pavun paketointi ja käyttö Eclipsessä
18.4 Tehtäviä
19.1 Johdatus rinnakkaisuuteen
19.2 Prosessit ja säikeet
19.3 Säikeiden suorituksen hallinta
19.4 Tehtävien ajastaminen
19.5 Kommunikointi
19.6 Toiminnan tahdistaminen
19.7 Rinnakkaisuuden sudenkuopat
19.8 Swing ja säikeet
19.9 Tehtäviä
20 Tiedostot ja tietovirrat19.2 Prosessit ja säikeet
19.3 Säikeiden suorituksen hallinta
19.4 Tehtävien ajastaminen
19.5 Kommunikointi
19.6 Toiminnan tahdistaminen
19.7 Rinnakkaisuuden sudenkuopat
19.8 Swing ja säikeet
19.9 Tehtäviä
20.1 Tietovirtaan kirjoittaminen
20.2 Tiedostosta lukeminen
20.3 Muita tietovirtoja
20.4 Olioiden tallentaminen ja lukeminen
20.5 Tiedostojen käsittelyä
20.6 Tehtäviä
21 Tietoliikenne verkossa20.2 Tiedostosta lukeminen
20.3 Muita tietovirtoja
20.4 Olioiden tallentaminen ja lukeminen
20.5 Tiedostojen käsittelyä
20.6 Tehtäviä
21.1 Johdatus tietoliikenteeseen
21.2 Tietoliikenne HTTP-protokollaa käyttäen
21.3 Asiakas ja palvelin
21.4 Rupattelusovellus
21.5 Tehtäviä
22 Järjestelmäohjelmointi21.2 Tietoliikenne HTTP-protokollaa käyttäen
21.3 Asiakas ja palvelin
21.4 Rupattelusovellus
21.5 Tehtäviä
22.1 Sovelluksen parametrit
22.2 Sovelman parametrit
22.3 System ja Runtime
22.4 Tehtäviä
23 Tietokantojen käyttö22.2 Sovelman parametrit
22.3 System ja Runtime
22.4 Tehtäviä
23.1 Johdatus tietokantoihin
23.2 JDBC - yhteys tietokantaan Javalla
23.3 Johdatus SQL-kieleen
23.4 Java DB
23.5 Tietokantayhteyden muodostaminen
23.6 Tietokannan tietojen muuttaminen
23.7 Tietojen hakeminen kannasta
23.8 Valmistellut kyselyt
23.9 SQL ja sovelluksen tietoturva
23.10 Tapahtumat
23.11 Taulujen väliset liitokset
23.12 Java Persistence API
24 Verkkopalvelut23.2 JDBC - yhteys tietokantaan Javalla
23.3 Johdatus SQL-kieleen
23.4 Java DB
23.5 Tietokantayhteyden muodostaminen
23.6 Tietokannan tietojen muuttaminen
23.7 Tietojen hakeminen kannasta
23.8 Valmistellut kyselyt
23.9 SQL ja sovelluksen tietoturva
23.10 Tapahtumat
23.11 Taulujen väliset liitokset
23.12 Java Persistence API
23.12.1 Sovelluksen arkkitehtuuri
23.12.2 Entiteettiolioiden suhde tietokantaan
23.12.3 Optimistinen lukitus
23.12.4 Olioiden etsiminen kyselyin
23.12.5 Suhteet
23.13 Tehtäviä23.12.2 Entiteettiolioiden suhde tietokantaan
23.12.3 Optimistinen lukitus
23.12.4 Olioiden etsiminen kyselyin
23.12.5 Suhteet
24.1 Johdatus HTTP-protokollaan
24.2 Javan Web-sovelluksen rakenne
24.3 Johdatus palvelinsovelmiin
24.4 Ensimmäinen palvelinsovelma
24.5 Pyynnön otsikon tiedot
24.6 POST-viestin käsittely ja parametrit
24.7 Evästeet
24.8 Istunnot
24.9 Tietokannan käyttö palvelinsovelmassa
24.10 Johdatus JSP-teknologiaan
24.11 Yksinkertainen JSP-sivu
24.12 Sivua koskevat attribuutit
24.13 Sivulla käytössä olevat oliot
24.14 Sivujen sisällyttäminen
24.15 Olioiden käyttäminen sivuilla
24.16 Olioiden arvojen tulostus ja automaattinen asettaminen
24.17 Virheiden käsittely
24.18 JavaServer Faces
24.19 Tehtäviä
25 Java Enterprise Edition24.2 Javan Web-sovelluksen rakenne
24.3 Johdatus palvelinsovelmiin
24.4 Ensimmäinen palvelinsovelma
24.5 Pyynnön otsikon tiedot
24.6 POST-viestin käsittely ja parametrit
24.7 Evästeet
24.8 Istunnot
24.9 Tietokannan käyttö palvelinsovelmassa
24.10 Johdatus JSP-teknologiaan
24.11 Yksinkertainen JSP-sivu
24.12 Sivua koskevat attribuutit
24.13 Sivulla käytössä olevat oliot
24.14 Sivujen sisällyttäminen
24.15 Olioiden käyttäminen sivuilla
24.16 Olioiden arvojen tulostus ja automaattinen asettaminen
24.17 Virheiden käsittely
24.18 JavaServer Faces
24.19 Tehtäviä
25.1 Enterprise JavaBeans
Liite 2: UML Yhdellä sivulla
Liite 3: Yleisiä virheitä
25.1.1 Session Beans
25.1.2 Message Driven Beans
25.1.3 Ajoympäristön palvelut
25.2 Web Services - Www-sovelluspalvelut25.1.2 Message Driven Beans
25.1.3 Ajoympäristön palvelut
25.2.1 Www-sovelluspalvelujen standardit
25.2.2 Www-sovelluspalvelun toteuttaminen
25.2.3 Www-sovelluspalvelun käyttäminen
26 Viimeinen luku25.2.2 Www-sovelluspalvelun toteuttaminen
25.2.3 Www-sovelluspalvelun käyttäminen
26.1 Javan juuret
26.2 Java ja C#
26.3 Javan tulevaisuus
26.4 Loppulause
Liite 1: Eclipsen asentaminen26.2 Java ja C#
26.3 Javan tulevaisuus
26.4 Loppulause
Liite 2: UML Yhdellä sivulla
Liite 3: Yleisiä virheitä
![[Etusivu]](SmallFish.png)