Java-sovelma

**Java-sovelma** (Java Applet) on epäitsenäinen, asiakaskoneessa selaimen yhteydessä suoritettava
Java-ohjelma. Sovelmia ajetaan selaimessa, johon on tyypillisesti asennettu Java-virtuaalikone (JVM) tai Sunin AppletViewerillä, sovelmien testaamiseen tarkoitetulla työkalulla. Java-sovelmat sisältyivät jo 1995 julkaistuun Java-kielen ensimmäiseen versioon.

Noin vuodesta 2013 lähtien selaimista on poistettu vanha NSAPI-rajapinta, jolla sivuilla sai ajettua selain-plugineita. Vuosina 2015–2017 mahdollisuus ajaa sovelmia poistui kaikista valtavirran selaimista. Java-sovelmien lisäksi poistuvaa tekniikka käyttivät Adobe Flash ja Microsoft Silverlight.
Uusi WebAssembly muistuttaa jonkin verran Java-sovelmia.

Sovelmilla tehdään verkkosivuille vuorovaikutteisia ominaisuuksia, joita ei voida toteuttaa HTML:n avulla. Koska Java-tavukoodi on alustariippumatonta, sovelmia voidaan käyttää monilla käyttöjärjestelmillä kuten Microsoft Windows, Unix, Mac OS ja Linux.

Sovelmia on tehty eniten Java-kielellä, mutta Java-alustan tuki sovelmille päättyy Java SE 8:n jälkeen. Oraclen päätös lopettaa Java-alustan ja siihen pohjautuvien sovelmien tuki perustuu paljolti sovelmiin liittyviin turvallisuuskysymyksiin.

## Teknistä tietoa
Java-sovelmat ajetaan tietoturvasyistä hiekkalaatikossa, mikä estää niitä pääsemästä käsiksi paikallisiin tietoihin. Sovelman koodi ladataan web-palvelimelta ja selain joko näyttää sovelman verkkosivulle upotettuna tai avaa uuden ikkunan, jossa sovelma näytetään.
Sovelman näyttämiseen käytetään `applet`- tai `object`-HTML-elementtiä,
joista jälkimmäinen on nykyisin suositeltu käytäntö. 
Elementissä kerrotaan selaimelle, mistä sovelman tavukoodi ladataan, sekä sovelman
paikka ja koko verkkosivulla.

Java-sovelma periytyy luokasta `java.applet.Applet` tai Swing-sovelman tapauksessa `javax.swing.Applet`. Sovelman toteuttavan luokan on ylikirjoitettava luokasta metodit, joilla sen käyttöliittymä alustetaan.

## Java-sovelmien etuja
Java-sovelmien käytöllä saavutetaan seuraavia etuja:
*sovelmat toimivat kaikilla yleisillä alustoilla - Windows, Mac OS, Linux, jne.
*sovelmat ajetaan *hiekkalaatikossa*, joten käyttäjän ei tarvitse luottaa koodiin; ajatus on, ettei Java-sovelmalla voi aiheuttaa vahinkoa tai muuta tietoturvariskiä
*useimmat selaimet tukevat niitä
*sovelmat tallentuvat yleensä selaimen välimuistiin, jolloin ne latautuvat nopeasti, jos sivulle palataan
*käyttäjän suostumuksella sovelma voidaan ajaa myös laajemmin oikeuksin, mikä mahdollistaa monipuolisempia toimintoja (paikallisten tiedostojen käyttö, ohjelmien käynnistys, jne.)
*sovelmien avulla voidaan työkuormaa siirtää palvelimelta asiakkaan puolelle, millä saavutetaan parempi skaalautuvuus suurilla käyttäjämäärillä

## Java-sovelmien haittapuolia
Java-sovelmien käytössä on seuraavia haittapuolia:
*sovelmien käyttö vaatii Sunin Java-liitännäisen, jota ei ole välttämättä asennettu valmiiksi kaikkiin järjestelmiin
*sovelman latautuminen ja virtuaalikoneen käynnistys voivat aiheuttaa huomattavan viiveen ensimmäisellä ajokerralla
*hyvien käyttöliittymien luomista Java-sovelmiin pidetään vaikeampana kuin HTML-pohjaisten käyttöliittymien luomista
*oletusarvoisesti sovelmat ajetaan *hiekkalaatikossa*, mikä rajoittaa sen pääsyä paikalliseen järjestelmään; erityisesti tiedostojen ja leikepöydän käsitteleminen on mahdotonta
*Sunin yrityksistä huolimatta epäyhteensopivuuksia joidenkin Java-sovelmien ja joidenkin JRE-versioiden välillä esiintyy
*virtuaalikoneen virheiden seurauksena koko selain saattaa kaatua (harvinaista)

## Yhteensopivuusongelmat
Sun Microsystems on nähnyt paljon vaivaa varmistaakseen yhteensopivuuden vanhojen Java-versioiden kanssa uusien versioiden ilmestyessä. Microsoft Internet Explorer, 1990-luvun lopun suosituin selain, sisälsi oletuksena Microsoftin itse kehittämän Java-virtuaalikoneen. MSJVM sisälsi joitakin lisäominaisuuksia, joiden käytöstä sovelmassa seurasi se, ettei kyseinen sovelma toiminut Sunin Javalla; epäyhteensopivuutta toiseen suuntaan ei ollut. Sun haastoi Microsoftin oikeuteen tavaramerkkirikkomuksesta, koska epäyhteensopivuus ja *proprietary*-laajennukset olivat vastoin Javan perusfilosofiaa.

Oikeustoimien takia Microsoft jäädytti oman virtuaalikoneensa kehittämisen. Seurauksena oli tilanne, jossa suurella osalla käyttäjiä oli käytössään huomattavan vanhentunut Java-virtuaalikone. Myöhemmin, lokakuussa 2001, Microsoft lopetti Javan sisällyttämisen Windows-asennukseen jättäen sen toimittamisen konevalmistajien vastuulle. Nykyisin useimmat uudet tietokoneet toimitetaan Sunin virallinen Java valmiiksi asennettuna.

## Vaihtoehdot
Java-sovelmille on olemassa vaihtoehtoisia tekniikoita kuten DHTML ja Adobe Flash, jotka mahdollistavat osittain saman toiminnallisuuden toteuttamisen.

Java Web Start on Sunin toteuttama vaihtoehto sovelmille. Web Startilla toteutetut ohjelmat ajetaan selaimen ulkopuolella ja voidaan käynnistää siitä riippumatta. Sovelmien mahdollistamien toimintojen lisäksi Web Start -ohjelmat voivat yksinkertaisen kyselylaatikon avulla saada käyttäjältä oikeuden paikallisten tiedostojen tai leikepöydän käyttöön.

## Katso myös
* Java

## Viittaukset

## Aiheesta muualla

*Opas sovelmien kehittämiseen Sun Microsystemsiltä
*Sunin esittelysovelmia
*Sunin Java-virtuaalikoneen lataussivu