Osaamistavoitteet

Kurssilla Web-palvelinohjelmointi Java opit web-sovellusten toimintaperiaatteet sekä perustaidot web-sovellusten kehittämisestä Java-kielellä. Kurssilla on yhteensä seitsemän osaa, joiden osakohtaiset osaamistavoitteet ovat seuraavat. Osaamistavoitteet voivat muuttua kurssin edetessä.

Osa Teemat Osaamistavoitteet
- Esitietovaatimukset Ohjelmoinnin perusteet (TKT10002), Ohjelmoinnin jatkokurssi (TKT10003), Tietokantojen perusteet (TKT10004).
1 Johdanto web-sovellusten toimintaan ja internetin perusosiin. Tiedät pääpiirteittäin miten Internet toimii. Tunnet käsitteet URI, DNS, HTTP ja HTML. Tunnet käsitteet polku ja pyynnön parametri. Tunnet HTTP-protokollan tasolla GET ja POST-tyyppisten pyyntöjen perusrakenteen ja tunnistat palvelimelta palautettavan HTTP-protokollaa noudattavan vastauksen osat. Tunnet asiakas-palvelin -mallin ja osaat toteuttaa yksinkertaisen palvelimen sekä selaimen. Tunnet pinnallisesti Spring Boot -sovelluskehyksen ja osaat luoda pyyntöihin reagoivan web-sovelluksen.
2 Näkymät, tietokannat ja tietokanta-abstraktiot. Osaat muodostaa Thymeleaf-kirjastoa käyttäen sivuja, joita käytetään käyttäjälle palautettavien näkymien luontiin. Osaat lähettää tietoa palvelimelle ja käsitellä palvelimelle lähetettyä tietoa. Tunnet POST/Redirect/GET-suunnittelumallin. Tunnet käsitteen ORM ja osaat hyödyntää Javan ja Spring Bootin tarjoamaa tietokanta-abstraktiota tiedon käsittelyyn. Käsittelet yhden tietokantataulun sisältäviä sovelluksia. Tunnet käsitteen polkumuuttuja ja osaat käyttää polkumuuttujia sovelluksissasi.
3 Tietokannat ja tietokanta-abstraktiot. Viitteet tietokantataulujen välillä, tulosten rajaaminen ja järjestäminen. Käsittelet useampia tietokantatauluja sisältäviä sovelluksia ja tiedät miten tietokantataulujen väliset viitteet määritellään. Osaat käsitellä transaktioita ohjelmallisesti. Tunnet N+1 kyselyn ongelman ja tiedät joitakin menetelmiä sen välttämiseen. Osaat järjestää ja rajata tietokannasta haettavaa tietoa.
4 Mediatyypit ja tiedostojen tallentaminen. Ohjelmistokehitysprosessi, kerrosarkkitehtuuri ja sovellusten automaattinen testaaminen. Sovelluksen siirtäminen verkkoon. Tunnet käsitteen mediatyyppi ja osaat käsitellä tiedostoja tietokannassa. Tunnet pintapuolisesti ohjelmistokehitysprosessin eri vaihteet. Tiedät joitakin web-sovelluksiin soveltuvia arkkitehtuurimalleja, ja ymmärrät mitä kerrosarkkitehtuurilla tarkoitetaan. Osaat jakaa sovelluksen osia sovelluksen sisäisiksi palveluiksi ja osaat kirjoittaa automaattisesti suoritettavia testejä sovelluksillesi. Osaat siirtää sovelluksen verkkoon kaikkien nähtäville.
5 HTTP-protokolla ja evästeet. Autentikaatio ja autorisaatio. Tunnet käsitteen tilattomuus. Tiedät mitä evästeet ovat ja mihin niitä käytetään. Tunnet evästeisiin liittyviä oleellisia lakiteknisia asioita. Osaat selittää autentikaation ja autorisaation erot. Osaat luoda sovelluksen, joka pyytää käyttäjää kirjautumaan. Osaat määritellä kirjautumista vaativia polkuja ja metodeja, sekä piilottaa näkymän osia erilaisilta käyttäjäryhmiltä.
6 Toistuvat rakenteet ja fragmentit. Tyylitiedostojen käyttäminen. Syötteiden validointi. Rajapinnat ja REST. Tunnet menetelmiä toistuvien sivurakenteiden määrittelyyn sekä uudelleenkäyttöön. Tiedät mikä Twitter Bootstrap on ja osaat määritellä sen avulla tyylejä sovellukseen. Tunnet menetelmiä tiedon validointiin ja osaat validoida lomakedataa. Tunnet käsitteen rajapinta ja tiedät mitä REST-rajapinnat ovat. Osaat toteuttaa palvelun, joka tarjoaa dataa REST-muotoisen rajapinnan yli.
7 Selainohjelmistot ja palvelinohjelmistot. Hieman tietoturvaa. Sovellusten skaalautuvuus. Reaktiivinen ohjelmointi. Osaat tehdä selainohjelmistosta JavaScript-pyynnön palvelimelle ja osaat päivittää selaimessa näkyvää näkymää Javascript-pyynnön vastauksen perusteella. Tiedät web-sovellusten tyypillisimmät haavoittuvuudet sekä niihin vaikuttavat tekijät (OWASP). Tunnet menetelmiä sovellusten skaalaamiseen isoille käyttäjäjoukoille. Tiedät reaktiivisen ohjelmoinnin perusteet ja osaat tehdä yksinkertaisen palvelinohjelmiston reaktiivisella ohjelmointiparadigmalla.