JPAZ2 je framework pre podporu výučby princípov programovania a základných koncepcií objektovo-orientovaného programovania v Jave pre začiatočníkov. Framework je postavený na využití korytnačej grafiky a prieskumníka objektov. Prieskumník objektov umožňuje zobraziť a meniť hodnoty vlastností objektov a tiež spúšťať metódy objektov.
Ďalším významným cieľom frameworku je byť nástrojom, ktorý umožní záujemcom o programovanie tvoriť vlastné kreatívne miniaplikácie a programy (napr. 2D hry) bez nutnosti "zápasiť" s technickými detailami Javy. Tieto technické detaily sú v JPAZ2 ukryté do starostlivo navrhnutého systému tried. Prah na programovanie jednoduchých interaktívnych a vizuálnych aplikácii v Jave sa použitím JPAZ2 posúva výrazne nižšie - nie je treba riešiť vlákna a synchronizáciu vlákien, animovanie objektov, použitie komplexných tried Java API pre prácu so zvukom a grafikou, ...
ObjectInspector
- základná trieda schopná "skúmať" iné objekty v run-time (počas behu programu) - zobrazovať ich vlastnosti a spúšťať definované metódy
Turtle
- základná trieda reprezentujúca "korytnačky" v korytnačej 2D grafike a zároveň grafický objekt v ploche (Pane
)
Pane
) - umožňuje kresliť obrázky zo súboru do plochy
ImageShape.Builder
) - aj s možnosťou definovania rýchlosti animácie
Pane
)
Pane
- základná trieda reprezentujúca kresliacu plochu (metafora: papier so zadanými rozmermi)
Pane
-s)
onTick
)
ImageShape
- reprezentuje tvar korytnačky (grafického objektu), ktorý je určený nejakým obrázkom
ImageTurtleShape
ImageShape.Builder
- reprezentuje objekt, pomocou ktorého je možné bližšie špecifikovať tvar korytnačky z grafického súboru
AudioClip
- reprezentuje zvukový súbor (nahrávku) a poskytuje jednotné rozhranie pre jeho prehrávanie nezávisle od formátu zvukového súboru
AudioClip
v Jave (v iných balíkoch)
Clip
) tu nie je obmedzenie na veľkosť zvukového súboru a počet súčasne prehrávaných zvukov
playAsActionSound
(umožňuje súčasne viac krát prehrávať ten istý zvuk - napr. viac "výbuchov" v hre naraz)
JPAZPanel
- základná trieda, ktorá prepája kresliace plochy (Pane
-s) a Swing aplikácie.
Pane
)
align
) plochy (Pane
) a panelu (JPAZPanel
) - rozmery plochy sa prispôsobujú rozmerom panelu a naopak
Pane
) - okamžite alebo s vizuálnym efektom prechodu (TransitionEffect
, podobne ako efekty prechodov snímok v PowerPoint-e)
JPAZWindow
- ako JPAZPanel
, ale kresliaca plocha sa zobrazuje v okne
JPAZWindow
je preferované pred rozširovaním triedy WinPane
(v kóde konštruktora triedy rozšírujúcej WinPane
nie je garantované, že onXYZ
metódy budú volané až po skončení tohto konštruktora).
onXYZ
všetkých tried JPAZu boli vykonávané v EDT vlákne Swing-u. Vďaka tomu nie je potrebná žiadna synchronizácia (pokiaľ nevytvárate vlastné vlákna). Pokiaľ nemáte s vláknami a ich synchronizáciou dostatočné skúsenosti, odporúčame vlastné vlákna nevytvárať.
thread-safe
(výnimkou je napríklad aj ImageShape.Builder
).
main
je vykonávaný v inom vlákne, než všetky onXYZ
metódy. Odporúčame preto v tejto metóde zrealizovať len vytvorenie objektov aplikácie. Pozor tiež na verejné statické referenčné premenné inicializované v metóde main
(môžu byť ešte neinicializované, t.j. null
, keďže ich inicializácia neprebehla).
JPAZUtilities.getJPAZLock()
- pozor, z kódu držiaceho tento zámok nezískavajte iné zámky (obzvlášť sa nesynchronizujte s EDT vláknom Swing-u, napr. cez SwingUtilities.invokeAndWait
) - môže to mať za následok deadlock.