JUMANJI
Aplikační framework pod licencí „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 se skládá z několika částí - samostatných knihoven:
- Knihovna jumanji-common obsahuje především pomocné třídy, které mohou (měly by) být používány pro práci s daty. Na knihovně závisí všechny ostatní součásti frameworku. Jedním typem tříd jsou konvertery pro převádění jedno datového typu na druhý (v balíčku net.sf.jumanji.convert). Dále obsahuje balíček net.sf.jumanji.util), který je kolekcí různých tříd pro podporu například zobrazování lokalizovaných jmen pomocí bundlu, či kódování a základy akcí pro zobrazování v prezentační vrstvě aplikace, apod. Více o balíčku net.sf.jumanji.util v části Utils. Součástí této knihovny jsou také vlastní datové typy používané v Jumanji (v balíčku net.sf.jumanji.type) a definovány výjimky specifické pro Jumanji.
- Knihovna jumanji-da (Datový Adaptér) poskytuje třídy pro dynamickou interakci s datovými úložišti řízenou příkazy z XML (dynamické DAO). V současné době je podporováno dotazovaní prostřednictvím rozhraní (resp. knihoven) JDBC, Hibernate a JPA.
- Knihovana jumanji-ui (User Interface) s třídami pro podporu uživatelského rozhraní aplikací nezávisle na prostředí (zatím dostupná implementace založená na protokolu HTTP). Více informací viz. samostatná kapitola.
- Vzorová webová aplikace jumaji-samples, který představuje ukázkovou webovou aplikaci používající Jumanji UI. Obsahuje dvě části:
- Application(.ui) - příklad non-desktop-like aplikace (net.sf.jumanji.samples) a
- Desktop(.ui) - příklad desktop-like aplikace (net.sf.jumanji.samples.desktop).
JUMANJI UI
Systém pro tvorbu uživatelského rozhraní Jumanji UI (Jumanji User Interface) tvoří hlavní část rámce. Snahou při vývoji systému bylo navrhnout obecný programový model nezávislý na prostředí, na kterém bude uživatelské rozhraní postaveno. V současné době existuje jediná implementace tohoto rozhraní a to je implementace nad protokolem HTTP.
Aplikační rozhraní je postaveno na paradigmatu stromové struktury komponent uživatelského rozhraní, které se rekurzivně vykreslují a vzniká tak konečná podoba celé stránky.

Architektura UI
Prezentační vrstva aplikace postavené na frameworku Jumanji se skládá z komponent, které jsou potomkem základní třídy UIControl. Každá komponenta má své jméno, unikátní identifikátor a rodiče (kořenová komponenta má rodiče nedefinovaného). Kontrolky jsou při vytváření webové stránky zařazovány do stromové hierarchie podobně jako například HTML elementy. Komponenty mohou udržovat svůj stav pro daného uživatele (s využitím HttpSession na pozadí). Kontrolka si je vědoma svého „rodiče/ů“(nadřazená kontrolka) a svých „potomků“ (kontrolky, které obsahuje) v této hierarchii.
Komponenty se v prostředí webu vizualizují pomocí JSP šablon plnících funkci view, které jsou k dané kontrolce přiřazeny deklaratorně či dynamicky. Každé kontrolce je při jejím instanciování přiřazeno jméno a na jejím základě vytvořen jedinečný identifikátor této kontrolky, pomocí něhož lze kontrolku refrencovat i z JSP view.
Hlavní přednosti
- možnost stavět uživatelské rozhraní po stránkách či komponentově,
- efektivní možnost opakovaného využití již hotových komponent uživatelského rozhraní,
- předpřipravené šablony a desktop-like design uživatelského rozhraní (tzv. Jumanji desktop) tvořený kompomentami obdobnými jako v desktopovém UI (Window, TabContainer, Toolbar, MessageBox, Frame a další),
- událostmi řízené uživatelské rozhraní, možnost volat akční metody na komponentách přímo přes http,
- naprostá kontrola nad výstupem aplikace, žádný nadbytečný automaticky generovaný kód,
- pokročilá podpora pro tvorbu komplexních strukturovaných formulářů s kontrolami formulářových polí na straně klienta i serveru (rozšiřováním třídy net.sf.jumanji.ui.http.form.validator.FieldValidator a jejích potomků) s připravenými validátory pro běžné typy validací včetně podmíněných,
- podpora technologie AJAX a asynchronního vyvolávání akcí na komponentách UI (se zachováním plné funkčnosti i v případě nedostupnosti podpory JavaScriptu/AJAXu),
- podpora tlačítka Zpět ve webovém prohlížečí klienta pomocí serializace aktuálního stavu uživatelského rozhraní (tzv. view state s možností ukládání na klienta nebo na server),
- vlastní knihovna JSP značek usnadňující vývoj šablon jednotlivých komponent,
- možnost použití všestranného jazyka Expression Language EL ve všech UI i vlastních JSP značkách (stejně jako ve značkách z knihovny JSTL).
Realizovaná řešení
O3 - informační systém Odměny
Videon - systém distribuce video obsahu

