JavaFX
JavaFX 1.1-3, 1.3.1
JavaFX 2
Inštalácia JavaFX 2 sdk a prostredia
Programovanie v JaveFX
Umiestenie na webovú stránku
Cvičenia

JavaFX

JavaFX je jazyk určený na tvorbu appletov-aplikácií bežiacich na strane klienta. Svojou všestrannosťou pomáha vývojárom tvoriť bohaté klientské aplikácie.



JavaFX 1.1-3, 1.3.1

Predchodca objektovo-orientovaného jazka JavaFX 2 bol jazyk JavaFX 1. Tento deklaratívny statický jazyk, nazývaný tiež JavaFX Script, bol zostavený na Java bytecode, teda využíval na svoj beh Java virtual machine. Platforma, na ktorej fungovali programy napísané v JavaFX1, bola Java ME. Pre zaujímavosť a porovnanie uvádzam príklad.

package myfirstjavafxapplication;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
 Stage {
  title: "My first JavaFX Application"
  width: 400
  height: 80
  scene: Scene {
   content: Text {
    font : Font {
     size : 24
   }
 x: 10, y: 30
 content: "Hello World"
  }
 }
}

Výstup



JavaFX 2

Oracle vyšiel java vývojárom v ústrety, keď v oktobri roku 2011 uvolnil verziu JavaFX2, v ktorom pôvodný skriptovací jazyk nahradil natívny kód písaný v jazyku Java. Knižnice JavaFX obsahujú nástroje pre tvorbu GUI aplikácií, prácu s médiami, 2D a 3D grafikou a.t.ď. Keďže sa jedná vlastne o jazyk Java, je možné využívať všetky knižnice, ktoré sú pre Javu dostupné. Nutnosťou na strane klienta je mať nainštalovaný Java Runtime Enviroment.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Hello extends Application {

@Override
public void start(Stage primaryStage) {
   StackPane root = new StackPane();
   Scene scene = new Scene(root, 300, 150);
   Text text = new Text(0, 0, "Hello JavaFxWorld");
   text.setFill(Color.RED);
   Font fontfx = Font.font("Font", 30);
   text.setFont(fontfx);
   root.getChildren().add(text);
   primaryStage.setTitle("Hello World!");
   primaryStage.setScene(scene);
   primaryStage.show();
  }

public static void main(String[] args) {
launch(args);
  }
}

Výstup



Inštalácia JavaFX 2 SDK

JavaFX v najnovšej verzii je obsiahnutá v poslednom vydaní Java SE.. Pre inštaláciu JavaFX SDK je potrebné preinštalovať Javu.
JavaFX je dostupná aj v samostatnom balíčku.
Programovať v JaveFX môžme v hociktorom prostredí pridaním knižnice jfxrt.jar, ktorý by mal byť umiestený v ..\Program Files\Oracle\JavaFX 2.1 Runtime\lib (alebo v priečinku Java v Program Files-podľa inštalácie).
Pre zjednodušenie a generovanie kódu odporúčam stiahnuť Netbeans s nástrojmi pre JavuFX.
Pohodlne programovať v JaveFX môžme aj v Eclipse s využitím pluginu e(fx)clipse.
Inštalácia pluginu:
Help->Install->New Software, kde to pložky add priložíme url "http://www.efxclipse.org/p2-repos/releases/latest/". Po inštalácii vytvárame nový JavaFX projekt (File->New->Project->JavaFX Project). Vlastnosti projektu definujeme v subore *.fxbuild(umiestnenie,parametre JNLP súbor).
Možné problémy:
+JAVA_HOME = C:\Program Files\Java\jdk1.7.0_07 (W7: Pocitac/Vlastnosti/Rozsirene systemove nastavenia/Premenne prostredia)
+C:\Program Files\Java\jdk1.7.0_07\lib\ant-javafx.jar skopirovat do C:\Program Files\Java\lib\ant-javafx.jar
Viac podrobností o tvorbe projektou pomocou pluginu e(fx)clipse tu.

Pre nasledujúce cvičenia si preinštalujte Javu a NetBeans.



Programovanie v JaveFX

Scéna vytvorená v JavaFX 2 je založená na grafovej pradigme, ktorá má štruktúru stromu, kde jednotlivé uzly sú grafické komponenty.

