JavaScript, JScript, VBScript - ohjelmointia vai kikkailua?

1.11.1999
Anttila Juho
Hämäläinen Ville
TIK
Teknillinen korkeakoulu
juho.anttila@proha.fi
vkhamala@cc.hut.fi

Tiivistelmä

Tässä dokumentissa käsitellään lyhyesti dynaamiseen html:ään kuuluvia skriptikieliä, niiden käyttöä sekä ominaisuuksia. Lisäksi pohditaan myös yleisemmällä tasolla html:n kehitystä ja mietitään, kuinka järkevää tai tarpeellista skriptikielten käyttö loppujen lopuksi onkaan.


1. Johdanto.

Internetin ja html:n kehittyminen on tuonut mukanaan myös tarpeen luoda dynaamisia webbisivuja. Ehkä käytetyin tapa tehdä niitä on ollut käyttää JavaScriptin kaltaisia skriptikieliä. Nämä herättävät kuitenkin ristiriitaisia tunteita. Tässä dokumentissa käsitellään lyhyesti yleisimmät skriptikielet ja pohditaan niiden käytön järkevyyttä sekä myös niiden tarjoamia mahdollisuuksia.

2. Perusteet.

Ennen skriptikielten ilmestymistä WWW (World Wide Web) koostui pääasiassa staattisesta datasta. HTML-standardi antoi kyllä mahdollisuuden interaktiivisuuteen käyttämällä lomakkeita (Forms), mutta näiden käyttäminen edellytti tiedon lähettämistä verkon kautta serverille ja palautteen käsittelemistä siellä. WWW:n yleistyessä kasvoi tarve saada sivuille lisää näyttävyyttä ja parempia toimintoja. Yksi ratkaisu ongelmaan oli Java. Javalla tehdyt appletit ovat kuitenkin loppujen lopuksi varsin raskaita eivätkä ne myöskään toimi tarpeeksi tiiviissä yhteistyössä itse HTML-sivun kanssa. Dynaaminen html (dthml) sisältää määrityksiä, joiden avulla voidaan html-sivujen interaktiivisuutta lisätä. Skriptikielet ovat yksi osa dhtml:ää. Lisää tietoa dhtml:stä löytyy osoitteesta www.swlink.net/~lifey/vbscript/dhtml/dhtmlbasic.html[2]

3. Toimintatavat.

Skriptikielien toimintaperiaatteena on (useimmissa tapauksissa) olla html-sivun sisään upotettuja pieniä ohjelmia, jotka ladataan sivun mukana aivan kuten Java-appletitkin ja ajetaan selaimen sisään rakennetulla ajonaikaisella kääntäjällä. Tietoturvan puolelta skriptikielten periaatteena on se, ettei niillä voi tehdä "vihamielistä" ohjelmaa. Ohjelmoijan käytettävissä olevat "aseet" on rajoitettu käsittelyssä olevan webbisivun sisällön muokkaamiseen dynaamisesti, uusien selainikkunoiden avaamiseen, serverille lähetettävän tiedon muokkaamiseen ja muihin vastaaviin käyttäjän kannalta turvallisiin toimintoihin. Tyypillisiä skriptikielillä toteutettuja toimintoja ovat esimerkiksi hiiren osoittimen aseman mukaan muuttuvat kuvat, nappia painamalla suoritetut laskutoimitukset tai animaatiot ja muut vastaavat pienet tapahtumat. Mitään kovin raskasta ei skriptikielillä sinällään pysty tekemään, mutta kun yhdistetään skriptikielet, html-lomakkeet ja serverin puolella toimivat sovellukset, voidaan tehdä jo raskaammanpuoleisiakin sovelluksia.

4. Eri kielet

Webissä käytetään tällä hetkellä käytännossä kolmea eri skriptikieltä, joista jokaisesta on alla mainittu muutamia asioita.

4.1 JavaScript

JavaScript on tunnetuin ja samalla käytetyin skriptikieli. JavaScript on kehitetty Javan pohjalta ja on syntaksiltaan sen vuoksi hyvin samanlainen. Koska Java pohjautuu taas syntaksiltaan C:hen, on JavaScriptin käyttökynnys varsin alhainen. Html-sivun rakenne on oliopohjainen ja sitä käsitellään sen mukaisesti. JavaScript on omimmillaan tehtäessä sivulle pieniä visuaalisia tai toiminnallisia lisäyksiä, kuten esimerkiksi lomakkeita, joiden tiettyjen kenttien arvot lasketaan muihin kenttiin tehtyjen muutosten perusteella. Osoitteesta www.eskimo.com[3] löytyy muutamia varsin hyviä esimerkkejä siitä, mihin kaikkeen javascript pystyy.

