Tvorba JavaFX aplikácie: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „Kategória:Študentské práce Kategória:Ročníkové práce Kategória:Informatika Kategória:Java {{Praca_uvod|3|Platforma JavaFX pre moderné webové ap…“)
 
Riadok 5: Riadok 5:
 
{{Praca_uvod|3|Platforma JavaFX pre moderné webové aplikácie|Čo je JavaFX|JavaFX 1.2|Tvorba JavaFX aplikácie||||||||}}
 
{{Praca_uvod|3|Platforma JavaFX pre moderné webové aplikácie|Čo je JavaFX|JavaFX 1.2|Tvorba JavaFX aplikácie||||||||}}
 
= =
 
= =
 +
 +
Táto kapitola je o tvorbe JavaFX aplikácií na platforme Windows. V podkapitole 3.1 je popísaný princíp tvorby JavaFX aplikácie, v podkapitole 3.2 je popis vývojových prostredí a poslednej podkapitole 3.3, je návrh vlastnej aplikácie ktorá bude komunikovať so vzdialeným serverom a vizualizovať požadované dáta.
 +
 +
Úlohou mojej aplikácie bude zobrazovať aktuálny rozvrh na Fakulte Mechatroniky na našej škole podľa, po zvolení príslušného školského krúžku. Moju aplikáciu som nazval RozvrhFX.
 +
 
==Postup pri výrobe programu==
 
==Postup pri výrobe programu==
 +
Skôr, ako začnem popisovať postup pri výrobe samotného programu, je nutné si uvedomiť skutočnosť, že JavaFX bola vyvinutá aby poskytovala jednoduchosť, funkčnosť a atraktivitu hlavne pre koncového užívateľa, to znamená, na výrobe programu by sa mali podieľať nielen  vývojári obsahu samotného zdrojového kódu, ale aj grafický dizajnéri, ktorí dodajú programu na atraktivite po vizuálnej stránke.
 +
                                                                         
 +
Obr. č. 7: Výrobný proces JavaFX
 +
 +
 
==Vývojové prostredia==
 
==Vývojové prostredia==
==Tvorba aplikácie RozvrhFX==
+
Na vývoj samotného zdrojového kódu sa dá využiť niekoľko vývojových prostredí, ktoré sú v súčasnej dobe schopné pracovať s JavaFX. Rozhodol som sa, že sa zameriam na niektoré z nich, ktoré sú najdostupnejšie pre bežných vývojárov.
 +
 
 +
===JavaFX Pad===
 +
 +
Obr. č. 8: Náhľad od JavaFX Pad
 +
 
 +
*je prehľadný a jednoduchý, avšak neposkytuje takmer žiadne možnosti zjednodušenia si práce  so samotným  kódom
 +
*neumožňuje žiadne rozšírené možnosti nastavenia samotného JavaFX Pad-u
 +
 
 +
===JFX Builder===
 +
 +
Obr. č. 9: Náhľad od JFX Builder
 +
 
 +
 
 +
*užívateľovi poskytuje širokú škálu možností na prácu s kódom
 +
*jeho nevýhodou je komplikovanosť a malá prehľadnosť
 +
 
 +
===Netbeans IDE 6 (a jeho vyššie verzie)===
 +
Obr. č. 10: Náhľad od Netbeans IDE 6
 +
 
 +
*verzie 6 (6.0.1 a vyššie) Netbeans-u poskytuje užívateľovi jednoduchosť, prehľadnosť, funkčnosť a veľa možností ako pri práci s kódom, tak i v nastaveniach samotného prostredia
 +
*samozrejmosťou je on-line preview modelovanej triedy
 +
*je tu aj možnosť simulácie mobilného telefónu pre vývoj aplikácií v JavaMobile
 +
*pretože tento vývojový softvér poskytuje tvorenie kódov a ich následné ladenie a kompiláciu v množstve skriptov, od relatívne starých až po tie najnovšie, nie je výhodné aby ho tvorcovia ponúkali kompletný pre jeho prípadnú veľkosť, preto je nutné pre rozšírenie jeho možností stiahnuť si plug-in zodpovedajúci typu skriptu
 +
 
 +
Pre prácu s JavaFX som si vybral práve Netbeans IDE preto, že toto prostredie nie je „mŕtve“, to znamená, že neustále je doplňované update-ami, a to nielen takými, ktoré sa podieľajú na množstve plug-in-ov rozširujúcich možnosti pôsobnosti prostredia  v rôznych skriptoch, ale aj takých, ktoré rozširujú možnosti práce s každým jedným skriptom.
 +
Medzi tie novšie vylepšenia tohto vývojového prostredia patrí takzvaná paleta, kde po jej aktivácii si môže užívateľ vybrať z pred pripravených  najpoužívanejších blokov zdrojových kódov, čo urýchľuje písanie samotnej metódy a v neposlednom rade skracuje debugging, nakoľko užívateľ vlastne iba vloží správne premenné alebo nastaví správne hodnoty. Nájdeme tu široké spektrum pomôcok počnúc skriptom tvorby samotnej aplikácie, cez rôzne efekty, tlačidlá až po vykonávané akcie a prácu s médiami.
 +
     
 +
Obr. č. 11: Práca s Netbeans IDE 6.8
 +
 
 +
Na obrázku je vidieť, ako jednoduchým kliknutím a prenesením (drag-and-drop) sa dá získať na pracovnú plochu zdrojový kód, ktorý, ak by sme ho chceli použiť, by sme si museli vyhľadať jeho syntax a prácne ho zapísať. Konkrétne tento, ako je zrejmé z obrázku je z kategórie efektov a rozsvieti vybraný objekt.
 +
Ďalšou výhodou tohto softvéru je nesporne to, že je to freeware, čo znamená, že je dostupný zdarma pre verejnosť, podobne ako aj jeho súčasti, či updaty (všetky verzie sú free, dokonca aj licencia samotného Netbeansu je typu CDDL - common development and distributions license).
 +
 
 +
==Postup pri vývoji zdrojového kódu pre aplikáciu RozvrhFX==
 +
V tejto časti by som chcel popísať postup pri tvorbe aplikácie RozvrhFX, ktorá by mohla po spustení vrátiť kompletný rozvrh na týždeň pre jeden krúžok našej školy.
 +
Ako som už spomínal v kapitole 3.1, vývoj programu vychádza z dizajnového návrhu užívateľského rozhrania, z čoho vyplýva, že najprv si navrhnem, aký by mala mať samotná aplikácia zovňajšok a až potom pristúpim k riešeniu samotného zdrojového kódu.
 +
Nakoľko sa jedná o graficky pomerne jednoduchú aplikáciu zvolil som „screen“ pozostávajúci z jedného okna s príjemným pozadím. V tomto okne sa na začiatku zvolí jeden krúžok a v tomto okne bude aj realizovaný návrat v podobe tabuľky.
 +
Keďže rozvrh krúžku môže mať dva, alebo napríklad aj desať riadkov v tabuľke je potrebné zvoliť taký formát okna, ktorý sa dokáže prispôsobiť jej veľkosti. Na toto mi dobre poslúži formát scene.
 +
 
 +
Zdrojový kód č. 2: Scene
 +
<source lang="java">
 +
scene = javafx.scene.Scene {
 +
          width: 480.0
 +
          height: 320.0
 +
//počiatočné rozmery okna
 +
 
 +
fill: darkblue
 +
    title: "RozvrhFX"
 +
//názov okna
 +
 
 +
  resizable: true
 +
//zabezpečenie zmeny veľkosti okna pri vygenerovaní tabuľky
 +
 
 +
    visible: true
 +
//zabezpečenie viditeľnosti okna
 +
 
 +
            content: javafx.scene.layout.Panel {
 +
                content: getDesignRootNodes ()
 +
            }]} };
 +
 
 +
