Tämä dokumentaatio käsittelee Turun yliopiston Tulevaisuuden teknologioiden laitoksen järjestämillä kursseilla käytettäviä virtuaali- ja USB-koneita, jotka sisältävät valmiiksi asennettuina eri kursseilla tarpeellisia ohjelmistokokonaisuuksia. Kuvauksia eri kursseille suunnatuista koneista on esitetty versiot-sivulla.
Opiskelijan käyttäessä kurssia varten esivalmisteltua virtuaalikonetta jää pois tarve huolehtia ohjelmien asentamisesta, päivittämisestä tai erilaisten versioiden aiheuttamista ongelmista. Kurssitöiden hallinta ja palautus tapahtuu verkossa, jolloin virtuaalikone on vain työkalu, jonka kautta opiskelumateriaalia käsitellään. Kun kurssi on suoritettu, virtuaalikoneen voi poistaa. Poistamisen jälkeen käyttäjän tietokone on ennallaan niin, ettei kurssilla käytettyjä työkaluja jää koneeseen aiheuttamaan mahdollisesti myöhemmin ongelmia.
Tarjottuja virtuaalikoneita vastaavia, valmiiksi rakennettuja alustoja on saatavilla virtuaalikonekuvien lisäksi USB-muistilta käytettävinä versioina, jotka esitellään USB-version sivulla.
Vakioidun alustan iso etu on, että tukea ja apua ongelmiin on helpompi saada muilta opiskelijoilta, kun kaikilla on samanlainen ympäristö riippumatta esimerkiksi isäntäkoneen käyttöjärjestelmästä. Opiskelijan omasta käyttöjärjestelmästä erillisen koneen lisähyötyjä on myös se, että vaikeammissa ongelmatapauksissa ratkaisuksi riittää yksinkertaisesti virtuaalikoneen tuhoaminen ja uudelleen asentaminen, tai USB-version tapauksessa sen uudelleen alustaminen. Käyttäjän ei tarvitse pelätä koneen "menemistä sekaisin", vaan helposti korvattavassa virtuaali- tai USB-koneessa voi kokeilla erilaisia ohjelmistoja ja ratkaisuja huolettomammin kuin tavallisessa käyttöjärjestelmässä.
Virtualisoinnista ja virtuaalikoneista
Virtuaalikoneiden käyttö on viimeisen noin 20 vuoden aikana yleistynyt kaikessa tietotekniikassa ja virtualisointi on muodostunut nykyisten pilvipalveluiden perustekniikaksi. Virtuaalikoneita käytetään niin yksittäisissä työpöytäkoneissa kuin suurissa konesaleissakin. Yleistymisen taustalla on virtualisoinnin tehokkuus ja suuret hyödyt -- sillä saavutetaan useita etuja, muun muassa resurssien parempi hyödyntäminen, nopeutunut ohjelmistojen kehitystyö ja fyysisten laitteiden vähentynyt tarve.
Virtuaali- eli näennäiskone on nimensä mukaisesti kone, jota ei fyysisesti ole olemassa. Kone käynnistetään ohjelmallisesti toisen tietokoneen sisällä, ja sen komponentit mallinnetaan ohjelmallisesti. Virtuaalikone (josta käytetään usein nimitystä vieras tai guest) on erillinen sitä ajavasta varsinaisesta tietokoneesta (josta käytetään nimityksiä isäntä tai host) luullen toimivansa yksinään fyysisessä tietokoneessa.
Virtuaalikoneella ei ole automaattisesti pääsyä isäntäkoneensa resursseihin, mutta sille voidaan erikseen antaa oikeus käyttää esimerkiksi isännän kanssa yhteistä kansiota levyllä, jotta tiedostojen siirto koneiden välillä olisi mahdollista. Myös isäntäkoneeseen kytkettyjen lisälaitteiden käyttöön tarvitsee erikseen antaa lupa.
Isäntäkoneessa voi yhtäaikaisesti olla käynnissä useita virtuaalikoneita ja virtuaalikoneiden sisällä voidaan ajaa toisia virtuaalikoneita. Yksittäisistä käynnistä olevista virtuaalikoneista käytetään myös termiä instanssi.
Virtuaalikoneiden ajamisen suorittaa isäntäkoneessa ajettava hypervisor eli virtuaalikonemonitori, joka simuloi tietokonelaitteistoa, josta virtuaalikone koostuu. Hypervisorin esittelyluku tuo esiin joitakin tunnetuimpia hypervisoreita ja hypervisorin asennusluku perehdyttää niiden käyttöönottoon.
Kurssit ja töiden versionhallinta
Nykyaikaiseen ohjelmistokehitykseen kuuluvat oleellisena osana tietovarastot ja niiden avulla hoidettu hajautettu versionhallinta. Niiden avulla hallitaan ohjelmistojen lähdekoodia ja koodin eri versioita. Ne mahdollistavat myös ryhmätyöskentelyn lähdekoodin kanssa. Versionhallintaan tallentuvat kaikki muutokset, joita koodiin on tehty, tiedot siitä kuka muutoksen on tehnyt ja muu oleellinen informaatio.
Ohjelmointia harjoitellessa kannattaa alusta alkaen opetella käyttämään versionhallintaa, sillä sen hallinta on aivan keskeisessä roolissa nykyaikaisessa ohjelmistokehityksessä ja nivoutuu yhteen myös ohjelmiston kehitysprosesseihin. Käytettäessä virtuaalikoneita versionhallinnan käyttö on siksikin tärkeää, että tietovarastoon tallennetut lähdekoodit pysyvät tallessa, vaikka virtuaalikone tuhottaisiin. Tässä ja muissa Turun yliopiston virtuaalikoneita koskevissa oppaissa oletetaan, että opiskelija käyttää hajautettua versionhallintaa eikä säilytä harjoitustöitään ainoastaan virtuaalikoneella.
Turun yliopiston kursseilla on suositeltavana versionhallintana käytössä Git, jonka käytöstä on erillinen ohje, sekä yliopiston GitLab-palvelu.