eclipse, classpath, package og Javadoc

Disse sidene er en del av dokumentasjonen som Ola Lie utarbeidet da han foreleste faget IP- og webteknologi ved Høgskolen i Østfold i 2005.Websidene ble revidert i 2007.

I forelesningene benyttet vi jEdit som er en enkel tekst editor og  egner seg godt til å skrive applikasjoner i Java. jEdit er skrevet i Java og programvaren er gratis. I ettertid har det vært såpass mange problemer med å få tilleggsmodulene (plugins) til å virke som de skal, at vi her heller bruker eclipse som utviklingsmiljø. eclipse er også gratis og kan lastes ned fra

eclipse

eclipse Du kan lære eclipse av læreprogram (tutorials) og brukerveiledninger (user guides) som følger med programmet. Læreprogrammene når du fra velkomstbildet (HelpWelcome) og brukerveiledningene fra menyen Help → Help Contents. Her skal vi ta for oss noen hovedfunkjsoner og innstillinger vi trenger for å utvikle programmer til TINI. Når du starter opp eclipse, blir du bedt om å spesifisere workspace. Det er en mappe på harddisken hvor filene lagres. Vi har valgt å bruke c:\tip.Lukk velkomstbildet, og du ser et arbeidsbenk (workbench) vindu. I vinduet vises et perspektiv (perspective) som er en gruppe utsyn (views) og editorer. Du ser det forhåndsdefinerte Java perspektivet (Window → Open Perspective → Java). Du kan lage, endre og lagre perspektiver. Dersom du vil tilbake til det opprinnelige Java perspektivet, velger du Window → Reset Perspective. Package Explorer utsynet til venstre i perspektivet viser alle prosjektene i arbeidsområdet med tilhørende kilde mapper og bibliotek. Vi skal nå opprette et nytt prosjekt:

  1. eclipse Velg File → New → Project... fra menyen.
  2. Merk Java Project og klikk Next
  3. Kall prosjektet HeiOla og klikk Finish

Og deretter klassen HeiOla som også åpner editoren:

eclipse
  1. Velg File → New → Class fra menyen.
  2. Gi klassen navnet  HeiOla og klikk Finish

 

Nedenfor følger noen nyttige funksjoner i editoren hvor du skriver java programmet:

  1. Ord som hører til Javas syntaks blir automatisk uthevet i ulike farger.
  2. Når du trykker Enter eller Return, ordner eclipse  med automatisk innrykk på neste linje. Antall posisjoner kan bestemmes i Window → Preferences → Java → Code Style → Formatter → Show..). Standard innrykk i java er 4 mellomrom.
  3. Vil du se linjenumrene, høyreklikker du i den venstre margen og velger Show Line Numbers fra kontekstmenyen.
  4. Plasserer vi markøren bak en høyre parentes, finner eclipse korresponderende venstre parentes, og vice versa. Dobbeltklikker vi bak en parentes, merker eclipse området mellom korresponderende parenteser.
  5. eclipseTrykker du ctrl-mellomrom i midten eller etter et ord, får du opp et popup vindu (code/content assistant) med mulige forslag til å fullføre (autofullfør). Eksempelvis vil du med  sw etterfulgt av ctrl-mellomrom kunne sette inn malen for switch blokken med et dobbeltklikk. Når ”.” skrives etter et variabelnavn vises et vindu med mulig kode. Prøv å skrive System.out. i vinduet, så skal du få opp et popup vindu for hvert ”.”.
  6. Du kan bokmerke en linje ved å høyreklikke i den venstre margen, velge Add Bookmark... og gi bokmerket et navn. Siden kan du hoppe tilbake til denne posisjonen ved å dobbeltklikke på bokmerket i Bookmarks utsynet (Window → Show View → Other... → General → Bookmark). Filen trenger ikke å være åpnet.
  7. Dersom du vil se samme filen på to forskjellige steder, kan du åpne en ny editor ved å høyreklikke i arkfanen og velge New Editor. Dra deretter den nye arkfanen til et annet sted på arbeidsbenken.
  8. Kildekode kan sees på som et hierarki av seksjoner som igjen kan inneholde sub-seksjoner. Foldefunksjonen lar oss gjemme og vise utvalgte seksjoner. Skjulte seksjoner erstattes av en enkelt linje som fungerer som en ”oversikt” over den valgte seksjonen. Vi kan folde ved å klikke på sriklene (med pluss eller minus inni) ved siden av linjenumrene eller fra Folding valget i kontekstmenyen som du får fram ved å høyreklikke i venstre margen.
  9. Skriver du noe som ikke godtas vises dette med rød strek under feilen og et rødt kryss med lyspære i venstre margen. Klikker du på lyspæren, kan du få forslag til å rette opp i feilen.
  10. Når du endrer på noe i edtioren, blir den opprinnelige koden tatt vare på. Denne kan du hente tilbake med  Replace With → Local History fra kontekstmenyen (høyreklikk i editor vinduet).

Se Help → Tips and Tricks... for å lære mer om mulighetene i eclipse. Vi skal nå se på noen av utsynene:

  1. Javadoc utsynet er beskrevet lengre ned på siden
  2. Outline utsynet gjør det enkelt å navigere rundt i kildekoden (flytt gjerne utsynet under Package Explorer)
  3. Når du lagrer en java fil, blir den kompilert automatisk (så lenge er Build automatically er krysset av i Window → Preferences... → General → Workspace) og evetuelle feil eller advarsler rapportert til Problems utsynet. Herfra kan du dobbeltklikke på feilen og få markøren i editoren automatisk plassert på feilen.
  4. Console utsynet kan brukes til output fra eller input til programmet som kjøres. Du kan kjøre programmet ved å høyreklikke på java filen i Package Explorer, Outline eller hvor som helst i editoren og velge Run As → Java Application. Vil du ha mer kontroll velger du Run...

    eclipse

