**JavaFX** on Java-kielen ohjelmistoalusta, jolla voi luoda ja toimittaa työpöytäsovelluksia sekä rikkaita verkkosovelluksia, jotka toimivat monenlaisilla laitteilla. JavaFX tukee työpöytätietokoneita ja verkkoselaimia Microsoft Windowsissa, Linuxissa ja MacOS:ssa sekä mobiililaitteita, joissa on iOS ja Android 12 tai sitä uudempi Android. JavaFX on rakennettu Java-kielen päälle ja se on tarkoitettu korvaamaan Swing GUI-kirjastona Java SE:lle. JavaFX on osa OpenJDK:ta OpenJFX-projektin alla ja sitä voi käyttää ilmaiseksi avoimen lähdekoodin lisenssillä.

JavaFX:n ensimmäinen versio julkaistiin vuonna 2008.
JavaFX on alun perin Sun Microsystemin kehittämä ja se tarjoaa Java-koodin kehittämistä varten graafisen käyttöliittymän (GUI) kehyskokoelman sekä käyttöliittymäohjelmointirajapinnan (API). JavaFX:n avulla voidaan luoda monipuolisia verkkosovelluksia sekä työpöytäsovelluksia ja se on rakennettu Java SE:n päälle, mikä mahdollistaa yhteensopivuuden useiden eri alustojen, kuten Linuxin, Windowsin ja macOSin kanssa. 

Windowsin käyttöliittymistä se tukee ainakin tukee Windows Vista-, Windows 7-, Windows 8-, Windows 10 -käyttöjärjestelmiä. JavaFX 1.2:sta alkaen Oracle on julkaissut beta-versioita OpenSolaris-käyttöjärjestelmälle. Mobiililaitteissa JavaFX Mobile 1.x pystyy toimimaan useissa mobiilikäyttöjärjestelmissä, kuten Symbian OS:ssä ja Windows Mobile -käyttöjärjestelmässä. Lisäksi JavaFX tukee muita mobiilikäyttöliittymiä, kuten iOS sekä Android -käyttöliittymiä. 

JavaFX on kokoelma Java-paketteja, joita hyödyntämällä voidaan lisätä Java-sovelluksiin graafisia käyttöliittymiä ja se sisältää useita valmiita komponentteja, kuten esimerkiksi tekstikenttiä, taulukoita ja painikkeita käyttöliittymän rakentamisen helpottamiseksi. Näiden lisäksi se sisältää esimerkiksi erilaisia visuaalisia efektejä sekä animaatioita. JavaFX:n ominaisuudet mahdollistavat esimerkiksi sen, että sitä voidaan käyttää esimerkiksi multimediasovellusten luomiseen ja se sopii erinomaisesti suorituskykyisten sovelluksien rakentamiseen, jotka vaativat paljon visuaalisia tehosteita. Ennen JavaFX:ää pääasiallinen tapa luoda graafisia käyttöliittymiä oli tehdä se Swing API:n kautta. 

Deklaratiiviseen käyttöliittymään perustuvan JavaFX:n oli tarkoitus korvata perinteiseen imperatiiviseen käyttöliittymän luomiseen perustuva Swing. Tästä on luovuttu. Swing kuuluu Java SE -standardiin ja toimitetaan sen mukana, toisin kuin JavaFX.

Ominaisuudet
------------

JavaFX 1.1 perustuu "yhteisen profiilin", joka on tarkoitettu toimimaan kaikissa JavaFX:n tukemissa laitteissa. Tämä lähestymistapa mahdollistaa kehittäjille yhteisen ohjelmointimallin rakentaessa sovellusta ja jakamaan paljon koodia, graafisia elementtejä sekä sisältöä työpöytä- ja mobiiliversioiden välillä. JavaFX 1.1 -alustassa on myös työpöytä- tai mobiilikohtaisia ohjelmointirajapintoja, jotta voidaan vastata tarpeeseen hienosäätää sovelluksia tiettyä laitekokoa varten. Esimerkiksi JavaFX-työpöytäprofiili sisältää Swingin ja edistyneitä visuaalisia efektejä.