Stage - ekvivalent Window, JFrame, JDialog. Po pridaní všetkých uzlov volaný metodow show().
Group - zoznam komponentov podstromu, združuje vlastnosti
Scene - kontajner pre graficé komponenty


Viac o objektoch obsiahnutých v knižniciach JavaFX v dokumentácii.
JavaFX je schopná komunikácie s inými jazkmy - SVG, JavaScript, HTML5



Umiestenie na webovú stránku

Nabežnejším spôsobom, ako umiestniť applet v jazyku JavaFX na webovú stránku je za pomoci xml súboru JNPL, HTML stránky, ktorá využíva JavaScript ako uvádzací prostriedok appletu a samotného JAR súboru.

Stránka s JavaScriptom
Odporúčaný spôsob, ako vložiť aplikáciu JavaFX do webovej stránky alebo spustiť vo vnútri prehliadača je pomocou knižnice Deployment Tollkit, ktoré poskytuje JavaScript API. Okrem vloženia do obsahu webovej stránky, Deployment Tollkit sprostredkuváva aj nasledujúce funkcie:
-zisťuje, či je užívateľské prostredie podporované
-v prípade potreby spušťa inštaláciu Runtime JavaFX
-generuje chybové správy

Dôležité metódy Deployment Toolkit:

dtjava.embed(app, platform, callbacks) - vloží aplikácie do prehliadača
dtjava.launch(app, platform, callbacks) - spustenie aplikácie mimo prehliadača
dtjava.install(platform, callbacks) - inštalácia potrebných komponentov
dtjava.validate(platform) - overí,či užívateľské prostredie spĺňa požiadavky na spustenie appletu

Descriptor
Zodpovedný za spustenie aplikácie. Jeho konštruktor vyzerá nasledujúco.

dtjava.App(url, {attribute_map});


url - url alebo relatívny odkaz na subor JNLP

attribute_map-podmnožina atribútov:

    id - identifikátor žiadosti
    jnlp_content - voliteľné, obsah súboru JNLP v kódovaní Base64
    params - parametre a aplikácii-ak existujú. Tvar: params: {premenná:"hodnota"}
    width a height - rozmery vstavanéj aplikácie (pre aplikáciu prežiacu v prehliadači)
    placeholder - odkaz na uzol DOM, alebo indentifikátor uzla DOM, v ktorom je zabalená
    aplikácia (pre aplikáciu bežiacu v prehliadači)

<head>
   <script type="text/javascript" src="http://java.com/js/dtjava.js"></script>
   <script>
    function deployIt() {
    dtjava.embed(
      { id: "myApp",
      url: "Fish.jnlp",
      width: 300,
      height: 200,
      placeholder: "place"
     },
     { javafx: "2.1+" },
     {}
    );
   }
   dtjava.addOnloadCallback(deployIt);
  </script>
</head>
<body>
  <div id="place"></div>
</body>

V prípade, ak chceme spustiť aplikáciu mimo webovej stránky, môžme použiť nasledujúci kód.

<a href="my.jnlp" onclick="dtjava.launch(new dtjava.App('my.jnlp')); return false;">Launch me!</a>


JNLP súbor
Protokol písaný v XML, ktorý umožnuje spúšťať Java aplikácie.
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="HelloWorld.jnlp">
<information>
<title>HelloWorld</title>
<vendor>Gebora</vendor>
<description>Sample JavaFX 2.0 application.</description>
<offline-allowed/>
</information>
<resources>
<jfx:javafx-runtime version="2.2+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
</resources>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="HelloWorld.jar" size="17836" download="eager" />
</resources>
<applet-desc width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback" name="HelloWorld" >
<param name="requiredFXVersion" value="2.2+"/>
</applet-desc>
<jfx:javafx-desc width="800" height="600" main-class="helloworld.HelloWorld" name="HelloWorld" />
<update check="always"/>
</jnlp>
Viac o syntaxe JNPL v dokumentácii.

Cvičenia

1
Umiestnite Netbeansom vygenerovaný HelloWorld na webstránku so všetkými potrebnými súčasťami.

2.
Vytvorte applet, ktorý bude odoberať RSS zo stránky weather.yahoo.com,pričom obsah okna zobrazujúci informácie o počasí bude refreshovaný každých 60sekúnd. Url odberu RSS počasia pre Košice je http://weather.yahooapis.com/forecastrss?w=820323&u=c
Pri parsovaní dát využite knižnicu org.w3c.dom.

Projekt.