Classpath

classpath (egentlig class search path) er banen hvor Java Runtime Environment leter etter klasser og andre ressurser. Vi kan sette classpath som en miljøvariabel (anbefales ikke) eller overstyre med -classpath når vi kjører et JDK verktøy (java, javac, m.fl.). I eclipse setter vi classpath fra menyen Window → Preferences → Java → Build Path → Classpath Variables eller Project → Properties → Java Build Path → Libraries for et enkelt  prosjekt.

Når vi krysskompilerer programmer for TINI, må vi bruke –target og -source slik at klassefilene som genereres av JDK er kompatible med TINIs JVM. Det kan vi gjøre i Window → Preferences → Java → Compiler.

Dessuten må vi henvise til TINIs API (og ikke Suns JDK Java plattform) når vi krysskompilerer. Vi må derfor ha med -boothclasspath. I stedet for å konfigurere eclipse har vi valgt å spesifisere denne informasjonen i prosjektets build.xml fil (se hele eksempelet) som benyttes av ant:

<!-- Kompiler -->
<target name="compile">
    <echo>Kompiler HelloWeb.java til HelloWeb.class</echo>
    <javac srcdir="src"
        destdir="bin"
        target="1.1"
        source="1.3"
        bootclasspath="${tini.classes}"
        classpath="${modules.jar}" />
</target>

tiniclasses.jar inneholder alle klassefilene til TINIs API (de fleste klassene i kjerne pakkene i Sun’s JDK (java.lang, java.io, java.net og java.util) og egne TINI spesifikke klasser i pakken com.dalsemi). modules.jar inneholder enkelte klasser som er tatt ut fra TINIs API for å spare plass (for eksempel HTTPServer).

Java programmer som skal kjøres på PCen kompileres automatisk når vi lagrer dem og kjøres som beskrevet ovenfor med Run As → Java Application eller Run... valget fra kontekstmenyen. Programmene for TINI skal (og kan ikke) kjøres på PCen, men på TINI. Vi bruker derfor heller en ant build.xml fil til å kompilere (, konvertere) og overføre.

Forslag til hvordan du kan installere, konfigurere og bruke eclipse for krysskompilering finner du på

Package (klassebibliotek)

Java SE 6 plattformen ligger i Packages ”pakker” (klassebibliotek). Pakker er en samling klasser og grensesnitt som hører naturlig sammen. Med pakker blir det lettere å finne og bruke klasser, å unngå navnkonflikter og å kontrollere tilgang. En pakke svarer til en filkatalog hvor alle klassene i pakken ligger. Alle klassene har samme navn som filnavnet, og navnet på pakken må stemme overens med navnet på mappen. Navnet på pakken defineres først i hver klassefil: package <pakkenavn>; Når vi skal benytte oss av klasser i en pakke, bruker vi: import <pakkenavn.*>;

Import påvirker ikke ytelsen. Vi hjelper bare kompilatoren å finne riktig klasse i biblioteket. Og vi slipper å skrive hele navnet. Eksempelvis, i stedet for hele tiden å skrive java.util.HashMap, skriver import java.util.HashMap; øverst i kildekoden (etter package - navnet på vår pakke) og bruker kun HashMap i resten av koden. Det er også lov å skrive import java.util.*;, men da blir ikke koden like lesbar.

Dersom du ikke har med import uttrykket i programmet, vil du bli varslet med rød strek under feilen og et rødt kryss med lyspære i venstremargen. Klikker du på lyspære, får du fram et popup vindu med forslag til riktig import uttrykk. Du kan også høyreklikke og velge Soource → Organize Imports Source Organize Imports fra kontekstmenyen.

Javadoc (API dokumentasjon)

eclipseeclipse kan konfigureres til å vise JavaDoc API dokumentasjonen når musepekeren føres over et ord (klasse, metode, konstant). Dokumentasjonen vises i et popup vindu. Trykker du F2, aktiverer du popupvinduet og kan bruke rullefeltet for å se hele teksten. Og med Shift-F2 åpner du JavaDoc API websidene.

eclipseKlikker du på ordet, vises dokumentasjonen i Javadoc utsynet.

For å få til dette, må du ha spesifisert Javadoc location i egneskapene til prosjektet (Project → Properties). For å finne Javadoc som er installert på din maskin,  kan du søke etter filen package-list. Du vil da finne Javadoc blant annet i mappene:

  • C:\tini1.17\docs\javadocs\firmware
  • C:\tini1.17\docs\javadocs\modules
  • C:\apache-ant-1.7.0\docs\manual\api
  • C:\commons-net-1.4.0\docs\apidocs
  • C:\tiniant-1_2_0\doc\api

Dokumentasjonen til pakken Java Communications API (package javax.comm) har en annen filstruktur som ikke lar seg integrere på en fullverdig måte. For informasjon om comm.api, se

  • C:\Programfiler\Java\jdk1.6.0\commapi\javadocs

Java™ Platform, Standard Edition 6 API Specification er tilgjengelig på

javadoc er også navnet på et verktøy for å generere API dokumentasjon.