Käyttäjälle "Raahaa ja asenna" -ominaisuus mahdollistaa JavaFX-widgetin, joka on verkkosivustossa oleva, työpöydälle raahattava sovellus joka ei menetä tilaansa tai kontekstiaan, vaikka selain suljetaan. Sovellus voidaan myös käynnistää uudelleen napsauttamalla automaattisesti luotua pikakuvaketta käyttäjän työpöydällä. Tämä toiminto on mahdollistettu Java-aplett mekanismin avulla 

JavaFX 1.x sisälsi sarjan lisäosia Adobe Photoshopille ja Illustratorille, jotka mahdollistavat edistyneiden grafiikoiden integroimisen suoraan JavaFX-sovelluksiin. Lisäosat tuottavat JavaFX Script -koodia, joka säilyttää grafiikan kerrokset ja rakenteen. Kehittäjät voivat siten lisätä animaatiota tai efektejä tuotuihin staattisiin grafiikoihin. JavaFX x.1 sisältää myös SVG-grafiikan muunnostyökalun (tunnetaan myös nimellä Media Factory), joka mahdollistaa grafiikan tuonnin ja toimintojen esikatselun muunnoksen jälkeen JavaFX-muodossa.

Ennen JavaFX:n 2.0 versiota kehittäjät käyttivät sovellusten rakentaimseen staattisesti kirjoitettua, deklaratiivista kieltä jota kutsuttiin JavaFX Scriptiksi. Koska JavaFX Script käännettiin Java-bytecodeksi, ohjelmoijat saattoivat käyttää sen sijaan myös Java-koodia. JavaFX-sovellukset saattoivat toimia missä tahansa pöytätietokoneessa, joka pystyi käyttämään Java SE:tä.

JavaFX 2.0 ja sitä uudemmat versiot on implementoitu "alkuperäisenä" Java-kirjastona, ja JavaFX:ää käyttävät sovellukset kirjoitetaan "alkuperäisellä" Java-koodilla. Oracle on hylännyt JavaFX Scriptin, mutta kehitys jatkuu Visage-projektissa. JavaFX 2.x ei tue Solaris-käyttöjärjestelmää tai matkapuhelimia; kuitenkin Oracle aikoo integroida JavaFX:n Java SE Embedded 8:aan. JavaFX ARM-prosessoreille on kehittäjien esikatseluvaiheessa.

Sun Microsystems on lisensoinut mukautetun kirjaintyypin nimeltä Amble JavaFX-laitteita varten. Fonttiperhe suunnitelun toteutti mobiilkäyttöliittymän suunnittelun erikoisosaaja Punchcut, ja se on saatavilla osana JavaFX SDK 1.3 julkaisua.

Historia
--------

### **Vanhemmat julkaisut**

JavaFX Script, JavaFX-komponentin skriptikieli, sai alkunsa Chris Oliverin projektina nimeltä F3.

Sun Microsystems julkaisi JavaFX:n ensimmäisen kerran JavaOne Worldwide Java Developer -konferenssissa toukokuussa 2007.

Toukokuussa 2008 Sun Microsystems ilmoitti aikovansa toimittaa JavaFX:n selaimelle ja työpöydälle vuoden 2008 loppupuolella ja JavaFX:n mobiililaitteille vuoden 2009 puolivälillä. Sun ilmoitti myös monivuotisesta sopimuksesta On2 Technologiesin kanssa tuodakseen kattavat videomahdollisuudet JavaFX-tuoteperheeseen käyttäen yrityksen TrueMotion Videokoodekkia. Heinäkuun 2008 lopusta alkaen kehittäjät saattoivat ladata JavaFX SDK:n esikatselun Windowsille ja Macintoshille sekä JavaFX-liitännäisen NetBeans 6.1:lle.

JavaFX:n merkittävät julkaisut JavaFX 1.1:n jälkeen saavat julkaisunimensä San Franciscon katujen tai kaupunginosien mukaan. Päivitysjulkaisuilla ei yleensä ole julkaisunimeä.

