Osa 14

Maven ja kolmannen osapuolen kirjastot

Kurssin ohjelmointitehtävät on tehty NetBeans-nimisessä ohjelmointiympäristössä, johon on lisätty tehtävien lataamiseen ja palauttamiseen tarkoitettu Test My Code -liitännäinen. Kurssilla käytetyt tehtäväpohjat eivät kuitenkaan ole millään tavalla NetBeans tai Test My Code -riippuvaisia, vaan niitä voi käyttää muissakin ohjelmointiympäristöissä.

Tehtäväpohjissa käytetään Maven-nimistä työvälinettä, joka tarjoaa apuvälineitä ohjelmien suorittamiseen ja hallintaan. Maven määrää projektiemme rakenteen — tämän takia jokaisen projektin juuressa on pom.xml-niminen tiedosto ja lähdekoodimme sijaitsevat src-nimisen kansion alla. Kansiossa src on tyypillisesti kaksi kansiota, toinen on main, joka sisältää projektin lähdekoodit ym, ja toinen test, joka sisältää ohjelman testaamiseen käytettävät lähdekoodit kuten yksikkötestit.

Mavenin etu on se, että se auttaa apukirjastojen lataamisessa. Apukirjastot ovat muiden kirjoittamaa lähdekoodia, joka on paketoitu kaikkien käytettäväksi. Esimerkiksi yksikkötestaukseen on käytetty JUnit-nimistä kirjastoa. Valmiita kirjastoja on hyvin moneen lähtöön. Esimerkiksi osoitteessa https://mvnrepository.com/ olevan hakukoneen kautta voi löytää yli 10 miljoonaa kirjastoa — moni näistä on tosin saman kirjaston eri versioita.

Hakukoneesta löytyy esimerkiksi tietokantojen käyttöön sekä vaikkapa telegram-bottien kirjoittamiseen tarkoitettuja kirjastoja. Tutustutaan näihin seuraavaksi lyhyesti.

Tietokannan käyttö

Tietokannat, tai oikeastaan tietokannanhallintajärjestelmät, ovat välineitä tiedon hallintaan. Tutustumme näihin tarkemmin kurssilla Tietokantojen perusteet (TKT10004). Tarkastellaan lyhyesti tietokantaa käyttävän sovelluksen rakentamista.

Osoitteesta https://mvnrepository.com/ löytyy useita kirjastoja tietokantojen käyttöön. Otamme esimerkinomaisesti käyttöömme H2-nimisen tietokannanhallintajärjestelmän. Tämä onnistuu lisäämällä tiedoston pom.xml sisällä olevalle <dependencies>- ja </dependencies> -elementtien rajaamalle kirjastoriippuvuuksia sisältävälle alueelle H2-tietokannanhallintajärjestelmän kuvaavan kirjaston, kuten alla.

<!-- muuta sisältöä -->

<dependencies>
<!-- muita kirjastoja -->

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.197</version>
    </dependency>

<!-- muita kirjastoja -->
</dependencies>

<!-- muuta sisältöä -->

Tehtäväpohjassa tämä on tehty valmiiksi. Kun kirjastoriippuvuus on lisätty osaksi projektia, ovat sen tarjoamat luokat projektissa käytettävissä. Seuraavassa tehtävässä hyödynnät valmiiksi edellä kuvattua riippuvuutta ja toteutat tietokantaa käyttävän sovelluksen.

Loading

Telegrambotti

Kuten todettu, Mavenin avulla löytyy merkittävä määrä kirjastoja, joita voi käyttää osana omia sovelluksia. Hakemalla osoitteesta https://mvnrepository.com/ sanaa telegram, löytää mm. TelegramBots-kirjaston Telegram-bottien tekemiseen.

Telegrambotit ovat ohjelmia, jotka reagoivat telegramissa lähetettyihin viesteihin ja esimerkiksi kertovat vitsejä. Bottien tekeminen on kuitenkin tämän kurssin osaamistavoitteiden ulkopuolella. Samalla, kurssin aikana opitut taidot auttavat olemassaolevien oppaiden lukemisessa ja opiskelussa. Mikäli haluat oppia tekemään Telegrambotin, lue osoitteessa https://github.com/rubenlagus/TelegramBots/wiki/Getting-Started oleva opas. Muista aloittaa botin rakennus pienistä osista — kokeile luoda ensin esimerkiksi botti, joka liittyy kanavalle.

Sovellusten paketointi

Sovelluksemme ovat tähän mennessä toimineet vain ohjelmointiympäristössä. Tämä ei kuitenkaan ole käytännössä totta, sillä ohjelman käynnistäminen ohjelmointiympäristössä vastaa melko vahvasti sen käynnistämistä ohjelmointiympäristön ulkopuolella. Voimme määritellä luokan, jossa olevaa metodia public static void main käytetään ohjelman käynnistämiseen.

Oracle tarjoaa javapackager-työvälineen sovellusten paketointia varten. Osoitteessa https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/packager.html on ohjeita välineen käyttöön.

Edellä mainittuja ohjeita seuraamalla voit tehdä luomistasi ohjelmista versiot, joita voit jakaa myös muille. Ohjeiden käyttämä kirjasto on paketoitu myös Mavenin käyttöön ns. liitännäiseksi, kts. https://github.com/javafx-maven-plugin/javafx-maven-plugin.

Muitakin vaihtoehtoja paketointiin on, kuten vaikkapa JavaPackager-maven liitännäinen.

Muut ympäristöt

Java on yksi maailman eniten käytetyistä ohjelmointikielistä ja sitä käytetään myös mm. Android-kännyköissä. Kurssin aikana harjoittelemamme käyttöliittymien luomistekniikka ei ole rajoitettu vain työpöytäsovelluksiin, vaikka JavaFX onkin niihin ensisijaisesti suunnattu. Mikäli haluat siirtää JavaFX-sovelluksia kännykkään, on sitä varten luotu JavaFXPorts-projekti. JavaFXPorts-projektin avulla voit tehdä mobiilisovelluksia JavaFX-kirjastoa käyttäen. Osoitteessa https://docs.gluonhq.com/javafxports/ on tähän lisää ohjeistusta.

Mobiilisovellusten kehittämisestä enemmän kiinnostuneiden kannattaa tutustua Androidin sovelluskehittäjille luomaan sivustoon, joka löytyy osoitteessa https://developer.android.com/guide/. Käymäsi ohjelmoinnin perusteet ja ohjelmoinnin jatkokurssi antaa näihin hyvän lähtökohdan. Vastaavasti, mikäli yksinkertaisten (mobiili)pelien kehittäminen kiinnostaa, tutustu esimerkiksi FXGL-kirjastoon.

Pääsit aliluvun loppuun! Jatka tästä seuraavaan osaan:

Muistathan tarkistaa pistetilanteesi materiaalin oikeassa alareunassa olevasta pallosta!