Hlavní navigace

Programování v JavaFX: úvod, příprava systému a prostředí

27. 8. 2015
Doba čtení: 14 minut

Sdílet

První díl seriálu článků o platformě JavaFX, který je vlastně pokračováním avizované „pedagogické“ série pro potřeby středních a vyšších odborných škol. Vzhledem k mnohem větší rozšířenosti JavaFX proti jazyku Ada (nejen na školách) bude seriál výrazně konkrétněji zaměřený. V prvním díle budeme instalovat.

Jak je asi z názvu (a také obecně) jasné, patří JavaFX do obecnější platformy Java. Její první verze vyšla v roce 2007 a v současné době jsou aktuální verze obsaženy v Java 8 a 9. Více asi zatím není potřeba obecně platformu popisovat nebo rozebírat. Pokud by někdo měl zájem, může najít dostatek doplňujících informací, např. zde: JavaFX na Wikipedii

Přistoupíme rovnou k přípravě vývojového systému. V rámci jazyka Ada byl použit virtuální stroj, kde běžel OS Salix s prostředím MATE. Aktuální systém bude mít také samozřejmě formu virtuálního stroje (kvůli distribuci). V dalším textu bude následovat podrobnější popis instalace všech potřebných nástrojů a aplikací tak, aby bylo možné vývojové prostředí implementovat a použít i na fyzických strojích. Při přípravě seriálu o JavaFX se vedla diskuse o tom, jestli pro vývojový systém zvolit stejnou základnu, jako v případě jazyka Ada. Nakonec bylo (hlavně z výukových důvodů), rozhodnuto, že se použije opět Linux, ale jiná distribuce. Konečnou volbou byl Debian Jessie s prostředím MATE (technické údaje VM budou stejné – 4 GB RAM, 4 jádra, disk 50 GB). Celé prostředí bude ale vizuálně nastaveno úplně jinak, aby budoucí uživatelé poznali možnosti a rozdíly mezi použitými systémy. Pro instalaci byl použit zdroj v podobě nejnovějšího ISO souboru pro 64-bit – debian-8.1.0-amd64-netinst.iso.

Samotnou instalaci Debianu asi nemá smysl nějak podrobně popisovat, takže se soustředíme na prostředí MATE. Pro jeho instalaci jsou dvě základní možnosti: provést jeho kompletní instalaci přímo z nabídky Debian instalátoru. To je samozřejmě velmi jednoduché a spočívá to pouze v zaškrtnutí příslušné položky ve volbě instalovaných balíků. Konkrétně jsou k dispozici tyto položky: Debian desktop environment*, GNOME, Xfce, KDE, Cinnamon, MATE, LXDE, web server, print server*, SSH server, Standardní systémové nástroje* (hvězdičkou jsou označeny standardně vybrané položky). V rámci uvedené varianty tedy zvolíme položky MATE a Standardní systémové nástroje a necháme dále pracovat instalátor. Instalace proběhne včetně balíčků open-vm-tools (o něm bude více později v textu). Po restartu se prostřednictvím uvedeného balíčku okno VM přizpůsobí automaticky velikosti monitoru hostitele. Druhou možností je pak instalace pouze jediné položky – Standardní systémové nástroje a její následné doplnění. Tato varianta byla nakonec zvolena hlavně ze dvou důvodů: neinstalují se některé zbytečné (samozřejmě myšleno pro daný účel!) balíčky, což uspoří místo na disku. Také je zajištěn nižší nárok na systémové prostředky VM. Aby byla představa konkrétnější, tak uvedeme některé údaje. Při instalaci balíku Standardní systémové nástroje se instaluje celkem 264 dílčích balíčků (stažení a instalace cca 2 min). Poté se instaluje následující sestava balíčků: slim, mate-desktop-environment, xorg, gksu, synaptic, gdebi (celkem 549 balíčků, stahuje se 298 MB a celková instalovaná velikost je 942 MB, stažení a instalace cca 6–10 min).

Tip: pořádáme vlastní školení programování v jazyce Java