public function getDesignRootNodes () : javafx.scene.Node[] {
 +
        [ listView, textbox, label, ]
 +
//generuje dizajnové funkcie a definuje obsah scény
 +
</source>
 +
Príkaz
 +
 
 +
visible: true
 +
som uviedol len pre príklad. Ak by som uviedol v kóde
 +
visible: false
 +
samotné okno by nebolo viditeľné, viditeľný by bol iba jeho obsah, čo by aplikácii dalo iný rozmer.
 +
Pre toto okno je potrebné vyvolať knižnice:
 +
 
 +
Zdrojový kód č. 3: Knižnice pre Scene
 +
<source lang="java">
 +
public-read var listView: javafx.scene.control.ListView;               
 +
public-read var textbox: javafx.scene.control.TextBox;
 +
public-read var label: javafx.scene.control.Label;
 +
public-read var scene: javafx.scene.Scene;
 +
public-read var currentState: org.netbeans.javafx.design.DesignState;
 +
</source>
 +
 
 +
Obr. č. 12: Návrh rozloženia okien RozvrhFX
 +
 
 +
Pre zoznam krúžkov (čiže okno obsah1) použijem metódu listview, ktorá sa jednoducho deklaruje a taktiež je v nej zahrnutý nástroj na posúvanie tzv. rolovanie zoznamu. Táto možnosť poskytuje veľké množstvo nadefinovaných krúžkov.
 +
 
 +
Zdrojový kód č. 4: Listview
 +
<source lang="java">
 +
listView = javafx.scene.control.ListView {
 +
            layoutX: 33.0
 +
            layoutY: 46.0
 +
//umiestnenie
 +
            width: 150.0
 +
            height: 49.0
 +
//rozmery
 +
            layoutInfo: javafx.scene.layout.LayoutInfo {
 +
                width: bind listView.width
 +
                height: bind listView.height
 +
//rollbar
 +
            }
 +
            items: [ "krúžok1", "krúžok2", ..., "posledný krúžok", ]
 +
        };
 +
//obsah jednotlivých polí
 +
</source>
 +
 
 +
Aplikáciu budem nastavovať tak, aby sa vybraný krúžok po kliknutí zobrazil pre kontrolu v okne obsah 2, kde bude včlenený do textu.
 +
 
 +
Zdrojový kód č. 5: Textbox a Label
 +
<source lang="java">
 +
  textbox = javafx.scene.control.TextBox {
 +
            layoutX: 370.0
 +
            layoutY: 40.0
 +
            text: bind "{listView.selectedItem}"
 +
//položí textový box na zvolené miesto a vyplní ho výberom zo zoznamu krúžkov
 +
        };
 +
        label = javafx.scene.control.Label {
 +
            layoutX: 186.0
 +
            layoutY: 40.0
 +
            width: 180.0
 +
            height: 22.0
 +
//položí textové pole na zvolené miesto
 +
 
 +
            layoutInfo: javafx.scene.layout.LayoutInfo {
 +
                width: bind label.width
 +
                height: bind label.height}
 +
            text: "Zvolili ste si rozvrh pre krúžok:"};
 +
//textové pole vyplní neaktívnym textom
 +
</source>
 +
V kapitole 3.2 som uviedol príklad napojenia sa aplikácie na URL, v mojej aplikácii budem ale využívať napojenie na databázu MySQL.
 +
 
 +
Zdrojový kód č. 6: Napojenie a načítanie databázy
 +
<source lang="java">
 +
import com.mysql.jdbc.Connection;
 +
import com.mysql.jdbc.Statement;
 +
import java.sql.DriverManager;
 +
import java.sql.ResultSet;
 +
import java.sql.SQLException;
 +
import java.util.logging.Level;
 +
import java.util.logging.Logger;
 +
 
 +
// načítanie potrebných knižníc
 +
 
 +
Connection Con = null;
 +
Statement stmt = null;
 +
ResultSet rs = null;
 +
 
 +
// deklarácia premenných
 +
 
 +
try {
 +
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
 +
Con = (Connection) DriverManager.getConnection("databáza resp. jej adresa", "host", "heslo");
 +
// pripojenie sa k databáze
 +
 
 +
stmt = (Statement) Con.createStatement();
 +
rs = stmt.executeQuery("select * from rozvrh_view where subclass like 'vybraný_krúžok'");
 +
// pripojenie sa k databáze vybraného krúžku
 +
 
 +
while (rs.next()) {
 +
 
 +
// postupné načítanie  rozvrhu
 +
String [][]udaje; i=0
 +
While(rs.next)
 +
  {for(j=0;j<počet záznamov v riadku;j++)
 +
  udaje[i][j]=getstring[j]
 +
  i++; 
 +
{
 +
// postupné načítanie celého rozvrhu do pola udaje tak, aby boli jednotlivé riadky načítané pod sebou}
 +
Con.close();
 +
} catch (Exception ex) {
 +
Logger.getLogger(world.class.getName()).log(Level.SEVERE, null,
 +
ex);
 +
}
 +
// potrebná výnimka pre prípad zlyhania spojenia so serverom, alebo iných neočakávaných chýb
 +
</source>
 +
 
 +
K takto naplnenému poľu  budem pristupovať podobným cyklom, ako som ho plnil, čiže jednotlivo po stĺpcoch i a po riadkoch j. Obsah poľa sa bude zobrazovať vo výslednej tabuľke.
 +
 
 +
Zdrojový kód č. 7: Výpis jednotlivého údaju
 +
<source lang="java">
 +
textbox = javafx.scene.control.TextBox {
 +
            layoutX: 870.0
 +
            layoutY: 20.0
 +
            width: 180.0
 +
            height: 22.0
 +
            text: bind "{udaje [i][j] }"
 +
</source>
 +
Takto skompilovaná aplikácia stiahne do tabuľky udaje všetky dáta z každého riadku a stĺpca zo zdroja. V konečnom dôsledku,  by to mohlo ale byť  kontraproduktívne, nakoľko v zdrojovej databáze je v každom riadku dvanásť rôznych údajov s rôznou dĺžkou, ktoré študentovi neposlúžia, ako napríklad informácie pre externé štúdium, pre ktoré táto aplikácia nie je zatiaľ konštruovaná.  Tabuľka by sa stala zbytočne veľkou a neprehľadnou.
 +
Pri zobrazovaní tabuľky udaje do grafickej podoby, budem preto vyberať len potrebné informácie z vopred definovaných stĺpcov.
 +
To zabezpečí jednoduchý cyklus, ktorý bude postupne, z definovanej množiny načítavať súradnice  stĺpca i a prikladať ich k súradniciam riadku j.
 +
Zdrojový kód č. 8: Definícia potrebných stĺpcov
 +
<source lang="java">
 +
    int []potrebnestlpce={1,3,4,5,8,10};
 +
    for(int i=0;i < potrebnestlpce.length ; i++)
 +
        potrebnestlpce [i]
 +
</source>
 +
Takto načítané informácie sa potom zobrazia na plátne, po riadkoch nasledovne:
 +
Keďže vieme, koľko informácií (a s akou predpokladanou dĺžkou) v jednom riadku budeme zobrazovať (z nadefinovanej množiny i), na plátno umiestnime presne toľko textových boxov s primeraným umiestnením, a parametrami. Naplníme ich vybranými informáciami. Ak existuje ďalší riadok tzn., že j nie je maximálne, tak cyklus s vytvorením ďalšieho riadku opakujeme.
 +
Týmto získame vypísaný kompletný rozvrh.
 +
 
 +
  Obr. č. 13: Časť zdrojového kódu RozvrhFX v NetBeans 6.8
  
 
=Záver=
 
=Záver=
 +
 +
V prvej časti mojej práce som popísal novú technológiu JavaFX, jej možnosti uplatnenia a porovnal som túto technológiu s inými technológiami. Tento popis a porovnanie som riešil v rámci podobných technológií objektovo orientovaných multiplatformových programovacích jazykov. Výsledok bol, že JavaFX má pred sebou veľkú budúcnosť a už teraz našla široké uplatnenie a to nielen na poli informačných technológií ale aj domácej zábavy či mobilných telefónov.
 +
 +
Ďalším cieľom mojej práce bol aj návrh a riešenie aplikácie pre študentov a učiteľov našej školy. Uvedená aplikácia bude pre užívateľov zobrazovať aktuálny rozvrh prednášok na jeden semester pre denné štúdium a zvolený krúžok.
 +
 +
Budúcnosť tejto aplikácie vidím v tom, že bude začlenená do väčšej - komplexnejšej skupiny programov alebo aplikácií, čím by mohla poskytovať vyšší komfort pre bežných užívateľov. Taktiež je možné túto aplikáciu rozširovať o ďalšie možnosti, napríklad umožniť jej používanie aj pre externých študentov. V niekoľkých kapitolách som stručne opísal problémy, ktoré nastali pri vytváraní samotnej aplikácie a akým spôsobom som jednotlivé problémy riešil.
 +
 +
Po odstránení skriptových chýb „debugingom“ a po kompilácii aplikácie som si po jej spustení overil tieto skutočnosti.  Aplikácia funguje, avšak len za  podmienok, že zariadenie, na ktorom má byť aplikácia spustená musí byť pripojené na internet a taktiež musí mať nainštalované JRE.
 +
   
 +
 +
ZOZNAM POUŽITÝCH SKRATIEK
 +
 +
*API - (angl. application programming interface) rozhranie pre programovanie aplikácií.
 +
*Applet - je (relatívne) jednoduchá aplikácia, ktorá sa spúšťa z iného programu napr. webového prehliadača.
 +
*CDC - (angl. The Connected Device Configuration )  definuje základný set API a orezané zdroje pre virtuálne počítače menších rozmerov je určené pre *high-end PDA, set-top boxy a podobne.
 +
*CDDL – (angl. common development and distributions license) licencia slobodného softvéru
 +
*CLDC - (angl. The Connected Limited Device Configuration) definuje základný set API a orezané zdroje pre virtuálne počítače menších rozmerov ako sú mobilné telefóny a pager-e.
 +
*.gif - (angl. Graphics Interchange Format) je grafický formát určený pre rastrovú grafiku.     
 +
*GPL licencie - GNU (angl. General Public License) GNU GPL či jednoducho GPL je populárna licencia pre slobodný softvér (projekt na vytvorenie kompletného operačného systému, ktorý by bol slobodným softvérom).
 +
*GNU - je slobodný operačný systém v neustálom vývoji. GNU je rekurzívna skratka pre „GNU Nie je Unix“ (angl. „GNU's Not Unix“).
 +
*GUI - (angl. Graphical User Interface) je skratka pre grafické používateľské rozhranie. Okrem GUI existujú aj iné rozhrania, najmä príkazový riadok, ktorý pracuje v textovom režime.
 +
*HTML - (angl. HyperText Markup Language) je značkový jazyk určený na vytváranie webových stránok a iných informácií zobraziteľných vo webovom prehliadači.
 +
*J2ME - (angl. Java 2 Micro Edition)je súčasťou programovacieho jazyka Java spoločnosti Sun Microsystems.
 +
*Java SE - (angl. Standard edition) je objektovo orientovaný programovací jazyk. Jeho syntax vychádza z jazykov C a C++.
 +
*JDK - (angl. Java development kit)je súbor vývojových zdrojov, ktoré umožňujú vytvárať, kompilovať a spúšťať Java programy (skladá sa z viac častí, obsahuje napríklad aj JRE)
 +
*JRE - (angl. Java runtime enviroment) umožňuje koncovému užívateľovi spustenie programov vytvorených v Jave.
 +
*Mashup - je webová aplikácia, ktorá kombinuje údaje z viac ako jedného zdroja do jediného integrovaného nástroja.
 +
*OEM - (angl. Original equipment manufacture) licencia pre spoločnosť, ktorá používa komponenty vyrobené v druhej spoločnosti vo svojom vlastnom výrobku, alebo predá produkt z inej spoločnosti, pod jeho vlastnou značkou.
 +
*PBP - (angl. play-by-post)  hry. Sú to on-line textové RPG hry.
 +
*PDA -(angl. Personal Digital Assistant) prístroj, ktorý zväčša nemá klávesnicu a ovláda sa pomocou dotykového displeja a pera nazývaného stylus.
 +
*RIA - (angl. Rich Internet Applications) sú webové aplikácie, ktoré majú vlastnosti a funkcie tradičných desktopových aplikácií.
 +
*.png- (angl. Portable Network Graphics) je grafický formát určený pre bezstratovú kompresiu rastrovej grafiky.
 +
*RPG- (angl. role-playing-game) je typ spoločenskej hry, pri ktorej sa hráči vžívajú do úloh imaginárnych osôb, alebo postáv, umiestnených do fiktívneho, alebo historického prostredia a snažia sa ako tieto postavy konať.
 +
*.rss - (angl. Rich Site Summary) je formát súboru. „RSS feed“ je technológia na obnovovanie obsahov webových stránok.
 +
*RIA - (angl. Rich Internet Applications) sú webové aplikácie, ktoré majú vlastnosti a funkcie tradičných desktopových aplikácií.
 +
*SVG - (angl. Scalable Vector Graphics) je značkovací jazyk z rodiny značkovacích jazykov XML, ktorý je určený na opis dvojrozmernej, statickej alebo animovanej vektorovej grafiky.
 +
*Trigger - procesný kód, ktorý je automaticky vykonaný v reakcii na určité udalosti na konkrétne tabuľky v databáze.
 +
*WWW - (angl. World Wide Web) je anglický názov pre časť celosvetovej počítačovej siete – internetu.
 +
*XML - (angl. eXtensible Markup Language) pokračovanie jazyka HTML.
 +
*XHTML - (angl. Extensible Hypertext Markup Language) je značkový jazyk podobný HTML, ale s prísnejšou syntaxou.
 +
*YWC - (angl. Yahoo Weather. Com)- internetový server poskytujúci informácie o počasí na celom svete, poskytujúci tiež verziu rss.
 +
 +
 +
=Zoznam použitej literatúry=
 +
#HEROUT, P. 2000. Učebnice jazyka Java. České Budějovice: Kopp 2000. ISBN 80-7232-115-3.
 +
#KNUDSEN,J.- NIEMEYER, P. 2005. Learning Java, Third Edition. O'Reilly 2005. ISBN 0-596-00873-2.
 +
#SUN MICROSYSTEMS 2008.What is JavaFX.[8.9.2008]. Dostupné na internete: <http://www.javafx.com/>.
 +
#SUN MICROSYSTEMS 2008. Imagine the possibilities.[8.9.2008]. Dostupné na internete:    <http://www.sun.com/software/javafx/index.jsp>.

Verzia zo dňa a času 11:22, 3. február 2010

Táto kapitola je o tvorbe JavaFX aplikácií na platforme Windows. V podkapitole 3.1 je popísaný princíp tvorby JavaFX aplikácie, v podkapitole 3.2 je popis vývojových prostredí a poslednej podkapitole 3.3, je návrh vlastnej aplikácie ktorá bude komunikovať so vzdialeným serverom a vizualizovať požadované dáta.

Úlohou mojej aplikácie bude zobrazovať aktuálny rozvrh na Fakulte Mechatroniky na našej škole podľa, po zvolení príslušného školského krúžku. Moju aplikáciu som nazval RozvrhFX.

Postup pri výrobe programu

Skôr, ako začnem popisovať postup pri výrobe samotného programu, je nutné si uvedomiť skutočnosť, že JavaFX bola vyvinutá aby poskytovala jednoduchosť, funkčnosť a atraktivitu hlavne pre koncového užívateľa, to znamená, na výrobe programu by sa mali podieľať nielen vývojári obsahu samotného zdrojového kódu, ale aj grafický dizajnéri, ktorí dodajú programu na atraktivite po vizuálnej stránke.

Obr. č. 7: Výrobný proces JavaFX


Vývojové prostredia

Na vývoj samotného zdrojového kódu sa dá využiť niekoľko vývojových prostredí, ktoré sú v súčasnej dobe schopné pracovať s JavaFX. Rozhodol som sa, že sa zameriam na niektoré z nich, ktoré sú najdostupnejšie pre bežných vývojárov.

JavaFX Pad

Obr. č. 8: Náhľad od JavaFX Pad

  • je prehľadný a jednoduchý, avšak neposkytuje takmer žiadne možnosti zjednodušenia si práce so samotným kódom
  • neumožňuje žiadne rozšírené možnosti nastavenia samotného JavaFX Pad-u

JFX Builder

Obr. č. 9: Náhľad od JFX Builder


  • užívateľovi poskytuje širokú škálu možností na prácu s kódom
  • jeho nevýhodou je komplikovanosť a malá prehľadnosť

Netbeans IDE 6 (a jeho vyššie verzie)

Obr. č. 10: Náhľad od Netbeans IDE 6

  • verzie 6 (6.0.1 a vyššie) Netbeans-u poskytuje užívateľovi jednoduchosť, prehľadnosť, funkčnosť a veľa možností ako pri práci s kódom, tak i v nastaveniach samotného prostredia
  • samozrejmosťou je on-line preview modelovanej triedy
  • je tu aj možnosť simulácie mobilného telefónu pre vývoj aplikácií v JavaMobile
  • pretože tento vývojový softvér poskytuje tvorenie kódov a ich následné ladenie a kompiláciu v množstve skriptov, od relatívne starých až po tie najnovšie, nie je výhodné aby ho tvorcovia ponúkali kompletný pre jeho prípadnú veľkosť, preto je nutné pre rozšírenie jeho možností stiahnuť si plug-in zodpovedajúci typu skriptu

Pre prácu s JavaFX som si vybral práve Netbeans IDE preto, že toto prostredie nie je „mŕtve“, to znamená, že neustále je doplňované update-ami, a to nielen takými, ktoré sa podieľajú na množstve plug-in-ov rozširujúcich možnosti pôsobnosti prostredia v rôznych skriptoch, ale aj takých, ktoré rozširujú možnosti práce s každým jedným skriptom. Medzi tie novšie vylepšenia tohto vývojového prostredia patrí takzvaná paleta, kde po jej aktivácii si môže užívateľ vybrať z pred pripravených najpoužívanejších blokov zdrojových kódov, čo urýchľuje písanie samotnej metódy a v neposlednom rade skracuje debugging, nakoľko užívateľ vlastne iba vloží správne premenné alebo nastaví správne hodnoty. Nájdeme tu široké spektrum pomôcok počnúc skriptom tvorby samotnej aplikácie, cez rôzne efekty, tlačidlá až po vykonávané akcie a prácu s médiami.

Obr. č. 11: Práca s Netbeans IDE 6.8

Na obrázku je vidieť, ako jednoduchým kliknutím a prenesením (drag-and-drop) sa dá získať na pracovnú plochu zdrojový kód, ktorý, ak by sme ho chceli použiť, by sme si museli vyhľadať jeho syntax a prácne ho zapísať. Konkrétne tento, ako je zrejmé z obrázku je z kategórie efektov a rozsvieti vybraný objekt. Ďalšou výhodou tohto softvéru je nesporne to, že je to freeware, čo znamená, že je dostupný zdarma pre verejnosť, podobne ako aj jeho súčasti, či updaty (všetky verzie sú free, dokonca aj licencia samotného Netbeansu je typu CDDL - common development and distributions license).

Postup pri vývoji zdrojového kódu pre aplikáciu RozvrhFX

V tejto časti by som chcel popísať postup pri tvorbe aplikácie RozvrhFX, ktorá by mohla po spustení vrátiť kompletný rozvrh na týždeň pre jeden krúžok našej školy. Ako som už spomínal v kapitole 3.1, vývoj programu vychádza z dizajnového návrhu užívateľského rozhrania, z čoho vyplýva, že najprv si navrhnem, aký by mala mať samotná aplikácia zovňajšok a až potom pristúpim k riešeniu samotného zdrojového kódu. Nakoľko sa jedná o graficky pomerne jednoduchú aplikáciu zvolil som „screen“ pozostávajúci z jedného okna s príjemným pozadím. V tomto okne sa na začiatku zvolí jeden krúžok a v tomto okne bude aj realizovaný návrat v podobe tabuľky. Keďže rozvrh krúžku môže mať dva, alebo napríklad aj desať riadkov v tabuľke je potrebné zvoliť taký formát okna, ktorý sa dokáže prispôsobiť jej veľkosti. Na toto mi dobre poslúži formát scene.

Zdrojový kód č. 2: Scene

scene = javafx.scene.Scene {
          width: 480.0
          height: 320.0
//počiatočné rozmery okna

		fill: darkblue
    		title: "RozvrhFX"
//názov okna

   		resizable: true
//zabezpečenie zmeny veľkosti okna pri vygenerovaní tabuľky

    		visible: true
//zabezpečenie viditeľnosti okna

            content: javafx.scene.layout.Panel {
                content: getDesignRootNodes ()
            }]} };

public function getDesignRootNodes () : javafx.scene.Node[] {
        [ listView, textbox, label, ]
//generuje dizajnové funkcie a definuje obsah scény

Príkaz

visible: true 

som uviedol len pre príklad. Ak by som uviedol v kóde

visible: false

samotné okno by nebolo viditeľné, viditeľný by bol iba jeho obsah, čo by aplikácii dalo iný rozmer. Pre toto okno je potrebné vyvolať knižnice:

Zdrojový kód č. 3: Knižnice pre Scene

 public-read var listView: javafx.scene.control.ListView;                
 public-read var textbox: javafx.scene.control.TextBox; 
 public-read var label: javafx.scene.control.Label;
 public-read var scene: javafx.scene.Scene;
 public-read var currentState: org.netbeans.javafx.design.DesignState;

Obr. č. 12: Návrh rozloženia okien RozvrhFX

Pre zoznam krúžkov (čiže okno obsah1) použijem metódu listview, ktorá sa jednoducho deklaruje a taktiež je v nej zahrnutý nástroj na posúvanie tzv. rolovanie zoznamu. Táto možnosť poskytuje veľké množstvo nadefinovaných krúžkov.

Zdrojový kód č. 4: Listview

listView = javafx.scene.control.ListView {
            layoutX: 33.0
            layoutY: 46.0
//umiestnenie
            width: 150.0
            height: 49.0
//rozmery
            layoutInfo: javafx.scene.layout.LayoutInfo {
                width: bind listView.width
                height: bind listView.height
//rollbar
            }
            items: [ "krúžok1", "krúžok2", ..., "posledný krúžok", ]
        };
//obsah jednotlivých polí

Aplikáciu budem nastavovať tak, aby sa vybraný krúžok po kliknutí zobrazil pre kontrolu v okne obsah 2, kde bude včlenený do textu.

Zdrojový kód č. 5: Textbox a Label

  textbox = javafx.scene.control.TextBox {
            layoutX: 370.0
            layoutY: 40.0
            text: bind "{listView.selectedItem}"
//položí textový box na zvolené miesto a vyplní ho výberom zo zoznamu krúžkov
        };
        label = javafx.scene.control.Label {
            layoutX: 186.0
            layoutY: 40.0
            width: 180.0
            height: 22.0
//položí textové pole na zvolené miesto 

            layoutInfo: javafx.scene.layout.LayoutInfo {
                width: bind label.width
                height: bind label.height}
            text: "Zvolili ste si rozvrh pre krúžok:"};
//textové pole vyplní neaktívnym textom

V kapitole 3.2 som uviedol príklad napojenia sa aplikácie na URL, v mojej aplikácii budem ale využívať napojenie na databázu MySQL.

Zdrojový kód č. 6: Napojenie a načítanie databázy

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

// načítanie potrebných knižníc

Connection Con = null;
Statement stmt = null;
ResultSet rs = null;

// deklarácia premenných

try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Con = (Connection) DriverManager.getConnection("databáza resp. jej adresa", "host", "heslo");
// pripojenie sa k databáze

stmt = (Statement) Con.createStatement();
rs = stmt.executeQuery("select * from rozvrh_view where subclass like 'vybraný_krúžok'");
// pripojenie sa k databáze vybraného krúžku

while (rs.next()) {

// postupné načítanie  rozvrhu
String [][]udaje; i=0
While(rs.next)
  {for(j=0;j<počet záznamov v riadku;j++)
   udaje[i][j]=getstring[j]
   i++;  
{	
// postupné načítanie celého rozvrhu do pola udaje tak, aby boli jednotlivé riadky načítané pod sebou}
Con.close();
} catch (Exception ex) {
Logger.getLogger(world.class.getName()).log(Level.SEVERE, null,
ex);
}
// potrebná výnimka pre prípad zlyhania spojenia so serverom, alebo iných neočakávaných chýb

K takto naplnenému poľu budem pristupovať podobným cyklom, ako som ho plnil, čiže jednotlivo po stĺpcoch i a po riadkoch j. Obsah poľa sa bude zobrazovať vo výslednej tabuľke.

Zdrojový kód č. 7: Výpis jednotlivého údaju

textbox = javafx.scene.control.TextBox {
            layoutX: 870.0
            layoutY: 20.0
            width: 180.0
            height: 22.0
            text: bind "{udaje [i][j] }"

Takto skompilovaná aplikácia stiahne do tabuľky udaje všetky dáta z každého riadku a stĺpca zo zdroja. V konečnom dôsledku, by to mohlo ale byť kontraproduktívne, nakoľko v zdrojovej databáze je v každom riadku dvanásť rôznych údajov s rôznou dĺžkou, ktoré študentovi neposlúžia, ako napríklad informácie pre externé štúdium, pre ktoré táto aplikácia nie je zatiaľ konštruovaná. Tabuľka by sa stala zbytočne veľkou a neprehľadnou. Pri zobrazovaní tabuľky udaje do grafickej podoby, budem preto vyberať len potrebné informácie z vopred definovaných stĺpcov. To zabezpečí jednoduchý cyklus, ktorý bude postupne, z definovanej množiny načítavať súradnice stĺpca i a prikladať ich k súradniciam riadku j. Zdrojový kód č. 8: Definícia potrebných stĺpcov

    int []potrebnestlpce={1,3,4,5,8,10};
    for(int i=0;i < potrebnestlpce.length ; i++)
        potrebnestlpce [i]

Takto načítané informácie sa potom zobrazia na plátne, po riadkoch nasledovne: Keďže vieme, koľko informácií (a s akou predpokladanou dĺžkou) v jednom riadku budeme zobrazovať (z nadefinovanej množiny i), na plátno umiestnime presne toľko textových boxov s primeraným umiestnením, a parametrami. Naplníme ich vybranými informáciami. Ak existuje ďalší riadok tzn., že j nie je maximálne, tak cyklus s vytvorením ďalšieho riadku opakujeme. Týmto získame vypísaný kompletný rozvrh.

 Obr. č. 13: Časť zdrojového kódu RozvrhFX v NetBeans 6.8

Záver

V prvej časti mojej práce som popísal novú technológiu JavaFX, jej možnosti uplatnenia a porovnal som túto technológiu s inými technológiami. Tento popis a porovnanie som riešil v rámci podobných technológií objektovo orientovaných multiplatformových programovacích jazykov. Výsledok bol, že JavaFX má pred sebou veľkú budúcnosť a už teraz našla široké uplatnenie a to nielen na poli informačných technológií ale aj domácej zábavy či mobilných telefónov.

Ďalším cieľom mojej práce bol aj návrh a riešenie aplikácie pre študentov a učiteľov našej školy. Uvedená aplikácia bude pre užívateľov zobrazovať aktuálny rozvrh prednášok na jeden semester pre denné štúdium a zvolený krúžok.

Budúcnosť tejto aplikácie vidím v tom, že bude začlenená do väčšej - komplexnejšej skupiny programov alebo aplikácií, čím by mohla poskytovať vyšší komfort pre bežných užívateľov. Taktiež je možné túto aplikáciu rozširovať o ďalšie možnosti, napríklad umožniť jej používanie aj pre externých študentov. V niekoľkých kapitolách som stručne opísal problémy, ktoré nastali pri vytváraní samotnej aplikácie a akým spôsobom som jednotlivé problémy riešil.

Po odstránení skriptových chýb „debugingom“ a po kompilácii aplikácie som si po jej spustení overil tieto skutočnosti. Aplikácia funguje, avšak len za podmienok, že zariadenie, na ktorom má byť aplikácia spustená musí byť pripojené na internet a taktiež musí mať nainštalované JRE.


ZOZNAM POUŽITÝCH SKRATIEK

  • API - (angl. application programming interface) rozhranie pre programovanie aplikácií.
  • Applet - je (relatívne) jednoduchá aplikácia, ktorá sa spúšťa z iného programu napr. webového prehliadača.
  • CDC - (angl. The Connected Device Configuration ) definuje základný set API a orezané zdroje pre virtuálne počítače menších rozmerov je určené pre *high-end PDA, set-top boxy a podobne.
  • CDDL – (angl. common development and distributions license) licencia slobodného softvéru
  • CLDC - (angl. The Connected Limited Device Configuration) definuje základný set API a orezané zdroje pre virtuálne počítače menších rozmerov ako sú mobilné telefóny a pager-e.
  • .gif - (angl. Graphics Interchange Format) je grafický formát určený pre rastrovú grafiku.
  • GPL licencie - GNU (angl. General Public License) GNU GPL či jednoducho GPL je populárna licencia pre slobodný softvér (projekt na vytvorenie kompletného operačného systému, ktorý by bol slobodným softvérom).
  • GNU - je slobodný operačný systém v neustálom vývoji. GNU je rekurzívna skratka pre „GNU Nie je Unix“ (angl. „GNU's Not Unix“).
  • GUI - (angl. Graphical User Interface) je skratka pre grafické používateľské rozhranie. Okrem GUI existujú aj iné rozhrania, najmä príkazový riadok, ktorý pracuje v textovom režime.
  • HTML - (angl. HyperText Markup Language) je značkový jazyk určený na vytváranie webových stránok a iných informácií zobraziteľných vo webovom prehliadači.
  • J2ME - (angl. Java 2 Micro Edition)je súčasťou programovacieho jazyka Java spoločnosti Sun Microsystems.
  • Java SE - (angl. Standard edition) je objektovo orientovaný programovací jazyk. Jeho syntax vychádza z jazykov C a C++.
  • JDK - (angl. Java development kit)je súbor vývojových zdrojov, ktoré umožňujú vytvárať, kompilovať a spúšťať Java programy (skladá sa z viac častí, obsahuje napríklad aj JRE)
  • JRE - (angl. Java runtime enviroment) umožňuje koncovému užívateľovi spustenie programov vytvorených v Jave.
  • Mashup - je webová aplikácia, ktorá kombinuje údaje z viac ako jedného zdroja do jediného integrovaného nástroja.
  • OEM - (angl. Original equipment manufacture) licencia pre spoločnosť, ktorá používa komponenty vyrobené v druhej spoločnosti vo svojom vlastnom výrobku, alebo predá produkt z inej spoločnosti, pod jeho vlastnou značkou.
  • PBP - (angl. play-by-post) hry. Sú to on-line textové RPG hry.
  • PDA -(angl. Personal Digital Assistant) prístroj, ktorý zväčša nemá klávesnicu a ovláda sa pomocou dotykového displeja a pera nazývaného stylus.
  • RIA - (angl. Rich Internet Applications) sú webové aplikácie, ktoré majú vlastnosti a funkcie tradičných desktopových aplikácií.
  • .png- (angl. Portable Network Graphics) je grafický formát určený pre bezstratovú kompresiu rastrovej grafiky.
  • RPG- (angl. role-playing-game) je typ spoločenskej hry, pri ktorej sa hráči vžívajú do úloh imaginárnych osôb, alebo postáv, umiestnených do fiktívneho, alebo historického prostredia a snažia sa ako tieto postavy konať.
  • .rss - (angl. Rich Site Summary) je formát súboru. „RSS feed“ je technológia na obnovovanie obsahov webových stránok.
  • RIA - (angl. Rich Internet Applications) sú webové aplikácie, ktoré majú vlastnosti a funkcie tradičných desktopových aplikácií.
  • SVG - (angl. Scalable Vector Graphics) je značkovací jazyk z rodiny značkovacích jazykov XML, ktorý je určený na opis dvojrozmernej, statickej alebo animovanej vektorovej grafiky.
  • Trigger - procesný kód, ktorý je automaticky vykonaný v reakcii na určité udalosti na konkrétne tabuľky v databáze.
  • WWW - (angl. World Wide Web) je anglický názov pre časť celosvetovej počítačovej siete – internetu.
  • XML - (angl. eXtensible Markup Language) pokračovanie jazyka HTML.
  • XHTML - (angl. Extensible Hypertext Markup Language) je značkový jazyk podobný HTML, ale s prísnejšou syntaxou.
  • YWC - (angl. Yahoo Weather. Com)- internetový server poskytujúci informácie o počasí na celom svete, poskytujúci tiež verziu rss.


Zoznam použitej literatúry

  1. HEROUT, P. 2000. Učebnice jazyka Java. České Budějovice: Kopp 2000. ISBN 80-7232-115-3.
  2. KNUDSEN,J.- NIEMEYER, P. 2005. Learning Java, Third Edition. O'Reilly 2005. ISBN 0-596-00873-2.
  3. SUN MICROSYSTEMS 2008.What is JavaFX.[8.9.2008]. Dostupné na internete: <http://www.javafx.com/>.
  4. SUN MICROSYSTEMS 2008. Imagine the possibilities.[8.9.2008]. Dostupné na internete: <http://www.sun.com/software/javafx/index.jsp>.