JavaFX Preview SDK

JavaFX Scripting

Zur Entwicklung einer JavaFX-Anwendung wird JavaFX Script, eine speziell für JavaFX entwickelte Scriptsprache, benötigt. Dies gilt zumindest heute. Angeblich gibt es bereits Pläne im Hause Suns für ein grafisches Tool (JavaFX Designer Authoring Tool), das von Grafk-Designern völlig ohne JavaFX Script Kenntnisse bedient werden kann und im Frühjahr des kommenden Jahres fertig gestellt werden soll.

Um die Entwicklung von JavaFX Anwendungen zu erleichtern hat Sun Microsystems dem SDK ein NetBeans JavaFX Script  Plug-in spendiert, das u.a. die Auswahl verschiedenster JavaFX Script Elemente und eine Vorschau des GUI erlaubt (Abb. 2).

Abb. 2: NetBeans JavaFX Script Plug-in

Natürlich lassen sich die Anwendungen auch aus der IDE heraus debuggen, builden und deployen. Letzteres sowohl als Standalone-Anwendung als auch innerhalb eines Browsers.

Für den klassischen Java-Programmierer ist JavaFX Script zunächst ein wenig gewöhnungsbedürftig. Dies liegt in erster Linie an dem deklarativen Ansatz der Scriptsprache, einem Ansatz, der viel Code sparen kann. Ein UI wird implementiert, in dem man die sich darauf befindenden Elemente als Baumstruktur deklarativ angibt. Listing 1 zeigt ein „Hello World“ in JavaFX und Listing 2 zum Vergleich in Swing (beide ohne Import-Statements).

Listing 1: Hello World - JavaFX 
var titleString = "JavaFX - Example"; 
Frame {
    title: bind titleString
    stage: Stage {
       content: Text {
            content: "Hello World!"
        }
    }
    visible: true
}
Listing 2: Hello World - Swing
public class HelloWorldSwing {  
 public static void main(String[] args) { 
       String titleString = "Swing";  
       JFrame frame = new JFrame(titleString);
       final JLabel label = new JLabel("Hello World!";);
       frame.getContentPane().add(label);   
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
       frame.setVisible(true);
   }
}

Wie aber erreicht man Dynamik? Zum einen lassen sich Attribute eines JavaFX-Objektes mithilfe eines bind-Operators an Eingabefelder und Attribute anderer JavaFX-Elemente binden. In Listing 1 wird dies an dem Attribute title des Frame Objektes deutlich. Zum anderen können objektübergreifende Animationen durch zeit- bzw. ereignisgesteuerte Sequenzen – scenes – beschrieben werden, wodurch sich relativ einfach eindrucksvolle visuelle Effekte realisieren lassen.

Natürlich kennt auch die JavaFX-Script-Syntax Klassen und Objekte, sodass größere Projekte sauber und modular aufgebaut werden können. Hinzu kommt die Möglichkeit, innerhalb der JavaFX Scripte „normale“ Java-Klassen zu importieren und deren Instanzen – also die Objekte – transparent zu nutzen. Dieses Vorgehen erlaubt eine klare Trennung gemäß des MVC Patterns. Die Views Elemente können in JavaFX Script implementiert werden, die Modelle und Businesslogik in Java.

Da JavaFX-Klassen keine Konstruktoren und JavaFX Klassen-Attribute keine setter-Methoden kennen, wurde das Konzept der Update Trigger eingeführt. Änderungen an der UI – wie zum Beispiel das Auswählen eines Elements aus einer Auswahlliste – können so an unterliegende Modelle übermittelt und dort verarbeitet werden.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.