4.2 JScript

Microsoftilla on ollut strategianaan ottaa muiden tekemiä standardeja ja muokata niistä omia versioita, jotka toimivat hyvin Microsoftin tuotteilla mutta eivät välttämättä toimikaan niin hyvin kilpailijan ohjelmalla. Varsinkin webbipuolella Gates:n firma on korjaillut alun epäilevää suhtautumistaan internetin tulevaisuuteen aggressiivisella markkinastrategialla. Yritys muuttaa Javaa on yksi ja JScript voidaan laskea mukaan samaan kategoriaan. JScript on itse asiassa sama asia kuin JavaScript. Ero on selaimessa. Internet Explorer pitää sisällään JScript-tulkin, joka on erilainen Netscapen JavaScript-tulkin kanssa. Saman koodin pitäisi toimia sekä JavaScript että JScript-tulkin kautta. Todellisuus ei vain kilpailevien firmojen kyseessäollessa ole aina niin ruusuinen. Mitään varsinaista uutta hienoa toiminnallisuutta JavaScriptiin verrattuna JScript ei tarjoa.

4.3 VBScript

VBScript on Microsoftin toinen ja hieman paremmin perusteltu skriptikieli. VBScript on, kuten nimestäkin voi jo arvata, rakennettu Visual Basic:n pohjalta hieman samaan tapaan kuin JavaScript Javan pohjalta. VBScript tarjoaa varsin hyvät mahdollisuudet tehdä myös serverin päässä suoritettavaa koodia. Tällöin käytössä pitää olla Microsoftin webbiserveri (IIS). VBScriptin avulla ja tätä tekniikkaa soveltamalla voidaan tehdä varsin käyttökelpoisiakin sovelluksia. Suurimpana ongelmana on se, että ainakaan tällä hetkellä mikään muu kuin Microsoftin oma selain ei tue VBScriptiä. Lisätietoja VBScriptistä voi etsiä osoitteesta www.webadvisor.com/vbscript.html.[1]

5. Ongelmat.

WWW:n ongelmana on kautta aikana ollut standardit ja niiden noudattaminen. Varsinkin siinä vaiheessa, kun Microsoft astui mukaan kuvioon, ongelma "repesi". Kesti pitkän aikaa pelkästään siihen, että staattinen html-standardi muotoutui suurinpiirtein toimivaksi kokonaisuudeksi, jota tärkeimmät selaimet tukivat. Valitettavasti alkuperäisen standardin, jos sellaisesta voidaan edes puhua, tarjoamata keinot eivät ole pitkään aikaan enää riittäneet sivujen kehittäjille. Eri selainvalmistajilla on omat näkemyksensä siitä, miten minkäkin ominaisuuden pitäisi toimia ja miten standardit pitäisi määritellä. Sen vuoksi eri valmistajan selaimet toimivat usein eri tavoilla siitä huolimatta, että käytettävät standardit on varsin tarkkaan määritelty.

Vaikka standardeja noudatettaisiinkin tarkkaan uusimmissa selainversioissa, on silti suuri määrä niitä käyttäjiä, joilla on selainohjelmasta vielä vanha versio, jossa uusia ominaisuuksia ei vielä tunneta. Skriptikielet moninkertaistavat tämän yhteensopivuusongelman. Se, mikä toimii Netscapella ei välttämättä toimi Explorerilla. Puhumattakaan vanhemmista selainohjelmista sekä niistä uusista laitteista, joihin kaavaillaan nettiyhteyttä. Nokian Communicator ei tue JavaScriptiä lainkaan, lynx ei tekstipohjaisena selaimena ymmärrä skriptikielten päälle. Voidaanko edes olettaa, että tulevaisuuden jääkaappiselain osaisi kaikki hienot skriptitemput?

Silti ehkä suurin ongelma skriptikieliä käytettäessä liittyy sisältöön. Webbi on pullollaan sivuja, joiden ainoa funktio tuntuu olevan kirjoittajan usein horjuvan skriptaustaidon esitteleminen. Hieman vanhemmalla selaimella liikkuessaan ei pysty kahta sekunttia surffaamaan ilman, että eteen hyppäisi pino virheilmoituksia selaimen ihmetellessä vain uusilla versioilla toimivaa skriptikikkailua. Sivujen koko kasvaa palveluista, joilla ei ole mitään käyttöä. Vai mitä ajattelette webbisivuille sijoitetusta kellosta, joka lukee kuitenkin aikansa selaajan koneen kellosta. Onhan se hienoa ja kätevää, mutta miksi käyttäjä ei voisi tarkistaa aikaa suoraan oman koneensa kellosta? Lisäksi moni tärkeäkin palvelu ei suostu toimimaan ilman JavaScriptiä, vaikka pienellä suunnittelulla oltaisiin saatu aikaiseksi hyvä, skriptitön ja mitä tärkeintä, toimiva versio samasta palvelusta.

