Platforma JavaFX pre moderné webové aplikácie
![]() |
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta mechatroniky Katedra informatiky |
![]() |
Autor: | Bc. Martin Vaško |
Pedagogický vedúci: | Ing. Juraj Ďuďák |
Študijný odbor: | Mechatronika |
Akademický rok | 2009/2010 |
1. | Čo je JavaFX |
2. | JavaFX 1.2 |
3. | Tvorba JavaFX aplikácie
|
Abstrakt
Popis technológie JavaFX, jej možnosti uplatnenia v praxi, porovnanie s inými podobnými technológiami. JavaFX ako objektovo orientovaný multiplatformný programovací jazyk, využívaný pri tvorbe aplikácií ovládania mobilných telefónov až po vytváranie web-aplikácií. Vlastnosti technológie JavaFX vo verzii 1.2, jej výhody aj nevýhody. Spolupráca s databázami a webovými službami. Vytvorenie webovej aplikácie prístupu na rozvrh FM využívajúcej MySQL databázu. |
Abstract
|
Úvod
Spoločnosť SUN, aby sa udržala na trhu, bola nútená oživiť aplikáciu Appletov (relatívne jednoduchá aplikácia, ktorá sa spúšťa z WWW prehliadača - browsera). Za touto revitalizáciou stojí práve JavaFX, ktorej web verzia potrebuje pre svoj beh hostiteľský kontajner a Applety. Dva z najpálčivejších problémov appletov sú rýchlosť štartu a nutnosť nainštalovaného JRE. Problém, respektíve nutnosť nainštalovaného kontajneru riešil aj Flash, a ako sa zdá, stačilo iba okresať veľkosť inštalačného balíčku pod 3MB. S veľkosťou samotného JRE súvisí aj to, aký rýchly bude jeho štart, preto SUN chystá takzvanú Consumer JRE, ktorá bude „orezanejšia“ a ďalšiu funkčnosť bude možné pridať formou modulov. Ako je vidieť, sú tu technologické prostriedky pre odstránenie najhorúcejších problémov Appletov. Otázkou zostáva, či sa podarí odstrániť problém v rovine sociálnej, čo znamená, že Applety nie sú tak dôveryhodnou technológiou ako napríklad už spomínaný Flash. Technologický pokrok je prvým malým krôčikom k tomu, aby užívatelia sa začali na Applety pozerať trochu inak.
Obsah
Čo je JavaFX
V tejto kapitole popíšem programovací jazyk JavaFX a jeho súčasti a zátoveň uviesť príklad aplikácie prepojenej na internet.
JavaFX Script je skriptovací jazyk vyvinutý za účelom zjednodušenia vytvárania grafických používateľských rozhraní (GUI) pre vývojárov, programátorov a výrobcov internetových stránok, ktorý patrí do technológie JavaFX. Je to deklaratívny, staticky typovaný, objektovo orientovaný programovací jazyk. Jeho hlavnými vlastnosťami sú: - deklaratívna syntax - inkrementálne vyhodnocovanie a triggre, podporujúce štruktúru model-view zoznamy - schopnosť využívať triedy jazyka Java - znovupoužiteľnosť, enkapsulácia a prenositeľnosť (write once - run anywhere) zdedená od jazyka Java - zrozumiteľnosť a ľahká čitateľnosť Skriptovací jazyk bol vyvinutý tak, aby jeho syntax odrážala rozloženie komponentov v GUI a umožnil tak ľahšie vytváranie bohatých grafických aplikácií. Taktiež sa pomocou neho dá vytvoriť omnoho efektívnejší kód čo sa rozsahu týka. Na konferencii JavaOne v máji 2008, Sun Microsystems oznámila novú produktovú radu s názvom JavaFX, zložený z JavaFX Script a JavaFX Mobile. Skriptovací jazyk JavaFX má za cieľ uľahčiť používanie JavaSwing knižníc a vytvárať bohaté užívateľské rozhranie, ktoré bude prebiehať kdekoľvek, kde Java Standard Edition je podporovaný.
JavaFX Mobile
JavaFX Mobile je kompletný softvérový systém pre mobilné zariadenia. Je dostupný prostredníctvom licencií OEM pre telefónne spoločnosti, headset výrobcov a iné spoločnosti, ktoré chcú zjednodušiť a urýchliť vývoj výkonného štandardizovaného softvérového systému. Nemôžete vždy predpovedať, aké zariadenia alebo platformy budú konzumenti používať a s JavaFX to ani nie je potrebné. Na rozdiel od iných platforiem zariadení, ktoré sú vytvorené okolo patentovaných technológií, JavaFX Mobile používa technológie, ktoré sú v súlade so štandardmi v odvetví, čo znamená, že aplikácie vytvorené prostredníctvom JavaFX budú fungovať na širokej škále zariadení s podporou Java a poskytovatelia obsahu ich môžu rýchlo pridať do svojich zariadení. Najnovšie štandardy, a to vrátane štandardov pre "Mobile Services Architucture", sú pevne integrované s JavaFX Mobile, takže vývojári majú bohaté možnosti. JavaFX Mobile zjednodušuje prostredie a znižuje závislosť na technológiách vykonávajúcich kompletný middleware a aplikáciách hromadiacimi sa v Jave.
JavaFX Script
Tento objektovo orientovaný programovací jazyk JavaFX Script umožňuje vývojárom Java rýchlo vytvoriť plnohodnotné internetové aplikácie pre najväčší rozsah klientskych zariadení, a to vrátane mobilných zariadení, koncových prijímačov, pracovných staníc a dokonca aj diskov Blue-ray. Tvorcovia obsahu môžu jednoduchým spôsobom vyvinúť obsah pre akékoľvek spotrebiteľské zariadenie s podporou Java. JavaFX umožňuje tvorcom obsahu vytvárať bohatý mediálny obsah bez toho, aby sa museli spoliehať na vývojárov, a to vrátane drag-and-drop mobilného obsahu na pracovnú plochu a opačne, čiže niečo, čo nie je možné pri žiadnom inom RIA. JavaFX Script ponúka tesnú integráciu s inými komponentmi Java (aplikácie a infraštruktúra), ktoré fungujú na serveroch a klientskych platformách, čo ponúka vývojárom a používateľom plnohodnotné aplikácie. JavaFX Script využíva bezpečnostný model Java, takže zákazníci majú bezpečný prístup k aktívam (napr. obrázkom, hudobným súborom, wordovským dokumentom) na svojich pracovných plochách. Spotrebitelia zvyčajne hľadajú na webe vzrušujúci a dynamický obsah a očakávajú viac interaktívnych skúseností s webovými službami. JavaFX môže pomôcť dodať vizuálne pôsobivé aplikácie, ako napríklad mapy a "mashups", videá, zvuky a obrázky. Nový programovací jazyk sa dá detailne integrovať s inými komponentmi Java, ktoré už fungujú na serveroch a klientskych zariadeniach. A vzhľadom na to, že je vytvorený s pomocou otvorených štandardov, technológie JavaFX ponúkajú spoločnostiam vytvárajúcim plnohodnotné internetové aplikácie kratší čas dodania na trh a zdokonalenú konzistenciu pre aplikácie a zariadenia. V septembri 2008 spoločnosť Google predstavila vlastný internetový prehliadač Chrome, ktorý sa ihneď prezentoval aj tým, že plne podporuje aj JavaFX, podobne ako ostatné prehliadače ako sú Internet Explorer, Mozilla Firefox, Opera, či Chrome. Ako služba webových klientov by sa dala JavaFX porovnať s Ruby, Python, JSP a Linden Scripting Language .Čo tieto rôznorodé jazyky majú spoločné to zámer, aby sa programovanie zložitých aplikácií jednoduchšie tým, že poskytuje jednoduchý spôsob, ako pripojiť existujúce komponenty. V prípade JavaFX, sú to Swing komponenty užívateľského rozhrania, ktoré sa prvýkrát objavili v štandardnej knižnici Javy. Verzia 1.2 je doplnená tiež o trochu jednoduchšie nástroje Java AWT.
PočasieFX v JavaFX script
Tento program som tvoril ako námet svojej bakalárskej práce. Je to program, ktorý som navrhol a zrealizoval programovacom jazyku JavaFX script. Jedná sa o aplikáciu, ktorá bude obsluhe PC alebo užívateľovi domáceho centra zábavy zobrazovať aktuálne on-line počasie, ako aj predpoveď na jeden deň vopred, v piatich slovenských mestách, v slovenčine, a to len jediným kliknutím, alebo jedným stlačením diaľkového ovládača. Po spustení naskočí takzvaný loading screen, ktorý informuje užívateľa o tom, že program pracuje na pripojení na internet a stiahnutí potrebných údajov z rss stránky yahoo.apis.com. Po načítaní dát a spracovaní do grafikcej podoby sa zobrazí päť okien, ktoré predstavujú prierez počasia na celom Slovensku. V každom okne sa okrem názvu mesta a aktuálnej teploty, ktorá dominuje v okne, zobrazuje aj predpokladaná najvyššia denná a najnižšia nočná teplota, rýchlosť a smer vetra. Nemenej dôležitá informácia je zobrazovaná na pozadí obrázkom. Ak je noc, tak je vidieť mesiac, ak jasno, tak slniečko, ak prší, tak z oblakov sa naanimujú kvapky, a pri snežení snehové vločky. Ďaľšou možnosťou je prepnutie okna do módu zajtra, kde je znázornená len povaha počasia a najvyššia denná a najnižšia nočná teplota.
2.JavaFX 1.2
V tejto časti mojej práce porovnám novú verziu JavaFX s jej predchodcami a priblížim jej praktické využitie na reálnom zariadení.
JavaFX1.2 poskytne neustále pripojeným spotrebiteľom to, čo hľadajú - používateľský zážitok bez ohľadu na to, na ktorom zariadení sú pripojení a či sedia za stolom, trávia čas pri cestovaní so svojimi PDA, alebo relaxujú doma. Aplikácie napísané pomocou JavaFX Script využívajú vytvorené rysy technológie Java, ako napríklad prenositeľnosť, zabezpečenie aplikácií, všadeprítomnú distribúciu a podnikovú pripojiteľnosť. Jedinečnosť JavaFX Script pochádza z jeho schopnosti vložiť overený výkon platformy Java a z masového rozšírenia Java na trhu, čo je dané jeho jedinečnou všade prítomnosťou a používaním v rámci 9 z 10 PC a mobilných zariadení. Okrem toho, JavaFX Script môže podporovať používateľské rozhrania akejkoľvek veľkosti alebo komplexnosti, je staticky napísaný a môže využiť programovacie modely Java (ako napríklad štruktúrovanie kódu, opätovné použitie a vlastnosti uzatvorenia), čo mu umožňuje vytvoriť a spravovať veľké programy v JavaFX Script. JavaFX Script bude zaujímavý pre autorov obsahu, pretože štruktúra písaného kódu presne zodpovedá aktuálnemu rozvrhnutiu GUI a je možné ho jednoduchšie pochopiť a udržiavať. Jazyk podporuje bežné typy premenných ako string, integer a čísla s plávajúcou desatinnou čiarkou a logické (Boolean) hodnoty. Rozsiahla podpora je poskytovaná pre manipuláciu s poliami a zoznamami so silným a jednoduchým syntaxom. JavaFX objekty sú vytvárané s deklaratívnym syntaxom. To je užitočné najmä v triedach, ktoré poskytujú zjednodušený most JavaSwing tried používateľského rozhrania.
Výhody JavaFX Script::
- Zvyšuje produktivitu vývojárov (aj prostredníctvom GPL licencie a prostredníctvom tzv. JavaFX community)
- Ponúka intuitívny jazykový (kódový) design
- Potrebuje menej kódu
- Poskytuje rýchlejšie vývojové cykly
- Nulové straty funkčnosti na zariadeniach
JavaFX1.2 poskytuje jednotný vývoj a využitie modelu pre vytváranie funkčne bohatých klientskych aplikácií, ktoré integrujú bohatý množstvo médií ako audio a video, grafiku, RTF a webové služby. JavaFX1.2 umožňuje vývojárom kreatívne programovať vo vizuálnom kontexte a tým im pomáha, aby svoje myšlienky uvádzali do života rýchlejšie a lepšie. Java vývojári môžu zachovať existujúce investície do opakovaných Java knižníc v aplikáciách JavaFX1.2. Plus, JavaFX umožňuje prístup k schopnostiam na prístrojoch na úrovni mobilných zariadení. Z hľadiska vývoja, môžu Java vývojári naďalej využívať globálny Java ekosystém s jeho rozsiahle vedomostnú základňu a obrovský trh. JavaFX1.2 prináša s presvedčivou "značkou" nový obsahu a bohatšie skúsenosti. S Java SE 6 Update 10 (a vyššie), môžete Drag-to-Install JavaFX aplikácie jednoduchým pretiahnutím z prehliadača - potom môžete oživiť aplikácie priamo zo svojho počítača! Drag-to-Install zjednodušuje distribúciu obsahu koncovým užívateľom a poskytuje im prístup, kedy a kde chcú.
Najviditeľnejším nedostatkom v zozname funkcií jazyka JavaFX, ktoré poskytuje, je spôsob, ako manipulovať s dátami XML syntax. Ako najvýhodnejšia možnosť pre manipuláciu s týmito predmetmi sa javí používať Swingové knižnice. Samozrejme si môžete vytvoriť vlastnú Java triedu so Swingovým skriptom a môžete ju použiť v skripte JavaFX.
2.1 Hardvér
V tejto kapitole rozoberiem hardvérové možnosti JavaFX v praxi. Spoločnosť SUN má v podstate len dve možnosti, ako sa presadiť na trhu s freeware softvérom inštalovaných do výrobkov priamo pri ich výrobe. Prvou, tou menej pravdepodobnou, je po dohode s výrobcom svoje produkty inštalovať do už vyvinutých výrobkov, ktoré sú na trhu nejaký čas, alebo inštalovať ich do zariadení, ktoré sú práve vo vývoji, a tým v podstate participovať na evolúcii ich softvérovej, ale i hardvérovej štruktúre (keďže by bol hardvér čiastočne prispôsobovaný, vyspelejšiemu programovému vybaveniu).
Vzhľadom na to, že JavaFX je na trhu pomerne krátky čas (cca 6 mesiacov), momentálny stav je taký, že do zariadení domácej zábavy a mobilných telefónov t. j. oblasť v ktorej majú staršie produkty spoločnosti SUN významné postavenie, sa neinštalujú.
V mojom prípade sa teda bude jednať o zariadenie, ktoré je podľa domovskej stránky spoločnosti SUN vo vývoji a je predbežne popisované ako ucelená jednotka domácej zábavy. Má nahradiť doteraz používané zariadenia nielen na príjem digitálneho a analógového signálu, jeho záznam na pevný disk (avizujú jeho kapacitu až 2 terrabyty), ale malo by plniť aj funkciu DVD či CD prehrávača a domáceho kina (5.1 kanálov). Po pripojení na internet by malo plniť úlohu domáceho informačného centra, kde by mali byť k dispozícii údaje ako sú napríklad správy, cestovné poriadky, televízne programy atď.. Ďalšou z funkcií by mala byť už skôr spomínaná možnosť hrať RPG systémom PBP. Samozrejmosťou je, že toto zariadenie sa bude dať ovládať jediným multifunkčným diaľkovým ovládačom.
2.1.1 VIA Digital Media Platform
VIA / Ubuntu / JavaFX hardvérové dekódovanie HD - Digital Media Platform
Zariadenie Digital Media Platform, je určené pre aplikácie, ktoré využívajú nákupné centrá, letiská, hotely atď.užívateľské rozhranie je vytvorené v JavaFX 1.2, hardware a operačný systém je schopný dekódovať a zobraziť HD obsah vo formátoch ako AVI, WMV a M4V, v 720p alebo 1080p kvalite. Systém tiež musí byť schopný podporovať veľkú dotykovú obrazovku, to vyžaduje, aby obsahoval aj driver pre Xorg a kalibračný program. Toto zariadenie je dobrý príklad pre všestrannosť JavaFX nakoľko hardvérová platforma je tvorená komponentami VIA, ktorá vytvorila DRM jadro, ovládače pre dekodéry HD a video, mplayer a špeciálne video z pluginov. Operačný systém je okresanou verziou Linux Ubuntu, ktorá obsahuje len potrebné súčasti. Hlavný rozdiel pri prehrávaní HD videa medzi klasickými zariadeniami (normou video výstup na 1.5Ghz procesor) a touto zostavou, ako tvrdia prvý užívatelia je obrovský. Pri vstupe do budovy bol zvuk ďaleko dporedu predhrávaný pred obrazom. Pri použití Digital Media Platform s dodanou VIA Mplayer video výstupom, je film úplne hladký a v súlade so zvukom.
2.2 JavaFX 1.2 a webové služby V tejto časti popíšem možnosti použitia JavaFX pre vytvorenie webového klienta a taktiež uvediem a rozoberiem príklad napojenia sa na databázu umiestnenú na internete a na čítanie dokumentu v XML formáte. JavaFX so svojou všestrannosťou a pritom jednoduchosťou je využívaná vývojármi okrem tvorby statických aplikácií na tvorbu programov, ktoré sú určené na určitý druh komunikácie, či už s inými aplikáciami, alebo prostredníctvom siete so servermi a databázami. Aj keď samotný zdrojový kód a knižnice Java neobsahujú priamo nástroje na prístup do rôznych typov serverov, ktoré pracujú v rôznych protokoloch, JavaFX dokáže využiť to, že jej kód môže byť kombinovaný s predchodcami JavyFX alebo tiež s kódmi C, C++, MySQL, Solaris, alebo napríklad s kódom Glasfish. Stačí si pritom iba načítať knižnice, ktoré sú potrebné pre prácu s tým ktorým kódom. Takýmto spôsobom potom môže aplikácia jednoducho načítavať obsah rss stránky alebo pracovať s dokumentmi typu XML. HTML či XHTML. Tu je jednoduchý príklad pripojenia sa na URL a načítanie XML dokumentu:
Zdrojový kód č. 1: Príklad pripojenia sa na URL a načítanie XML dokumentu
import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; // tu sú načítané potrebné knižnice
public Priklad (String Retazec, boolean Hodnota) throws IOException { InputStream is = getInputStreamFromURL(URLadresa(Retazec, hodnota));
// napojenie na URL adresu
try { InputSource inputSource = new InputSource(is); XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new YWSParser()); reader.parse(inputSource);
// použitie parseru
} catch (SAXException saxe) { throw new IOException(saxe.getMessage()); } finally { if (is != null) { is.close(); } }
// použitie výnimky pre prípad chyby (napríklad výpadku serveru)
V ďalších častiach sa len nadefinujú, ktoré údaje potrebujeme načítať a kam.
3.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.
3.1 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.
3.2 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.
3.2.1 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
3.2.2 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ť
3.2.3 Netbeans IDE 6 (a jeho vyššie verzie)
- 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.
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).
3.3 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;
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.
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.