Nyní můžeme porovnat jeden z důležitých ukazatelů náročnosti provozu VM, a sice potřebu operační paměti. Nemá smyslu uvádět konkrétní čísla, ale porovnání bylo prováděno při spuštění čistého a čerstvě instalovaného systému s pomocí aplikace MATE system monitor. Zde se znovu vracíme k výše uvedenému balíčku open-vm-tools. Ten je automaticky instalován a použit v případě první popsané varianty kompletního prostředí MATE. Ve druhé variantě není instalován vůbec a rozlišení displeje VM je nutné nastavit ručně pomocí systémových nástrojů. Aby bylo srovnání úplné, do druhé varianty přidáme konkrétně balíček open-vm-tools-desktop včetně všech závislostí (celkem 32 balíčků, konečná velikost cca 120 MB). Pak už můžeme porovnat relativní spotřebu RAM pro všechny tři varianty:

  1. kompletní prostředí MATE – 100%
  2. vybrané balíčky – 80%
  3. vybrané balíčky + OpenVM – 88%

Jak uvedený přehled ukazuje, tak je možní snížit spotřebu RAM pro VM až o 20%. Absolutně už to zase v porovnání s velikostí RAM u VM není zase tolik – cca 50 MB. Přesto byla nakonec jako distribuční zvolena varianta č. 2 s tím, že si každý podle chuti a potřeby může doinstalovat výše uvedený balíček OpenVM. Prostředí je od počátku instalace kompletně v češtině. Tímto konstatováním můžeme uzavřít kapitolku o instalaci vývojového systému a přesunout se k jeho výše uvedené vizuální úpravě. Ta bude spočívat v poměrně jednoduché volbě, která je k dispozici v hlavním menu Systém → Volby → Vzhled. Zde vybereme motiv – BlackMATE, přes příslušnou volbu Upravit… pak ještě ikony = MATE-Faenza-Dark a kurzor = Adwaita. Výsledný vzhled je pak vidět na dále publikovaných obrázcích. Druhá úprava bude spočívat v doplnění appletu Seznam oken a zrušení spodního panelu MATE. Tímto je vývojový systém nastaven a připraven pro instalaci základních součástí vývojového prostředí.

Asi každému je jasné, že hlavní součástí vývojového prostředí bude nějaká verze JVM a JavaFX. Aby to nebylo zbytečně komplikované, tak zvolíme asi nejčastější kombinaci – vývojovou platformu Java verze 8 přímo od Oracle. Bylo by samozřejmě možné využít i platformu OpenJDK buď samotnou nebo v kombinaci se samostatnou částí JavaFX. Také je k dispozici projekt OpenJFX – OpenJFX, OpenJDK Wiki. Použití „oficiální“ verze má samozřejmě několik výhod, které spočívají hlavně v snadné přenositelnosti aplikací a kódu mezi různými platformami, na kterých JDK verze 8 běží. Blíže to ale nebudeme rozebírat. Přejdeme tedy rovnou na web Oracle a podíváme se, jaké možnosti se nám zde nabízejí – Stažení Oracle JDK 8. Jak je z uvedeného odkazu a také prvního obrázku v první galerii patrné, jsou zde pro Linux k dispozici pouze balíčky verze 8u45 ve formě RPM a tar.gz. Využití RPM v Debianu by asi nebylo úplně jednoduché (i když je možné) a přímá instalace komprimovaného souboru by založila na problém s následnou aktualizací. Je proto nutné se poohlédnout po jiném řešení. Naštěstí je k dispozici repozitář pro Ubuntu, který následně využijeme. Návod pro jeho použití je zde – Java 8 na Ubuntu.

Ještě než se pustíme do samotné instalace, doplníme informace o vývojovém systému i prostředí. Pokud použijeme VM podle našeho vybraného scénáře, tak nemáme k dispozici žádnou verzi Javy, ale ani žádný webový prohlížeč. O tom, jestli máme či nemáme k dispozici Javu, se můžeme přesvědčit jednoduchým terminálovým příkazem. Na druhém obrázku v první galerii je vidět jeho výsledek v našem vývojovém systému, kde není žádná verze JVM instalována. Pokud by ale někdo zvolil instalaci kompletního prostředí MATE, bylo by to jinak. Třetí obrázek první galerie ukazuje situaci zde. Na čtvrtém obrázku první galerie (správce balíčků Synaptic) je pak vidět, že jsou zde nějaké balíčky JVM instalované a je třeba je před zahájením samotné akce odinstalovat. V našem systému sice nic takového není, ale přesto si Synaptic otevřeme a provedeme dva úkony. Jako první doplníme zdroje balíčků CONTRIB a NON-FREE, jak to ukazují pátý a šestý obrázek v první galerii (menu Nastavení → Zdroje). Po doplnění provedeme aktualizaci zdrojů příkazem Obnovit. Jako druhý krok provedeme instalaci balíčků filezilla, iceweasel a iceweasel-l10n-cs. Tím máme vývojový systém připravený a můžeme se podívat na uvedenou webovou stránku s návodem pro instalaci Oracle JDK. Jak je z odkazu patrné, jsou zde k dispozici terminálové příkazy pro Debian Jessie a Wheezy. Otevřeme tedy terminál a postupně provedeme všechny uvedené příkazy pro verzi Jessie. Vzhledem k tomu, že nemáme prostředí upravené pro použití příkazu sudo, tak použijeme následující sled příkazů:

su
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" >> /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886

Jejich výsledek je vidět na sedmém obrázku v první galerii. Těmto příkazy jsme do zdroje balíčků přidali příslušné repozitáře a jejich přítomnost můžeme zkontrolovat v Synapticu – viz osmý obrázek první galerie. Repozitáře jsou připravené, a tak můžeme Synaptic zavřít (nebo provést instalaci s jeho pomocí tehdy, když nebudeme chtít používat terminál) a provést další dva příkazy:

aptitude update
aptitude install oracle-java8-installer

Jak ukazuje devátý obrázek v první galerii, budou se stahovat pouze 4 balíčky s výslednou velikostí cca 5.2 MB. Každému je asi jasné, že to není kompletní JDK, ale popořádku. Instalaci tedy spustíme a objeví se první okno s upozorněním na licenční ujednání – viz desátý obrázek první galerie. Okno se po stisku klávesy Enter posune dál na souhlas s licencí. Zde se přesuneme na volbu Ano a potvrdíme Enterem viz obrázek č. 11 v první galerii. Tím se spustí stažení a instalace samotného JDK – viz obrázek č. 12 první galerie. Po ukončení instalace se můžeme v terminálu přesvědčit, že je Java k dispozici – viz obrázek č. 13 první galerie. Také se může podívat do Synapticu, jaké nové balíčky se nám zde objevily – viz obrázek č. 14 v první galerii. Pokud bychom chtěli místo výše uvedených dvou terminálových příkazů použít Synaptic, tak můžeme po přidání zdrojů použít příkaz Obnovit a najít balíček oracle-java8-installer, který se bude následně instalovat. Průběh je velmi podobný, jenom okno s licenčním ujednání vypadá tak, jak to ukazuje poslední obrázek první galerie.

Aktuálně tedy mám k dispozici nejnovější prostředí Oracle JDK a můžeme pokročit k dalším součástem našeho vývojového prostředí. K němu samozřejmě a neodmyslitelně patří samotná aplikace pro vývoj v daném jazyku či platformě. Pro jazyk Java a platformu JavaFX jsou k dispozici tři základní takováto prostředí: Eclipse, IntelliJ IDEA a NetBeans. Nebudeme zde uvádět žádné další informace ani srovnání uvedených aplikací (určitě je nutné upozornit na to, že nejsou jediná, ale v souhrnu určitě nejpoužívanější) a bez dalších podrobností se zaměříme na vývojové prostředí IntelliJ IDEA (dále budeme používat zkratku IJI). Podrobnější informace je možné najít na firemním webu Jetbrains. Toto prostředí je možné použít ve dvou verzích – placené Ultimate a volné Community. My zde použijeme samozřejmě komunitní verzi, která je pro vývoj v JavaFX dostatečná. Přejdeme tedy rovnou na stránku pro stažení nejnovější vývojové verze 15: Idea EAP 15. Jak je z odkazu a prvního obrázku druhé galerie zřejmé, jsou pro obě verze k dispozici celkem 4 varianty. Pro naší verzi Community se jedná o verzi pro Windows (ta obsahuje již příslušnou verzi JDK), komprimovaný archiv pro Linux/Unix, instalační balíček pro Mac včetně JDK a komprimovaný balík se zdrojovým kódem. My pro naše účely stáhneme balíček ideaIC-aktuální-verze.tar.gz. Zde je nutné upozornit na to, že vývoj je docela aktivní a nové verze se tedy mohou objevovat celkem často. Stažený balíček jako běžný uživatel rozbalíme do vytvořeného adresáře $HOME/Apps, kde tak vznikne nový adresář ../idea-IC-aktuální-verze. Obsah důležitého podadresáře ../bin je vidět na druhém obrázku ve druhé galerii.

