JUMANJI
Aplikačný framework pod licenciou „GNU Library or Lesser General Public License (LGPL)“
Aplikačný framework je dostupný na adrese: http://sourceforge.net/projects/jumanji/.
Základné vlastnosti frameworku
Aplikačný rámec sa skladá z niekoľko častí - samostatných knižníc:
- Knižnica jumanji-common obsahuje predovšetkým pomocné triedy, ktoré môžu (mali by) byť používané pre prácu s dátami. Na knižnici závisia všetky ostatné súčasti frameworku. Jedným typom tried sú konvertery pre prevádzanie jedno dátového typu na druhý (v balíčku net.sf.jumanji.convert). Ďalej obsahuje balíček net.sf.jumanji.util), ktorý je kolekciou rôznych tried pre podporu napríklad zobrazovanie lokalizovaných mien pomocou bundlu, či kódovanie a základy akcií pre zobrazovanie v prezentačnej vrstve aplikácie, a pod. Viac o balíčku net.sf.jumanji.util v časti Utils. Súčasťou tejto knižnice sú tiež vlastné dátové typy používané v Jumanji (v balíčku net.sf.jumanji.type) a definované výnimky špecifické pre Jumanji.
- Knižnica jumanji-da (Dátový Adaptér) poskytuje triedy pre dynamickú interakciu s dátovými úložiskami riadenou príkazmi z XML (dynamické DAO). V súčasnej dobe je podporované dopytovanie prostredníctvom rozhrania (resp. knižníc) JDBC, Hibernate a JPA.
- Knižnica jumanji-ui (User Interface) s triedami pre podporu uživateľského rozhrania aplikácií nezávisle na prostredí (zatiaľ dostupná implementácia založená na protokole HTTP). Viac informácií viz. samostatná kapitola.
- Vzorová webová aplikácia jumaji-samples, ktorý predstavuje ukážkovú webovú aplikáciu používajúcu Jumanji UI. Obsahuje dve časti:
- Application(.ui) - príklad non-desktop-like aplikácia (net.sf.jumanji.samples) a
- Desktop(.ui) - príklad desktop-like aplikácia (net.sf.jumanji.samples.desktop).
JUMANJI UI
Systém pre tvorbu uživateľského rozhrania Jumanji UI (Jumanji User Interface) tvorí hlavnú časť rámca. Snahou pri vývoji systému bolo navrhnúť všeobecný programový model nezávislý na prostredí, na ktorom bude užívateľské rozhranie postavené. V súčasnej dobe existuje jediná implementácia tohoto rozhrania a to je implementácia nad protokolom HTTP.
Aplikačné rozhranie je postavené na paradigmate stromovej štruktúry komponent uživateľského rozhrania, ktoré sa rekurzivne vykresľujú a vzniká tak konečná podoba celej stránky.

Architektúra UI
Prezentačná vrstva aplikácie postavenej na frameworku Jumanji sa skladá z komponentou, ktoré sú potomkom základnej triedy UIControl. Každý komponent má svoje meno, unikátny identifikátor a rodiča (koreňový komponen má rodiča nedefinovaného). Kontrolky sú pri vytváraní webovej stránky zaraďované do stromovej hierarchie podobne ako napríklad HTML elementy. Komponenty môžu udržovať svoj stav pre daného užívateľa (s využitím HttpSession na pozadí). Kontrolka si je vedomá svojho „rodiča/ov“(nadradená kontrolka) a svojich „potomkov“ (kontrolky, ktoré obsahuje) v tejto hierarchii.
Komponenty sa v prostredí webu vizualizujú pomocou JSP šablón plniacich funkciu view, ktoré sú k danej kontrolke priradené deklaratorne či dynamicky. Každej kontrolke je pri jej inštanciovaniu priradené meno a na jeho základe vytvorený jedinečný identifikátor tejto kontrolky, pomocou ktorého je možné kontrolku refrencovať aj z JSP view.
Hlavné prednosti
- možnosť stavať uživateľské rozhrania po stránkách či komponentoch,
- efektívna možnosť opakovaného využitia už hotových komponentov uživateľského rozhrania,
- predpripravené šablóny a desktop-like design uživateľského rozhrania (tzv. Jumanji desktop) tvorený kompomentami podobnými ako v desktopovom UI (Window, TabContainer, Toolbar, MessageBox, Frame a ďalšie),
- udalosťami riadené uživateľské rozhranie, možnosť volať akčné metódy na komponentoch priamo cez http,
- absolútna kontrola nad výstupom aplikácie, žiadny nadbytočný automaticky generovaný kód,
- pokročilá podpora pre tvorbu komplexných štrukturovaných formulárov s kontrolami formulárových polí na strane klienta i serveru (rozširovaním triedy net.sf.jumanji.ui.http.form.validator.FieldValidator a ich potomkov) s pripravenými validátormi pre bežné typy validácií vrátane podmienených,
- podpora technológie AJAX a asynchrónneho vyvolávania akcií na komponentoch UI (so zachovaním plnej funkčnosti i v prípade nedostupnosti podpory JavaScriptu/AJAXu),
- podpora tlačítka Späť vo webovom prehliadači klienta pomocou serializácie aktuálneho stavu uživateľského rozhrania (tzv. view state s možnosťou ukladania na klienta alebo na server),
- vlastná knižnica JSP značiek usnadňujúci vývoj šablón jednotlivých komponentov,
- možnosť použitia všestranného jazyka Expression Language EL vo všetkých UI i vlastných JSP značkách (rovnako ako v značkách z knižnice JSTL).

