Web-tekniikat / Johdanto
Web toimintaympäristönä
Webin toiminta perustuu asiakas-palvelin-malliin. Tähän malliin kuuluu yleisellä tasolla kolme osaa:
a) Web-asiakastekniikat
- client-side, asiakaspuoli (tähän keskitytään tällä opintojaksolla )
- ohjelma toimii selaimessa asiakkaan tietokoneella (esim: Firefox, Chrome, IE, Opera, Safari, ...)
- opintojaksolle kuuluvat käsitteet: HTML, HTML5, CSS, (JavaScript)
- JavaScriptillä ohjataan HTML-dokumenttien toimintaa selaimessa
b) Web-palvelinohjelmointi
- server-side, palvelinpuoli
- ohjelma toimii web-palvelimella, esim. Apache, IIS
- Web-palvelinohjelmointi: JSP, PHP, ASP.NET (.NET), CGI, MySQL,...
c) yhteyskäytäntö
- protokolla, joka määrittelee asiakasohjelman ja palvelinohjelman viestintämuodon
- Webissä asiakasohjelmana (käyttäjäagenttina, user agent) toimii yleensä web-selain, jonka avulla käyttäjä lähettää palvelupyyntöjä web-palvelimelle
- Web-palvelin ottaa vastaan palvelupyyntöjä ja lähettää esim. web-sivun takaisin asiakasohjelmalle näytettäväksi

HTML (HyperText Markup Language)
- mahdollistaa dokumentin näyttämisen web-selaimessa
- HTML:n eräs tärkeimpiä ominaisuuksia: tuki hypertekstilinkeille
- mahdollisuus ohjelmointiin (JavaScript) ja tyylisivujen käyttöön (CSS)
- dokumenttien kuvauskielen oikeellisuus voidaan tarkistaan HTML-tarkistimilla (validator.w3.org/, validator.w3.org/nu, validator.nu)
- HTML on kehittynyt useiden välivaiheiden kautta (standardit/valmistajakohtaiset laajennokset) => toimivuusongelmia erilaisilla selaimilla
HTML perusidea
- Dokumentin rakenteen kuvaaminen
- HTML-dokumentti koostuu
- pelkästä tekstistä (plain-text)
- loogisen rakenteen ilmoittavasta merkkauksesta (otsikot,luettelot, ...)
- viittauksista muihin dokumentteihin (esim. kuvat)
- HTML-dokumentti jakaantuu
- tietosisältöä kuvailevaan metatietoon (HEAD-elementti)
- varsinaiseen tietosisältöönsä (BODY-elementti)
Onko HTML ohjelmointikieli? Ei.
HTML:n vahvuudet
- "Laiteympäristöriippumattomuus": Mukautuu oikein käytettynä erilaisiin esitystilanteisiin (esim. erilaiset selaimet, erikokoiset selainikkunat, käytettävissä olevat fontit, multimedialaajennukset, ...)
- Siirrettävyys ja helppokäyttöisyys
- Kieli on jossakin mielessä "pieni" -> Useat laitteet voivat käsitellä
- Kaikki tieto dokumentin esittämistä varten on selaimessa ->Siirrettävä tietona on ainoastaan dokumentti itse!
- HTML-dokumentteja voi kirjoittaa millä tahansa tekstieditorilla ja niitä voidaan tulkita sekä ohjelmallisesti (selaimet, hakurobotit,...) että ihmissilmällä.
- Voidaan kehittää (tosin rajoitetusti) "universaaleja"
indeksointimenettelyjä (Google, jne).
HTML:n heikkoudet
- HTML sallii useita ilmaisuja samalla asialle
- Esim. kappale-elementti voidaan merkitä
- <P>Olen kappale<P>Olen toinen
- <p>Olen kappale<p>Olen toinen
- <p>Olen kappale</p><p>Olen toinen...
- jne.
- Selaimista kasvaa "isoja", koska ne joutuvat varautumaan "kaikkeen".
- Lisäksi epävalidia HTML:ää on tarjolla runsaasti, koska selaimet ovat sen perinteisesti hyväksyneet. Tämä lisää entisestään selainten kokoa.
HTML5
- Viimeisin HTML:n versio, yhteensopiva aiempien versioiden kanssa
- Suunniteltu korvaamaan HTML4, XHTML ja DOM2
- Jatkuvassa kehityksessä: W3C:n suositukset ja WHATWG:n "elävä standardi"
- Uusia elementtejä ja määritteitä, CSS3-tuki
- Erityisesti suunniteltu monimuotoisen mediasisällön jakamiseen ilman pluginien tarvetta
- Tätän uusia käytänteitä mm. videoon, audioon, 2D/3D-grafiikkaan, web-sovelluksiin, ...
Muita tekniikoita
CSS (Cascading Style Sheets)
- tyylit HTML/XML-dokumentteihin
- verrattavissa tekstinkäsittelyohjelmien tyyleihin: muutetaan
fontteja, värejä, layoutteja, jne...
- CSS ei korvaa HTML:ää, vaan se toimii sen lisäksi apukielenä.
- Style = "tyyli" eli elementtien ulkoasun esittäminen käyttäen erityisiä tyylisääntöjä
- Style sheet = "tyyliarkki" = tyylisäännöt kootaan tyylisäännöstöiksi; yksittäinen tyylisäännöstö on paikka, jossa on yksi tai useampia tyylisääntöjä.
- Cascading = tyylisäännöstöt voidaan limittää keskenään. Eräs suommennos: limitetyt tyylisäännöstöt
JavaScript
- JavaScript on skriptikieli, jossa käyttöliittymä (GUI) tehdään HTML/XML-kielillä
- vaatii toimiakseen isäntäsovelluksen (host application), esim. web-selain
- JavaScript-koodi upotetaan/liitetään HTML-dokumenttiin ja tulkataan selaimessa
- nopea lataus ja suhteellisen pieni kaistaleveyden kulutus verkossa (koska JavaScript on pelkkää tekstiä)
Java
- Oikea olio-ohjelmointikieli
- Käytetään paljon esim. palvelinohjemoinnissa ja Android-laitteissa
JavaScript / Java
- JavaScript-kieli EI OLE Java-kieli, vaikka se pohjautuu Javaan
- molemmat ovat oliopohjaisia ja niiden komennoissa on samankaltainen rakenne
- Java-kieli skaalautuu huomattavasti useampiin käyttötarkoituksiin kuin JavaScript
- Java toimii omassa "hiekkalaatikossa", mutta JavaScript-tulkki on liitetty selaimeen
AJAX
- Ajax-tekniikassa selainohjelma vaihtaa pieniä määriä dataa palvelimen kanssa taustalla niin, ettei koko verkkosivua tarvitse ladata uudelleen joka kerta käyttäjän tehdessä muutoksen.
- parantaa verkkosivun vuorovaikutteisuutta, nopeutta ja käytettävyyttä.
- Yleistynyt web-palveluissa runsaasti lähivuosina
- Ajax koostuu seuraavien tekniikoiden yhdistelmästä: HTML, CSS, DOM, XML, XMLHttpRequest-objekti