Pro nás je zde důležitý soubor idea.sh, na který provedeme myší dvojklik. Objeví se klasický dialog pro spuštění souboru – viz třetí obrázek druhé galerie a my zvolíme poslední možnost Spustit. Následně se objeví okno s možností importu předchozího nastavení, jak je patrné ze čtvrtého obrázku ve druhé galerii. My samozřejmě žádné k dispozici nemáme, a proto ponecháme nastavenou volbu a klikneme na tlačítko OK. Pak se objeví první z možností počátečního nastavení – téma uživatelského prostředí – viz pátý obrázek první galerie. My zde volíme tmavé téma Darcula a pokračujeme pravým tlačítkem Next: Desktop Entry. Objeví se další okno, kde je možné zadat vytvoření odkazu na ploše pro aktuálního nebo všechny uživatele – viz šestý obrázek druhé galerie. My ponecháme přednastavenou volbu a pokračujeme tlačítkem Next: Default plugins. Volby (sedmý obrázek ve druhé galerii) ponecháme být a postoupíme dál tlačítkem Next: Featured plugins. Opět nás nečeká žádná změna (formulář je na osmém obrázku druhé galerie) a nastavení ukončíme tlačítkem Start using IntelliJ IDEA. Po něm se objeví základní startovací formulář vývojového prostředí – viz devátý obrázek ve druhé galerii. Zde jsou 4 základní možnosti:

  • Create New Project
  • Import Project
  • Open
  • Check out from Version Control

Kromě těchto voleb jsou k dispozici i další dvě obecné možnosti:

  • Configure
  • Get Help

Poslední dva obrázky (č. 10 a 11) druhé galerie ukazují volby, která se zde nabízejí.

My prozatím ponecháme vývojové prostředí IJI stranou a dokončíme instalaci dalších dvou potřebných nástrojů pro vývoj v JavaFX. Prvním z nich je aplikace s názvem JavaFX Scene Builder (dále jen JFXSB). Zatím se o něm nebudeme moc rozepisovat a na úvod si řekneme pouze to, že se jedná (jak už napovídá samotný název aplikace) o nástroj pro tvorbu uživatelského prostředí pro aplikace JavaFX. Na webu Oracle si najdeme a stáhneme příslušný balíček – Stažení JavaFX Scene Builder. Jak ukazuje webová stránka i první obrázek třetí galerie, jsou k dispozici verze 1.1 a 2.0 a pro každou z nich několik instalačních balíčků. My samozřejmě volíme aktuální verzi 2.0, kde máme pro naše účely dva použitelné balíčky: Linux 64-bit tar.gz a deb. My si stáhneme DEB balíček a pomocí aplikace GDebi ho standardním způsobem instalujeme. Objeví se nám nová položka v hlavním menu – viz druhý obrázek ve třetí galerii. Po jeho spuštění se otevře hlavní okno aplikace, jak to ukazuje třetí obrázek třetí galerie.

Poslední součástí našeho vývojového prostředí bude databázový stroj. Zase bez dalších větších podrobností ohledně výběru budeme pouze konstatovat, že se v naší sérii bude využívat téměř výhradně (s jednou výjimkou, kterou budeme komentovat až na příslušném místě) PostgreSQL (dále jen PG). Jeho aktuální verze se nachází v repozitářích Debianu, takže nám nic nebrání v otevření Synapticu a instalaci několika málo balíčků, konkrétně tří: postgresql-9.4, postgresql-contrib-9.4, pgadmin3. Čtvrtý obrázek ve třetí galerii ukazuje, že se dohromady instaluje 10 balíčků s konečnou velikostí pod 50 MB. Aplikace pgAdmin se nám objeví v hlavním menu – viz pátý obrázek třetí galerie. Samotný databázový stroj ale musíme ještě zprovoznit a nastavit k němu základní přístup.

Při instalaci PG byl automaticky vytvořen nový systémový uživatel postgres. Ten sice existuje, ale nemá zatím žádný přístup k systému. Jako první krok tedy pro něj vytvoříme nové heslo pomocí příkazu terminálu:

su -c 'passwd postgres'

kde zadáme administrátorské heslo a dvakrát nové heslo uživatele postgres. Pomocí příkazů pak můžeme zkontrolovat, jestli databázový stroj běží, a pro jistotu ho restartujeme:

