Přeskočit na obsah

JavaFX

Z Wikipedie, otevřené encyklopedie

Šablona:Infobox Software

JavaFX je softwarová platforma postavená na bázi platformy Java z dílny společnosti Sun Microsystems. Slouží pro vývoj tzv. RIA aplikací (Rich Internet applications), v překladu bohatých internetových aplikací. Jak již z názvu vyplývá, jedná se především o prvky zajišťující interaktivitu webových stránek, tedy stránek, které s uživatelem, oproti těm statickým, nějakým způsobem komunikují. V případě JavaFX webových aplikací, které se formou pluginu spouští z prohlížeče, navíc platforma umožňuje si aplikaci stáhnout a využívat ji jako klasický desktopový program a to i v offline módu. JavaFX je cílena na vývojáře programů toužících po rychlém a snadném vývoji pro desktopy, internetové prohlížeče, ale i rychle rozvíjející se mobilní oblast. V budoucnu lze očekává rozšíření platformy i pro další zařízení, jako jsou herní konzole, televizní set-top boxy nebo Blu-ray mechaniky. JavaFX vznikla jako reakce na masové rozšíření platforem jako je Adobe Flash a především Microsoft Silverlight.

Výhody JavaFX

Platforma byla navržena tak, aby se ti, jež ji používají, mohli soustředit na kreativní část práce namísto kódování. Konkurenční výhodu přináší také přenositelnost mezi platformami - JavaFX koresponduje s heslem „Write once, run anywhere“. To znamená, že aplikace naprogramované na platformě JavaFX můžete spouštět na kterémkoliv prostředí, kde běží JRE (Java Runtime Environment). V současnosti je JavaFX oficiálně plně podporována Windows XP /Vista a MacOS, nicméně brzy se očekává podpora i pro Linux. U mobilních zařízení lze spouštět aplikace na Androidu, systému Windows Mobile a dalších příslušných OS. Další neméně zajímavou vlastností je, že programátoři mohou v rámci JavaFX využívat jakoukoliv třídu napsanou v Javě. Vývoj aplikací je poměrně rychlý a snadný a to díky jazyku JavaFX Script. Mimo jiné nabízí také velmi dobrou podporu pro používání multimediálních prvků, ať už jde o video, audio, animace, atd. Výhodou oproti mnohým podobně cíleným platformám je ochrana zdrojového kódu proti prohlížení ze sítě Internet, která se nevyskytuje např. u AJAXu.

Jak začít vyvíjet

Chcete-li začít vytvářet aplikace na platformě JavaFX stačí si stáhnout JavaFX 1.1 SDK, které obsahuje:

  • JavaFX 1.1 Desktop Runtime
  • JavaFX 1.1 Mobile Emulator (for Windows)
  • JavaFX 1.1 APIs
  • JavaFX 1.1 Compiler
  • JavaFX API dokumentace
  • Ukázky

Pro potřeby vývoje poskytuje společnost Oracle vývojové prostředí Netbeans IDE 7.3 (březen 2013), které i v základní verzi obsahuje podporu pro JavaFX. Pro vývoj je potřeba ještě JavaFX 2.2.7 SDK, které je volně k dispozici pro stažení. S platformou souvisí ještě balíček JavaFX 1.1 Production Suite obsahující nástroje a pluginy, které umožňují exportovat grafické materiály do JavaFX.

Nasazení aplikací

JavaFX platformu je možné nasadit následujícími způsoby:

  • Java pluginy – nasazení Java apletů do prohlížečů
  • Java Web Start – nasazení samostatné desktopové aplikace pomocí JNLP
  • JavaFX 1.1 Mobile Emulator – zobrazuje aplikaci, jako kdyby byla spuštěna na mobilu