6. Mahdollisuudet.

Html:n kehityksestä on periaatteessa kaksi mielipidettä. Varsinkin yliopistoissa ja vanhojen "gurujen" joukossa muistutetaan siitä, että sivujen pitäisi toimia myös pelkästään tekstipohjaisella selaimella ilman skriptikieliä tai muita vastaavia hienouksia. Tämän mielipiteen takana tuntuu toisaalta olevan myös eräänlainen muutoksen pelko. Entisestä osaajien ja hakkereiden leikkikentästä on tullut maailmanlaajuinen ja ennenkaikkea kaupallinen media. Voidaan ehkä sanoa, että "tekstipohjainen" näkökulma alkaa olla vanhentunut. Tosiasia kun kuitenkin on, että kaiken muunkin median lailla internet kehittyy eikä sitä kehitystä voi tai edes pidä rajoittaa loputtomiin vaatimalla täydellistä yhteensopivuutta vanhojen laitteiden kanssa. Ei CD-levyjäkään pysty soittamaan LP-soittimella eikä kukaan sitä vaadikaan. Miksi webin siis pitäisi pysyä tylsänä tekstipohjaisena tietopankkina, kun mahdollisuudet ovat paljon suuremmat?

Skriptikielet ovat oikein käytettyinä yksi parhaista tavoista lisätä toiminnallisuutta sivuille. Suurin etu niistä on mahdollisuudessa upottaa toimivaa koodia html:n sekaan. Kaikki tarvittava ladataan selaimelle, jossa sitä sitten ajetaan. Käyttäjä voi tehdä asioita, joiden vaikutus näkyy ruudulla heti ilman, että dataa tarvitsisi siirtää serverille ja takaisin. Tämä näkyy suoraan nopeudessa. Käyttö ei rajoitu pelkästään visuaalisiin kikkoihin. Käyttäjän päässä voidaan helposti tehdä monimutkaisiakin laskutoimituksia tai muita vastaavia toimenpiteitä käyttämättä verkkoa lainkaan. Samalla skriptikielellä tehdyt ohjelmat ovat useimmiten varsin pieniä ja kevyitä, mikä on erittäin tärkeää siirrettäessä dataa usein hitaankin verkkoyhteyden avulla. Java:n ja uusien pluginien käyttäminen yksinkertaisissa toiminnoissa ei juuri sovellusten koon takia olisi järkevää.

7. Yhteenveto.

On tuskin järkevää olettaa, että uusista webbipalveluista tehtäisiin enää pitkään skriptittömiä, vaikka vanhoillisissa piireissä niin haluttaisiinkin. Internet ja webbisivut ovat eläneet eräänlaista välivaihetta myös skriptikielien suhteen. Palveluista on tarjottu usein myös skriptittömiä versioita. Tosiasia alkaa kuitenkin olla se, että internetpalvelut ovat jo senverran monimutkaisia, että skriptittömyyden vaatiminen alkaa olla aika lailla kohtuutonta. Kehityksen on parasta antaa kehittyä.

Toisaalta skriptikielten ongelmiinkin olisi saatava ratkaisu. Yhteensopivuusongelman kanssa painitaan jatkuvasti, yksi ratkaisu voisi olla ECMA-standardi, joka yhdistää JScriptin ja JavaScriptin määritykset. Ehkä suurempi skriptikielten ongelma on kuitenkin se, että html:n lailla JavaScriptistä on tullut "kaiken kansan ohjelmointikieli". Vaikka on hienoa, että muutkin kuin ammattilaiset pääsevät kokeilemaan siipiään, olisi ihmisten kuitenkin hyvä ymmärtää, ettei mitä tahansa pidä julkaista verkossa. Järkevä ohjelmointi vaatii kuitenkin taitoa ja kokemusta, myös skriptikieliä käytettäessä. Vaikka skriptikielet tarjoavatkin mainion ponnahduslaudan aloitteleville ohjelmoijille, pitäisi varsinaisten webbipalveluiden kehittäminen jättää kuitenkin ammattilaisten huoleksi.

Lähdeluettelo.

[1] Anon., Web Advisor: VBScript,
< http://www.webadvisor.com/vbscript.html>
[2] Bonnell J., DHTML Scripting Basics,
< http://www.swlink.net/~lifey/vbscript/dhtml/dhtmlbasic.html>
[3] Thiele J., Javascript programming examples and references, 22.1.1997
< http://www.eskimo.com/~jet/javascript/>