Sun julkaisi JavaFX 1.0.2:sen 4. joulukuuta 2008.

JavaFX mobiilikehitys oli vihdoin saatavilla JavaFX 1.1 -julkaisussa (Franca), joka julkistettiin virallisesti 12. helmikuuta 2009.

JavaFX 1.2 (Marina) julkaistiin JavaOnessa 2. kesäkuuta 2009. Tämä julkaisu esitteli seuraavat päivitykset:

* Beta-tuki Linuxille ja Solarikselle
* Sisäänrakennetut ohjaimet ja asettelut
* "Skinnable" CSS -ohjaimet
* Sisäänrakennetut kaaviopikakuvakkeet
* JavaFX I/O -hallinta, joka peittää erot työpöytä- ja mobiililaitteiden välillä
* Suorituskyvyn parannuksia
* Windows Mobile Runtime Sun Java Wireless Clientillä

JavaFX 1.3 (Soma) julkaistiin 22. huhtikuuta 2010. Tämä julkaisu esitteli seuraavat päivitykset:

* Suorituskyvyn parannukset
* Lisätuki lisäalustoille
* Parannettu tuki käyttöliittymäohjaimille

JavaFX 1.3.1 julkaistiin 21. elokuuta 2010. Tämä julkaisu esitteli:

* JavaFX-sovellusten nopean käynnistyksen
* Mukautetun etenemispalkin sovelluksen käynnistyksessä

JavaFX 2.0 (Presidio) julkaistiin 10. lokakuuta 2011. Tämä julkaisu toi mukanaan:

* Uuden joukon Java-API:ta, jotka avasivat JavaFX-ominaisuudet kaikille Java-kehittäjille ilman tarvetta oppia uutta skriptaus kieltä. Java FX Script tuki poistettiin pysyvästi.
* Tuki korkean suorituskyvyn laiskalle sitomiselle, sitomisilmaisuille, sidotuille lausekkeille ja osittaiselle sitomiselle.
* Tuki JavaFX Mobile -sovelluksille poistettiin.
* Oracle ilmoitti aikovansa avata lähdekoodin JavaFX:lle.
* JavaFX-ympäristö muutettiin alustakohtaiseksi, hyödyntäen järjestelmän kykyjä, kuten videokoodekkia; sen sijaan, että toteutettaisiin vain yksi yhteensopiva ympäristö, kuten JavaFX 1.x:ssä.

Lukuisia parannuksia tehtiin JavaFX-kirjastoihin monisäikeistämisen osalta. Tehtävä-API:tä on päivitetty tukemaan paljon tiiviimpiä monisäikeistämismahdollisuuksia (mm. JavaTaskBase-luokka ei ole enää tarpeellinen, koska kaikki API:t ovat Javassa, eikä takaisinkutsurajapinnan ja Javan toteutusluokan vaatimusta ole enää). Lisäksi näkymäpuu on suunniteltu mahdollistamaan näkymien rakentaminen taustasäikeissä ja niiden liittäminen "eläviin" näkymiin säikeenkestävällä tavalla.

Oracle julkaisi JavaFX 2.0 Betan 26. toukokuuta 2011. Beetaversio oli saatavana vain 32- ja 64-bittisille Microsoft Windows XP-, Windows Vista- ja Windows 7-versioille. Mac OS X:lle Early Access -versio oli saatavilla JavaFX-kumppaniohjelman jäsenille, kun taas Linux-tuki oli suunniteltu tulevaisuuden JavaFX-versiolle. JavaFX 2.0 julkaistiin vain Windows-tuella. Mac OS X -tuki lisättiin JavaFX 2.1:een. Linux-tuki lisättiin JavaFX 2.2:een.

JavaFX 2.0 käyttää uutta deklaratiivista XML-kieltä nimeltään FXML.

Huhtikuun 27. päivänä 2012 Oracle julkaisi JavaFX:n version 2.1, joka sisältää seuraavat pääominaisuudet:

* Ensimmäinen virallinen versio OS X:lle (vain työpöydälle)
* H.264/MPEG-4 AVC ja Advanced Audio Coding -tuki
* CoolType-teksti
* Käyttöliittymän parannukset, mukaan lukien yhdistelmäruutuohjaimet, kaaviot (pinoava kaavio) ja valikkopalkit
* Webview-komponentti mahdollistaa nyt JavaScriptin kutsumisen Javan metodeihin

Elokuun 14. päivänä 2012 Oracle julkaisi JavaFX:n version 2.2, joka sisältää seuraavat pääominaisuudet:

* Linux-tuki (plugin ja webstart mukaan lukien)
* Uudet ohjaimet: väriasettelu, sivutus
* HTTP Live Streaming -tuki
* Kosketustapahtumat ja eleet
* Kuvankäsittely-API
* "Native Packaging "

JavaFX 2.2 lisää uuden pakkausvaihtoehdon nimeltä Native Packaging, joka mahdollistaa sovelluksen pakkaamisen "paikalliseksi nipuksi". Tämä antaa käyttäjille tavan asentaa ja ajaa sovellus ilman ulkoisia riippuvuuksia järjestelmän JRE:stä tai FX SDK:sta.

Oracle Java SE 7 päivityksen 6 ja JavaFX 2.2:n jälkeen JavaFX on pakattu Oracle Java SE -alustan asennukseen.

Lähteet
-------

1. ↑  ChatGPT
2. ↑  JavaFX Tutorial - javatpoint *www.javatpoint.com*. Viitattu 18.6.2022. (englanniksi)
3. ↑  1 JavaFX Overview (Release 8) *docs.oracle.com*. Viitattu 20.3.2023.
4. ↑  What Is JavaFX? | JavaFX 2 Tutorials and Documentation *docs.oracle.com*. Viitattu 20.3.2023.
5. 1 2 3  Lowe, Doug: *JavaFX for Dummies*, s. 10. Hoboken, New Jersey : John Wiley & Sons, Inc. 2015.
6. ↑  1 JavaFX Overview (Release 8) *docs.oracle.com*. Viitattu 20.3.2023.
7. ↑
8. ↑  1 JavaFX Overview (Release 8) *docs.oracle.com*. Viitattu 4.4.2023.
9. ↑  Google Code Archive - Long-term storage for Google Code Project Hosting. *code.google.com*. Viitattu 4.4.2023.
10. ↑  JavaFX roadmap *web.archive.org*.  25.10.2012.  Arkistoitu 25.10.2012. Viitattu 4.4.2023.
11. ↑  F3 ( Chris Oliver's Weblog) *web.archive.org*.  6.1.2012.  Arkistoitu 6.1.2012. Viitattu 4.4.2023.
12. 1 2 3 4 5  Repositories and Releases - Repositories and Releases - OpenJDK Wiki *wiki.openjdk.org*. Viitattu 4.4.2023.
13. ↑  Joshua Marinacci's Blog: Top 5 Most Important Features in JavaFX 1.2 *web.archive.org*.  13.6.2009.  Arkistoitu 13.6.2009. Viitattu 4.4.2023.
14. ↑  JavaFX 1.3 Released, Improves User Experiences : JavaFX Blog *web.archive.org*.  30.4.2011.  Arkistoitu 30.4.2011. Viitattu 4.4.2023.
15. ↑  JDK 7u4 and JavaFX 2.1 released, now also including Mac OS X *Across the Universe*.  27.4.2012. Viitattu 4.4.2023. (englanniksi)
16. ↑  JavaFX 2.1 Release Notes | JavaFX 2 Tutorials and Documentation *docs.oracle.com*. Viitattu 4.4.2023.
17. ↑  What's new in JavaFX 2.2 (The JavaFX Blog) *web.archive.org*.  21.8.2016.  Arkistoitu 21.8.2016. Viitattu 4.4.2023.
18. ↑  JavaFX 2.2 Release Notes | JavaFX 2 Tutorials and Documentation *docs.oracle.com*. Viitattu 4.4.2023.