Využití JavaFx při tvorbě grafických aplikací

Představení JavaFX

JavaFX je softwarovou knihovnou (nebo také platformou), napsanou v jazyce Java a určenou k vývoji grafických aplikací. Dá se využít jako alternativa ke knihovně Swing, kterou by měla v budoucnu nahradit [1.1]. Vyvíjí ji společnost Oracle a je součásti JRE a JDK.

JavaFX odděluje vzhled aplikace od logiky, a to použitím jazyků CSS a FXML, které budou popsány v samostatných kapitolách. Díky tomuto separování mohou na aplikaci paralelně pracovat vývojář logiky aplikace, designér GUI a grafický designér. Oddělení vzhledu od logiky odpovídá návrhovému vzoru MVC, který tak lze při vývoji JavaFX aplikací přirozeně použít.

JavaFX je zaměřena zejména na vývoj RIA, nicméně vhodně slouží i k vývoji klasických desktopových aplikací. Podporovány jsou platformy Windows od verze XP, Mac OS X a Linux [1.2]. Distribucí JavaFX aplikací na mobilní zařízení a tablety se zabývá projekt JavaFXPorts.

Historie

JavaFX vychází z jazyka JavaFX Script, který vznikl za účelem tvorby propracovaných grafických uživatelských rozhraní (GUI) webových aplikací. Ve verzi 2.0, vydané v říjnu 2011, došlo k vypuštění JavaFX Script a nahrazení jazykem Java. Vývoj JavaFX Script pokračuje ve formě jazyka Visage, který je více rozebrán v kapitole 1.4 [1.5] [1.6].

Ve verzích 2.x byly zaváděny funkcionality jako jazyk FXML, podpora spolupráce s knihovnou Swing, kontejnery umožňující zobrazení webových stránek psaných v HTML / JavaScript kódu, a mnohé další. Od verze JRE 8 se číslování verzí JRE a JavaFX sjednotilo, v době vzniku této práce je aktuální verze JavaFX 8. Mezi hlavní novinky této verze patří rozšířená podpora 3D grafiky [1.7] [1.8].

Srovnání s knihovnou Swing

JavaFX přináší ve srovnání s knihovnou Swing mnoho novinek a vylepšení. Pomocí JavaFX je možné produkovat obsah, k jehož vytvoření by za použití knihovny Swing bylo nutné použít externí knihovny. Jedná se zejména o diagramy, 3D grafiku a audio/video obsah. JavaFX také umožňuje jednoduché vytváření animací. Za tímto účelem je v knihovně Swing možné použít třídu Timer. Knihovna zjednodušuje práci s obrázky, viz Média.

V provedených výkonnostních testech vykazovaly JavaFX lepší výsledky za předpokladu, že byla povolena hardwarová akcelerace. Tu v dnešní době podporují i počítače nízké výkonnostní třídy.

Čas nutný k vykreslení Bézierových křivek

Platforma je stále ve vývoji, a tak je možné očekávat ladění bugů a přidávání nových funkcí. Již v současném stavu se ale jedná o plnohodnotnou náhradu knihovny Swing. Výhody JavaFX však nejsou natolik výrazné, aby opodstatnily migraci aplikace z knihovny Swing na JavaFX. To platí zejména pro aplikaci využívající minimum grafického obsahu (např. formulářové aplikace).