Historie

  • Květen 2007 – poprvé představen projekt JavaFX veřejnosti na konferenci vývojářů JavaOne
  • Květen 2008 – Sun Microsystems oznámil plán, že do konce roku 2008 uvolní JavaFX pro prohlížeče a desktopy, pro mobilní zařízení *pak na jaře 2009
  • Od konce července 2008 – možnost náhledu do JavaFX SDK pro Windows a Macintosh, také uvolněn plugin pro IDE Netbeans 6.1
  • Prosinec 2008 – Sun uvolnil první verzi platformy - JavaFX 1.0
  • Únor 2009 – JavaFX dostupná také pro mobilní zařízení ve verzi JavaFX 1.1

JavaFX jako open source

Klíčové elementy technologie JavaFX jsou otevřeny jako open source projekty tak, aby umožňovaly zákazníkům a partnerům společnosti Sun Microsystems využívat maximálního užitku a bezpečnosti. JavaFX compiler, části grafických knihoven a nástrojů jsou přístupné z OPENJFX (http://openjfx.org) pod hlavičkou GPL 2.0 open source licence. JavaFX Runtime je dosud vyvíjen interně společností Sun, avšak vedení společnosti vyjádřilo přání v následujících letech postupně odkrýt dosud neodkryté veřejnosti.

Programování na platformě JavaFX – JavaFX Script

Platforma JavaFX má pro vývoj aplikací svůj specializovaný skriptovací jazyk původně pojmenovaný F3 (Form Follows Function), nyní oficiálně JavaFX Script. Vývoj v JavaFX Scriptu ulehčuje podpora většiny používaných IDE (Netbeans, Eclipse). Syntaktické a další chyby jsou programátorovi předávány při překladu (tzv. compile-time errors).

JavaFX Script je staticky typovaný deklarativní skriptovací jazyk, který je postaven na platformě Java. Kód JavaFX Scriptu je údajně až 5x úspornější než Javy. Syntaxe se podobá JavaScriptu. Jazyk poskytuje výhodu automatického data bindingu i plné podpory 2D grafiky, swingovských komponent a deklarativních animací. Koncovka zdrojových souborů je fx. Takže pokud se jmenuje třída např. Hlavni, potom zdrojový kód napsaný v JavaFX Scriptu bude „Hlavni.fx“.

Staticky typovaný – To znamená, že datový typ každé proměnné, parametru i návratové hodnoty musí být znám již při překladu.

Deklarativní – Jazyk popisuje čeho se má dosáhnout, ne však jak. Jako výsledek je jednodušší syntaxe oproti Javě. Vzhledem k tomuto rysu je JavaFX Script vhodný pro tvorbu komplexních GUI aplikací.

Data binding – Jedná se o obecnou techniku spojující logiku a uživatelské rozhraní. Pokud jsou správně nastaveny vazby, změní-li data hodnotu, tak elementy vázané k těmto datům se automaticky změní, platí i opačná závislost. Například změna stavu jedné GUI komponenty synchronizovaně změní jinou komponentu či datový model bez potřeby jakéhokoliv listeneru, který se používá třeba v Javě.

Architektura

JavaFX vhodně kombinuje skriptovací jazyk JavaFX Script s množstvím vývojových nástrojů, grafických, audio a jiných knihoven médií včetně runtime prostředí. To vše zajišťuje sjednocený look and feel (vzhled a pocit) napříč různými zařízeními.

Základní syntaxe

Proměnné a primitivní typy

JavaFX Script poskytuje 4 primitivní typy: String, Boolean, Number a Integer. Proměnné jakéhokoliv typu je uvedena s klíčovým slovem var. Na rozdíl od Javy zde není třeba uvést datový typ při deklaraci, datový typ si interpret odvodí z jejího použití. Nicméně protože jde o staticky typový jazyk, nelze v průběhu životního cyklu datový typ měnit. Proměnné musí být pojmenovány v souladu s pravidly Javy.

Příklad:

var mojePromenna = "obsah promenne";
mojePromenna:String = "obsah promenne";

Operátory

JavaFX Script poskytuje de facto stejné operátory jako Java, plus některé unikátní navíc jako např. reverse (opačná sekvence), indexof (index sekvence), as (přetypování), atd.

Funkce a operace

Pro potřeby funkcí definuje JavaFX Script klíčové slovo function. Funkce reprezentuje znovupoužitelný blok kódu. Může obsahovat deklarace proměnných i návratový typ, obsah funkce se zapisuje do složených závorek. Funkce se používají zejména pro účely matematické nebo jako gettery a settery tříd. V kontrastu s Javou je možné deklarovat funkce, ale i proměnné mimo třídy. Procedury v JavaFX Scriptu mají vyhrazeno klíčové slovo operation a mohou obsahovat libovolné množství příkazů.

Příklad:

operation vypisAhoj() {
    System.out.println("Ahoj"); 
}
function secti(a, b) { 			
    var c = a + b;				            
    return c;   					
}

Podmínky a cykly

Jsou obdobné jako v Javě.

Výraz rozsahu

JavaFX Script obsahuje novinku kterou je výraz, který umožňuje deklarovat sekvenci. Výraz používá dva integery oddělené notací „..“

Příklad:
[1..10 step 2] výraz zobrazuje sekvenci lichých čísel od 1 do 9

Výjimky

Jazyk podporuje vyhazování výjimek prostřednictvím výrazu throw a jejich zachycování bloky try, catch, finally. V podstatě je to stejné jako v Javě s výjimkou pořadí výrazů catch, které se mohou objevit v jakémkoliv pořadí, oproti Javě kde je nutné uvést nejdřív hierarchicky nižší podtřídy.

Třídy a objekty

Třídy se vytvářejí s použitím klíčového slova class následovaného platným identifikátorem. Tělo třídy je ve složených závorkách, atributy začínají klíčovým slovem atribute. Chování poskytované třídou je poskytováno funkcemi. Přístup k třídám je dán modifikátory public, private, protected. Jazyk obsahuje také konstrukci static pro tvorbu třídních funkcí, atributů, nabízí se tedy možnost definovat tzv. utility třídy (viz např. Math poskytující různé matematické funkce). Instance tříd se na rozdíl od Javy nevytváří pomocí operátoru new, ale pomocí objektových literálů.

Příklad: vytvoření objektu Adresa

def mojeAdresa = Adresa {
    ulice: "1 Main Street";
    mesto: "Santa Clara";
    stat: "CA";
    zip: "95050";
}

Dědičnost a vícenásobná dědičnost

Existuje možnost dědění tříd, kdy se zdědí atributy a funkcionalita nadtřídy. K tomu slouží klíčové slovo extends. Navíc JavaFX Script má speciální bloky zajišťující bezpečnou inicializaci a post inicializaci hierarchie (bloky init a postinit). Na rozdíl od Javy se zde vyskytuje vícenásobná dědičnost, kdy třída může dědit od více tříd.

Vytváření Java objektů v JavaFX Scriptu

Operátor new má opodstatnění při vytváření Java instancí.

Příklad:

var date = new java.util.Date();

Data binding

Pro potřeby data bindingu obsahuje JavaFX Script výrazy let a bind. Klíčové slovo let označuje závislá data, bind nezávislá.

Příklad:

var text1 = "text1";
let text2 = bind text1;
System.out.println(text2);   // vypíše: text1
text1 = "nový text";
System.out.println(text2);   // vypíše: nový text

Ukázka jednoduché aplikace v JavaFX Scriptu

Alternativa 1:

import javafx.ext.swing.*;
SwingFrame {
    title: "Hello world";
    width: 100;
    height: 50;
    content: Label {
        text: "Hello world";
    }
    visible: true;
}

Alternativa 2:

import javafx.ext.swing.*;
var myFrame:SwingFrame = new SwingFrame();
var myLabel:Label = new Label();
myLabel.text = "Hello World!";
myFrame.width = 200;
myFrame.height = 50;
myFrame.visible = true;
myFrame.content = myLabel;

Zdroje

Reference