JavaFX Script
JavaFX Script, původně pojmenovaný F3 (Form Follows Function), je staticky typovaný deklarativní skriptovací jazyk, který je postaven na platformě Java. Jazyk byl vytvořen pro programování na platformě JavaFX. Kód JavaFX Scriptu je údajně až 5x úspornější než Javy. Syntaxe se podobá JavaScriptu. Jazyk poskytuje výhodu automatického data bindingu i plné podpory 2D grafiky, swingovských komponent a deklarativních animací.

Od verze JavaFX 2.0, JavaFX Script už není podporován. Oracle to vysvětluje tím, že můžeme použít ostatní skriptovací jazyky podporující JVM, jako Groovy nebo Scala.
Vývoj jazyka se přesunul do projektu Visage.

Dějiny 
JavaFX Script se dříve nazýval F3 pro funkci Form Follows. F3 byl primárně vyvinut Chrisem Oliverem, který se stal zaměstnancem Sunu díky akvizici SeeBeyond Technology Corporation v září 2005.

Jeho název byl změněn na JavaFX Script a stal se open source na JavaOne 2007.

JavaFX 1.0 byla vydána 4. prosince 2008. 10. září 2010 Oracle na JavaOne oznámil, že JavaFX Script bude ukončen, ačkoli JavaFX API bude zpřístupněno pro jiné jazyky pro Java Virtual Machine.

27. září 2010 Stephen Chin oznámil Visage deklarativní jazyk uživatelského rozhraní založený na skriptu JavaFX s vylepšeními.

V poslední době je původní programovací jazyk F3 nyní v procesu vzkříšení a vylepšení.

Vlastnosti 

Staticky typovaný – To znamená, že datový typ každé proměnné, parametru i návratové hodnoty musí být znám již při překladu.

Deklarativní – Jazyk popisuje čeho se má dosáhnout, ne však jak. Jako výsledek je jednodušší syntaxe oproti Javě. Vzhledem k tomuto rysu je JavaFX Script vhodný pro tvorbu komplexních GUI aplikací.

Data binding – Jedná se o obecnou techniku spojující logiku a uživatelské rozhraní. Pokud jsou správně nastaveny vazby, změní-li data hodnotu, tak elementy vázané k těmto datům se automaticky změní, platí i opačná závislost. Například změna stavu jedné GUI komponenty synchronizovaně změní jinou komponentu či datový model bez potřeby jakéhokoliv listeneru, který se používá třeba v Javě.

Vývoj v JavaFX Scriptu ulehčuje podpora většiny používaných IDE (Netbeans, Eclipse). Syntaktické a další chyby jsou programátorovi předávány při překladu (tzv. compile-time errors). Koncovka zdrojových souborů v jazyce JavaFX Script je fx.

JavaFX kombinuje skriptovací jazyk JavaFX Script s množstvím vývojových nástrojů, grafických, audio a jiných knihoven médií včetně runtime prostředí. To vše zajišťuje sjednocený look and feel (vzhled a pocit) napříč různými zařízeními.

Základní syntaxe

Proměnné a primitivní typy 
JavaFX Script poskytuje 4 primitivní typy: String, Boolean, Number a Integer.
Proměnné jakéhokoliv typu je uvedena s klíčovým slovem var. Na rozdíl od Javy zde není třeba uvést datový typ při deklaraci, datový typ si interpret odvodí z jejího použití. Nicméně protože jde o staticky typový jazyk, nelze v průběhu životního cyklu datový typ měnit. Proměnné musí být pojmenovány v souladu s pravidly Javy.

Příklad:
 var mojePromenna = "obsah promenne";
 mojePromenna:String = "obsah promenne";

Operátory 
JavaFX Script poskytuje de facto stejné operátory jako Java, plus některé unikátní navíc jako např. reverse (opačná sekvence), indexof (index sekvence), as (přetypování), atd.

Funkce a operace 
Pro potřeby funkcí definuje JavaFX Script klíčové slovo function. Funkce reprezentuje znovupoužitelný blok kódu. Může obsahovat deklarace proměnných i návratový typ, obsah funkce se zapisuje do složených závorek. Funkce se používají zejména pro účely matematické nebo jako gettery a settery tříd. V kontrastu s Javou je možné deklarovat funkce, ale i proměnné mimo třídy. Procedury v JavaFX Scriptu mají vyhrazeno klíčové slovo operation a mohou obsahovat libovolné množství příkazů. 

Příklad:

 operation vypisAhoj() {
     System.out.println("Ahoj"); 
 }

 function secti(a, b) { 			
     var c = a + b;				            
     return c;   					
 }

Podmínky a cykly 
Jsou obdobné jako v Javě.

Výraz rozsahu 

JavaFX Script obsahuje novinku kterou je výraz, který umožňuje deklarovat sekvenci. Výraz používá dva integery oddělené notací „..“ 

Příklad:

[1..10 step 2] výraz zobrazuje sekvenci lichých čísel od 1 do 9

Výjimky 
Jazyk podporuje vyhazování výjimek prostřednictvím výrazu throw a jejich zachycování bloky try, catch, finally. V podstatě je to stejné jako v Javě s výjimkou pořadí výrazů catch, které se mohou objevit v jakémkoliv pořadí, oproti Javě kde je nutné uvést nejdřív hierarchicky nižší podtřídy.

Třídy a objekty 
Třídy se vytvářejí s použitím klíčového slova class následovaného platným identifikátorem. Tělo třídy je ve složených závorkách, atributy začínají klíčovým slovem atribute. Chování poskytované třídou je poskytováno funkcemi. Přístup k třídám je dán modifikátory public, private, protected. Jazyk obsahuje také konstrukci static pro tvorbu třídních funkcí, atributů, nabízí se tedy možnost definovat tzv. utility třídy (viz např. Math poskytující různé matematické funkce). Instance tříd se na rozdíl od Javy nevytváří pomocí operátoru new, ale pomocí objektových literálů. 

Příklad: vytvoření objektu Adresa 

 def mojeAdresa = Adresa {
     ulice: "1 Main Street";
     mesto: "Santa Clara";
     stat: "CA";
     zip: "95050";
 }

Dědičnost a vícenásobná dědičnost 

Existuje možnost dědění tříd, kdy se zdědí atributy a funkcionalita nadtřídy. K tomu slouží klíčové slovo extends. Navíc JavaFX Script má speciální bloky zajišťující bezpečnou inicializaci a post inicializaci hierarchie (bloky init a postinit). Na rozdíl od Javy se zde vyskytuje vícenásobná dědičnost, kdy třída může dědit od více tříd.

Vytváření Java objektů 
Operátor new má opodstatnění při vytváření Java instancí. 

Příklad:

 var date = new java.util.Date();

Data binding 

Pro potřeby data bindingu obsahuje JavaFX Script výrazy let a bind. Klíčové slovo let označuje závislá data, bind nezávislá. 

Příklad: 

 var text1 = "text1";
 let text2 = bind text1;
 System.out.println(text2);   // vypíše: text1
 text1 = "nový text";
 System.out.println(text2);   // vypíše: nový text

Ukázka jednoduché aplikace 

Alternativa 1: 

 import javafx.ext.swing.*;
 SwingFrame {
     title: "Hello world";
     width: 100;
     height: 50;
     content: Label {
         text: "Hello world";
     }
     visible: true;
 }

Alternativa 2: 

 import javafx.ext.swing.*;
 var myFrame:SwingFrame = new SwingFrame();
 var myLabel:Label = new Label();
 myLabel.text = "Hello World!";
 myFrame.width = 200;
 myFrame.height = 50;
 myFrame.visible = true;
 myFrame.content = myLabel;

Reference

Související články 
 JavaFX

Externí odkazy 
 Oficiální stránky JavaFX 
 Server Javaworld

Java
Skriptovací jazyky
Software firmy Sun Microsystems
JVM programovací jazyky
Deklarativní programovací jazyky