Videregående programmering i Java

Dag 14 - afrunding (og valgfrie emner)

Nye faciliteter i JDK 1.5, herunder:

- Definere egne generiske klasser fortsat

- Annotations

Evt: Nye faciliteter i JDK 1.4, herunder XML-processering, det nye I/O-API, logning og antagelser.

Evt.: AOP - Aspekt-orienteret programmering

Om eksamen og eksamensforberedelse

Spørgetime: Repetition af designmønstre

Projektvejledning

Projekthjælp: javadoc, JUnit, ...

Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Nyt i JDK 1.4

(http://java.sun.com/j2se/1.4.2/docs/relnotes/features.html)

Logning

Antagelser (eng.: assertations)

Implitte antagelser skrevet eksplicit (med tjek slået til/fra)

Nye IO-klasser (nio)

Direkte afbilding af data (f.eks. byte fra fil) til datastruktur

...

Nyt i JDK 1.4: Logning

import java.util.logging.*;

...

static final Logger log = Logger.getLogger("Cavemet");

//static { log.setLevel(Level.INFO); }

...

log.info("Brugeren skrev: "+svar);

log.warning("Brugeren skrev: "+svar);

Nyt i JDK 1.4: Antagelser

ArrayList l = new ArrayList();

assert l.size()==0: "l burde være tom 1: " + l;

l.add("hej2");

l.add("hej");

l.add("hej");

assert l.size()==0: "l burde være tom 2: " + l;

java -da (-disableassertions standardindstilling)

java -ea (-enableassertions for at køre tjekkene)

Nyt i JDK 1.5: ny syntaks

(http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html)

Generiske klasser (generics/parametriserede typer)

Stærkere typesikkerhed. Eks.: ArrayList af strenge:

ArrayList<String> sl = new ArrayList<String>();

Nemmere for-løkke

Kan gennemløbe enhver datastruktur (bruger skjult Iterator på Collections-klasser og tællevariabel på almindelige arrays)

for(String s : sl) { System.out.println(s); }

Automatisk konvertering mellem simpel type og objekt

Map<String, Integer> navnTilCPR = new HashMap<String, Integer>();

navnTilCPR.put("Jacob Nordfalk", 010171); // boxing af int 010171

int cpr = navnTilCPR.get("Jacob Nordfalk"); // unboxing af Integer 010171

Typesikre opremsninger (typesafe enums)

public enum MainMenu {FILE, EDIT, FORMAT, VIEW};

Variabelt antal argumenter til en metode (array af arg)

Import af klassemetoder og -variabler (static import)

import static java.lang.Math.*; ... x = 2*PI; y = sin(x); ...

Metadata (Annotations)

Nye faciliteter i JDK 1.5

Nemmere læsning og skrivning af tekst

printf-lignende formatering med java.util.Formatter

System.out.format("Local time: %tT", Calendar.getInstance());

// -> "Local time: 13:34:18"

// Writes formatted output to System.err.

System.err.printf("Unable to open file '%1$s': %2$s",

fileName, exception.getMessage());

// -> "Unable to open file 'food': No such file or directory"

Regulære udtryk og indlæsning med java.util.Scanner

java.util.Scanner tastatur = new java.util.Scanner(System.in);

System.out.println("Tast et tal herunder og tryk retur:");

double svar = tastatur.nextDouble(); // læs tal fra tastaturet

System.out.println("Du indtastede "+svar+", det dobbelte er: "+svar*2);

Metadata (Annotations)

Mærkning af	klasser, metoder, variabler, konstruktører og pakker

Mærkerne kan indeholde information

Mærkerne kan bortfiltreres under oversættelsen eller beholdes under kørslen

Annotationer kunne være blevet brugt i stedet for:

Markeringsinterfaces

Serializable, ...

Speciel information om metode/variabel

transient, synchronized, ...

BeanInfo-klasser (informationer om javabønner)

Javadoc (deprecated)

Annotationer bruges rent faktisk til:

EJB-objekters metoders transaktionsegenskabler (EJB 3.0)

...

Metadata (Annotations)

Mærkerne kan indeholde information

Ingen

En enkelt eller flere værdier (af vilkårlig type!)

Mærkerne kan bortfiltreres under oversættelsen eller beholdes under kørslen

RUNTIME Annotations are to be recorded in the class file by the compiler and retained by the VM at run time, so they may be read reflectively.

CLASS Annotations are to be recorded in the class file by the compiler but need not be retained by the VM at run time.

SOURCE Annotations are to be discarded by the compiler.

eksamen og eksamensforberedelse

http://www.cv.ihk.dk/ITD/CN/VPJ/holdinformationer.html

10 min fremlæggelse af projekt

Vigtigt at rapportens bilag er nemme at finde rundt i!

Hvis du vil vise programmet så hav det klar på forhånd!

10 min spørgmål i pensum

Tjek af generel viden

Ekstra projekthjælp

Der er ekstra vejledning i morgen (torsdag) mellem kl 16-17 i P1.07, hvis interesse

Skriv med telefonnummer, så ringer jeg

Videregående programmering i Java

Præsentatoner fra kurset

2004-08-30T12:23:21