su -c 'service postgresql status'
su -c 'service postgresql restart'
su -c 'service postgresql status'

Jak ukazuje šestý obrázek ve třetí galerii, stroj je spuštěn a připraven k práci. Můžeme tedy přistoupit k tomu, že vytvoříme nového databázového uživatele, přiřadíme mu vytvořenou databázi a vše zkontrolujeme pomocí pgAdmin. K nastavení budeme potřebovat několik příkazů:

  • su - postgres
    příkazem přejdeme v terminálu pod daného uživatele pomocí nově vytvořeného hesla
  • psql
    nastartujeme řádkového klienta databázového systému
  • CREATE USER fxguide WITH PASSWORD 'fxguide';
    databázovým příkazem vytvoříme nového uživatele včetně hesla
  • CREATE DATABASE fxguidedb OWNER fxguide;
    příkazem vytvoříme novou databázi, kde je vlastníkem nově vytvořený uživatel
  • \q

    nebo

    quit
    ukončíme klienta databázového systému pomocí příkazů

Sedmý obrázek třetí galerie ukazuje provedení všech uvedených příkazů. Následně je možné přejít do terminálu a jako administrátor provést restart databázového serveru výše uvedeným příkazem. Po restartu je možné spustit pgAdmin. Zde se zobrazí základní okno, jak je vidět na osmém obrázku ve třetí galerii. My použijeme ikonu úplně vlevo s motivem zástrčky (Přidat připojení k serveru). Po spuštění se objeví formulář, který doplníme o název připojení a použijeme nově vytvořeného uživatele včetně jeho hesla – viz devátý obrázek třetí galerie. Pokud necháme zatrženou volbu Pamatovat si heslo, následně se objeví varování s ohledem na tuto volbu, jak ukazuje desátý obrázek ve třetí galerii. Vzhledem k účelu použití nebudeme nic měnit a pouze odsouhlasíme tlačítkem Budiž. Jak ukazuje obrázek č. 11 třetí galerie, objeví se zde nová skupina serverů a v ní námi založený server FXGuide. Po rozkliknutí se můžeme dostat k jeho „obsahu“. Pokud jste se o to pokusili, tak je asi jasné, že to není úplně dokonale přehledné. Zde se nám dost negativně podepsalo tmavé základní téma prostředí MATE! Není ale třeba zoufat. Můžeme připojený server pomocí pravého tlačítka myši a voleb pod ním odpojit a nakonec odstranit. Následně pak provedeme stejné připojení nového serveru, kde změníme pouze jedinou položku – Barva a místo nastavené bílé zadáme nějakou jinou, pro naše účely kontrastnější barvu. Výsledek je pak viditelný na posledním obrázku ve třetí galerii.

V levém sloupci je vidět stromová struktura námi vytvořeného serveru (databáze, schémata, prostory tabulek a přihlašovací role včetně dalších vnořených součástí). Vpravo s dolní oblasti je možné si všimnout SQL příkazu, pomocí kterého byla naše databáze vytvořena a který je možné kdykoliv znovu využít. Tímto máme databázový stroj připravený k akci a můžeme tak ukončit přípravu vývojového systému i prostředí. Jenom na okraj – databázový stroj je nastaven tak, že se při každém startu/restartu VM automaticky spustí. Potřeba paměti takto kompletně konfigurovaného stroje se dostane na hodnotu prakticky stejnou, jako to bylo v případě holého systému z vybraných balíčků spolu s aplikací OpenVMTools. Má tedy pořád nižší spotřebu paměti, než základní systém s kompletním prostředím MATE! Pokud bychom ještě odstranili tři nedůležité soubory:

CS24 tip temata

su -c 'aptitude remove exim4-base exim4-config pulseaudio'

tak se se spotřebou paměti dostaneme pouze o cca 8% výše proti úplně holému systému z vybraných balíčků. Možná se tato snaha jeví jako zbytečná, ale pro vývoj v Javě není paměti nikdy dost…

Dnešní díl byl sice kratší, než je obvyklým zvykem, ale podařilo se nám v něm vytvořit základní virtuální stroj s vývojovým systémem. Tento systém by krátce upraven a do něj jsme instalovali prakticky kompletní vývojové prostředí pro JavaFX včetně databázového stroje. V příštím dílu už s tímto prostředím začneme pracovat a ukážeme si jednoduché aplikace a příklady.