JavaFX Script

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
JavaFX Script
Paradigma: Objektově orientovaný, Deklarativní
Autor: Sun Microsystems
Typová kontrola: silná
OS: multiplatformní
Licence: GNU General Public License
Web: javafx.com

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.[1] Vývoj jazyka se přesunul do projektu Visage.[2]

Vlastnosti[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Proměnné a primitivní typy[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Jsou obdobné jako v Javě.

Výraz rozsahu[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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ů[editovat | editovat zdroj]

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

Příklad:

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

Data binding[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

  1. JavaFX Frequently Asked Questions [online]. oracle, [cit. 2013-08-23]. Kapitola 8. Does JavaFX 2 support JavaFX Script?. Dostupné online. (anglicky) 
  2. visage – Declarative language for expressing user interfaces [online]. [cit. 2013-08-23]. Dostupné online. (anglicky) 

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]