Tässä ohjauksessa harjoitellaan osiin jaetun tiedoston kääntämistä ja valmiiksi kirjoitettujen aliohjelmakirjastojen sekä pakettien käyttöä. Esimerkkinä on kurssin aliohjelmakirjasto Ali.jar. Yleisohje kirjaston käyttöönotosta on URL:ssä http://www.mit.jyu.fi/~vesal/kurssit/ohj2/ali/.
JAR-pakettien käyttäminen komentoriviltä käsin on jokseenkin triviaalia: Ne riittää lisätä CLASSPATH:iin, joko ympäristömuuttujaa tai komentoriviparametreja käyttäen.
Ympäristömuuttuja asetetaan wintoosaa käytettäessä komennolla
set CLASSPATH=polku\jartiedostoja vastaavasti Linux-alustalla (bash-shell)
export CLASSPATH=polku/jartiedosto
Classpath voidaan asettaa myös komentoriviparametrina ohjelmaa tai kääntäjää käynnistettäessä.
java -classpath=jartiedosto OhjelmaKannattaa huomata, että jotkut virtuaalikoneet haluavat edellisen muotoon
java -cp=jartiedosto Ohjelmatai sitten molempia muotoja voidaan tukea. Näitä molempia on tullut agoran koneilla vastaan.
Yleensä on tarpeen lisätä myös oletushakemisto luokkapolkuun, sillä virtuaalikone ei etsi class-tiedostoja enää sieltä automaattisesti. Mikäli siis saat edellisiä käyttäessäsi virheilmoituksen, että Ohjelmaa ei löydy, lisää oletushakemisto '.' CLASSPATH:iin. CLASSPATH voi sisältää useita elementtejä, jos ne erotetaan joko puolipistein (windows) tai kaksoispistein (Linux). Esimerkiksi Windowsilla
java -cp=jartiedosto;. Ohjelma
Käynnistettävä main-metodi voi myös sijaita JAR-tiedostossa. Tällöin ohjelman käynnistys eroaa hivenen edellisestä
java -jar Ohjelma.jarTällöin JAR-tiedostoa ei tarvitse lisätä CLASSPATH:iin.
Harjoitellaan seuraavaksi pakettien käyttöä.
javac paketti/Testi.java java paketti/Testi
jar -cfv munJar.jar paketti/Testi.class
Main-Class: paketti.TestiTarkista että tiedoston nimi todella on "manifest" eikä esim. "manifest.txt". Tarkista myös että tiedoston ainoa rivin jälkeen on rivinvaihto. Muuten homma ei toimi. Käännetään nyt JAR-tiedosto uudelleen, nyt komennolla
jar -cmfv manifest munJar.jar paketti/Testi.class
Kun projektissa on useampia luokkia, monella näistä saattaa olla main- metodi (esimerkiksi luokkien sisään kirjoitetut testiohjelmat). Java-kehittimissä pystyy valitsemaan joustavasti tällä hetkellä ajettavan tiedoston. Kokeile ajettavan tiedoston vaihtoa esim. demotehtävilläsi.
NetBeans:
JBuilder:
Vastaava periaate pätee myös ohjelmien ajamiseen debuggerilla.
Java-kielessä paketti on joukko yhteenliittyviä luokkia, jotka on sijoitettu yhteiseen nimiavaruuteen. Tiedostojärjestelmässä samaan pakettiin kuuluvat luokat sijaitsevat samassa hakemistossa. Hakemiston nimi on myös paketin nimi. Paketit muodostavat hierarkian, esimerkiksi kurssin aliohjelmat ovat paketissa fi.jyu.mit.ohj2 (N-levyllä on vastaava hierarkia N:\kurssit\ohj2\ali\-hakemiston alla). Javan standardikirjastossa olevia paketteja ovat esim. java.lang (tämä on oletuksena aina käytössä), java.util (sisältää esim. kokoelmaluokat) ja java.math (matemaattisia luokkia).
Huom. import-käsky ei varsinaisesti "ota pakettia käyttöön" eikä vaikuta CLASSPATH-muuttujassa mainittuihin hakemistoihin, joista luokkia etsitään. Erityisesti käsky EI kopioi mitään tietoja paketista työtiedostoon (vrt. esim. C-kielen #include-direktiivi. import-käsky on olennaisesti vain lyhennysmerkintä, jonka ansiosta lähdekoodiin ei tarvitse jokaisen luokan kohdalle merkitä paketteja, joihin luokka kuuluu. Esimerkki:
import java.util.Arraylist; public class Testclass { // ... public static void main(String[] args) { Arraylist a = new Arraylist(); // ... } }
merkitsee samaa kuin
public class Testclass { // ... public static void main(String[] args) { java.util.Arraylist a = new java.util.Arraylist(); // ... } }
Lisätietoa pakettien käytöstä on URL:ssä http://java.sun.com/docs/books/tutorial/java/interpack/packages.html.
Tutkitaan pakettien liittämistä projektiin NetBeansilla tai JBuilderilla. Voit soveltaa ohjeita harjoitustyöhösi tai johonkin demotehtävään, jossa voi käyttää kurssin aliohjelmia.
NetBeans:
JBuilder:
Eclipse:
JAR-kirjastot ovat usein paketteja helpompi tapa liittää ulkoisia tiedostoja ohjelmaaan. Tällöin CLASSPATH-muuttujassa ei tarvitse välittää hakemistojen nimistä, vaan riittää, että ilmoitetaan liitettävä JAR-kirjasto.
Kerrataan JAR-kirjastojen liittäminen projektiin NetBeansilla tai JBuilderilla. Voit soveltaa ohjeita harjoitustyöhösi tai johonkin demotehtävään, jossa voi käyttää kurssin aliohjelmia.
NetBeans:
JBuilder:
Eclipse:
Nyt voit käyttää Ali.jar-kirjastoon pakattuja luokkia suoraan ohjelmastasi kopioimatta kirjastoa toiseen hakemistoon. (ainakin Agoranetin koneilta...)
Omassa koodissasi tarvittavat import-lauseet ja viittaukset kirjaston luokkiin tehdään tavanomaisesti. Esim. import fi.jyu.mit.ohj2.Syotto;-rivi tiedoston alkuun käyttäessäsi Syöttö-luokkaa.
10:32 18.2.2005Kokeillaan lopuksi Javadoc-dokumentaation generointia aluksi komentoriviltä, sitten sovelluskehittimellä. Lisätietoa Javadoc-työkalusta on URL:ssä http://java.sun.com/j2se/javadoc/.
Siirtäessäsi DemoWWW-ohjelmalla harjoitustyötä verkkoon tiedostoistasi luodaan automaattisesti Javadoc-dokumentaatio ja HTML-esitys koodista. Kokeillaan pelkän dokumentaation luomista komentorivillä.
Seuraavaksi kokeillaan dokumentaation tekoa NetBeansilla tai JBuilderilla. Varmista, että työhakemistossa oleva harjoitustyö on kehittimessä projektina (tarkista tarvittaessa pääteohjaus 3:sta, miten projekti tehdään).
NetBeans:
JBuilder:
Eclipse: