JavaFX: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(67 versioni intermedie di 39 utenti non mostrate)
Riga 1:
{{Infobox Software
| nome Nome = JavaFX
| logo Logo = [[File:JavaFX_logo.jpg]]
|Screenshot2 =
| screenshot = [[File:Javafx_platform.jpg|200px]]
| didascaliaDidascalia = -
|Sviluppatore = OpenJFX
| sviluppatore = [[Sun Microsystems]]
|UltimaVersione = 23.0.1
| ultima versione = 1.2
|DataUltimaVersione = ottobre [[2024]]
| ultima data di rilascio= {{release date|2009|06|02}}
|UltimaVersioneBeta =
| sistema operativo = [[Java Runtime Environment]]
|DataUltimaVersioneBeta =
| piattaforme = pc, cellulari, DVD BluRay..
|SistemaOperativo = multipiattaforma
| linguaggio = [[JavaFX Script]]
|Genere = [[Framework]]
| genere = [[Rich Internet application]]s
|Licenza = [[GNU_General_Public_License|GPL v2 con Classpath Exception]]
| licenza = [[EULA]]
|SoftwareLibero = sì
| sito web = http://javafx.com/
|Lingua =
|Repository = https://github.com/openjfx/openjfx.github.io
}}
 
'''JavaFX''' è una famiglia di [[applicazione (informatica)|software applicativi]], basati sulla [[Piattaformapiattaforma Java]], per la creazione di [[rich Internet application|rich Internet applications]], [[Applicazione Webweb|applicazioni web]] che hanno tutte le caratteristiche e funzionalità delle comuni applicazioni per [[computer]]. Con JavaFX è possibile realizzare delle applicazioni per computer, [[telefono cellulare|cellulari]], [[dispositivo mobile|dispositivi portatili]] di vario genere, [[televisore|televisori]] e altri tipi di piattaforme.
Con JavaFX è possibile realizzare delle applicazioni per computer, cellulari, dispositivi portatili di vario genere, televisori e altri tipi di piattaforme.
 
JavaFX include, oltre ad una crescente libreria di funzionalità grafiche, un vero e proprio linguaggio di programmazione indipendente da Java, chiamato “JavaFX script”, un [[linguaggio di scripting]] dichiarativo e [[tipizzazione statica|staticamente tipizzato]] fortemente orientato alla programmazione grafica; questo rende la programmazione di [[rich Internet application]], e di applicazioni grafiche in genere, particolarmente agevolata.
 
In aggiunta al pacchetto JavaFX SDK, che include compilatore, utilità per l'esecuzione, e tutta la libreria JavaFX necessaria per lo sviluppo, sono stati rilasciati alcuni strumenti che rendono lo sviluppo in JavaFX molto più agile:
* Un componente aggiuntivo per [[NetBeans]] che integra tutte le fasi di sviluppo JavaFX in un unico [[Integrated development environment|IDE]]
* JavaFX Production Suite: Utilità varie per facilitare il passaggio da programmi di grafica ([[Adobe Photoshop]] e [[Adobe Illustrator]]) e da formati come [[Scalable Vector Graphics|SVG]], a codice JavaFX.
 
A Partire da Java 7, la libreria di JavaFX è distribuita con il [[Java Runtime Environment]].
 
== Rilevanza commerciale ==
JavaFX è uno dei principali attori nel mercato delle [[rich Internet application]], in gara con [[Adobe Flex]] e [[Microsoft Silverlight]], anche se attualmente il suo utilizzo è marginale rispetto ai concorrenti<ref>[http://www.indeed.com/jobtrends?q=javafx%2C+%22silverlight%22%2C+%22adobe+flash%22&l= Andamento delle offerte di lavoro per JavaFX, Flash e Silverlight su indeed.com]</ref>.
 
Sun sostiene che il 90% dei PC abbia [[Piattaforma Java|Java]] installato e che sui cellulari Java sia la piattaforma dominante; per queste ragioni JavaFX sarebbe l'ambiente di sviluppo per [[rich Internet application]] più permeante nel mercato.<ref>[httphttps://blogs.sunoracle.com/jtc/entry/why_javafx_is_relevant Why JavaFX is relevant]</ref>
 
== Descrizione ==
== Caratteristiche peculiari ==
Oltre ad una crescente libreria di funzionalità grafiche, include un vero e proprio [[linguaggio di programmazione]] indipendente da Java, chiamato "JavaFX script", un [[linguaggio di scripting]] dichiarativo e [[tipizzazione statica|staticamente tipizzato]] fortemente orientato alla programmazione grafica; questo rende la programmazione di [[rich Internet application]], e di applicazioni grafiche in genere, particolarmente agevolata.
* Multi piattaforma: Soprattutto grazie all'ultima versione 1.2, JavaFX rende abbastanza trasparente il passaggio da un dispositivo all'altro: con alcune accortezze (e limitazioni) si può realmente eseguire lo stesso codice JavaFX sia come applicazione desktop, sia come [[Applet]] all'interno di un browser, sia come applicazione per cellulare.
 
In aggiunta al pacchetto JavaFX SDK, che include [[compilatore]], utilità per l'esecuzione, e tutta la libreria JavaFX necessaria per lo sviluppo, sono stati distribuiti alcuni strumenti che rendono lo sviluppo in JavaFX molto più agile:
* Un componente aggiuntivo per [[NetBeans]] che integra tutte le fasi di sviluppo JavaFX in un unico [[Ambiente di sviluppo integrato|IDE]]
* JavaFX Production Suite: Utilità varie per facilitare il passaggio da programmi di grafica ([[Adobe Photoshop]] e [[Adobe Illustrator]]) e da formati come [[Scalable Vector Graphics|SVG]], a codice JavaFX.
 
A partire da Java 7, la libreria di JavaFX è distribuita con il [[Java Runtime Environment]].
* Trascina e installa: una funzione innovativa, ereditata dalle ultime versioni di Java, permette di creare un Applet JavaFX da eseguire all'interno di una pagina web, che può essere letteralmente trascinata sulla scrivania di lavoro del PC; così è possibile lanciare l'applicazione web anche al di fuori del browser, direttamente dal Desktop.
* Multi piattaforma: soprattutto grazie all'ultima versione 1.2, JavaFX rende abbastanza trasparente il passaggio da un dispositivo all'altro: con alcune accortezze (e limitazioni) si può realmente eseguire lo stesso codice JavaFX sia come applicazione desktop, sia come [[Applet]] all'interno di un browser, sia come applicazione per cellulare.
* Trascina e installa: una funzione innovativa, ereditata dalle ultime versioni di Java, permette di creare un Applet JavaFX da eseguire all'interno di una [[pagina web]], che può essere letteralmente trascinata sulla scrivania di lavoro del PC; così è possibile lanciare l'applicazione web anche al di fuori del browser, direttamente dal Desktop.
 
=== Il linguaggio ===
JavaFX introduce un linguaggio di scripting dichiarativo ad oggetti, con molti riferimenti alla [[programmazione funzionale]], estremamente pratico per lo sviluppo di applicazioni grafiche, con una sintassi simile a [[JavaScript]] e, per certi aspetti, ad [[ActionScript]], che permette di gestire in modo semplice ed efficace le interazioni tra i controlli grafici, e rende del tutto banale la gestione delle animazioni più comuni (dissolvenze, ingrandimenti, spostamenti ecc.).
JavaFX elimina quindi tutta la ridondanza tipica di Java, e rappresenta un naturale passaggio per i programmatori tradizionali dello storico linguaggio di Sun.
 
JavaFX permette anche di interagire senza alcuno sforzo con classi Java preesistenti. È inoltre possibile fare l'opposto: si può includere una applicazione JavaFX all'interno di un normale programma scritto in Java e [[Swing (Java)|Swing]]<ref>[httphttps://blogs.sunoracle.com/javafxclarkeman/entry/how_to_use_javafx_in JavaFX in Swing] {{webarchive|url=https://web.archive.org/web/20140809101144/https://blogs.oracle.com/clarkeman/entry/how_to_use_javafx_in |data=9 agosto 2014 }}</ref>.
 
Lo spazio grafico di lavoro di JavaFX è un oggetto <code>Stage</code>, radice di ogni applicazione JavaFX, che può intercambiare oggetti <code>Scene</code>, dei contenitori (oggetti che estendono la classe <code>Container</code>) di generici componenti grafici (<code>Node</code>). A tutti gli effetti un oggetto <code>Scene</code> è un albero di nodi, in cui ogni nodo può essere sia un contenitore (che ad esempio specifica la disposizione bidimensionale dei suoi sotto componenti), sia un nodo grafico, cioè un [[Lightweight Component]] con una opportuna rappresentazione ed una serie di attributi che ne descrivono le proprietà (posizione, dimensioni, colorazione ecc.): il concetto ricorda molto quello di DOM di una pagina HTML, in cui possono essere disposti opportuni ''[[Tag HTML|tag]]'' con alcuni attributi.
 
Funzionalità degna di nota è il “binding”"binding" (letteralmente "legare"): la possibilità di associare ad una variabile <code>A</code> (in questo caso un numero) una espressione <code>ESPR</code>
<sourcesyntaxhighlight lang="text">
var A : Number = bind ESRPESPR
</syntaxhighlight>
</source>
ogni qualvolta <code>ESPR</code> cambia valore, anche il valore di A (ovunque sia utilizzato) varia: questo introduce grossi problemi di prestazioni, soprattutto nel caso di abuso di binding, ma semplifica estremamente la comune interazione tra componenti grafiche: per esempio si può facilmente associare il valore di un qualunque controllo, ad esempio una barra di scorrimento, all'attributo di un altro componente (situazione molto comune), come la dimensione di una immagine, o la velocità di una animazione.
 
Line 53 ⟶ 52:
Questo è un esempio di piccolo programma JavaFX che mostra in una finestra 250x80 un messaggio di "Hello World!".
 
<sourcesyntaxhighlight lang="text">
import javafx.stage.Stage;
import javafx.scene.Scene;
Line 76 ⟶ 75:
}
}
</syntaxhighlight>
</source>
 
Il nome di una classe, ad esempio <code>Font</code>, seguito da parentesi graffe, come avviene nella notazione [[JSON]], serve per creare un oggetto: all'interno delle parentesi si possono specificare gli attributi dell'oggetto; per es. <code>size: 16</code>, indica la dimensione dell'etichetta di testo e <code>x: 10</code> indica la posizione orizzontale del testo rispetto alla finestra.
Per capire la corrispondenza, in Java avremmo scritto:
 
<sourcesyntaxhighlight lang="java">
Font mioFont = new Font();
mioFont.setSize(16);
Line 89 ⟶ 88:
mioText.setY(30);
mioText.setContent("Hello World!");
</syntaxhighlight>
</source>
 
Le parentesi quadre denotano invece l'inizio di una "Sequenza" (<code>Sequence</code>), una specie di lista di oggetti alla quale si possono aggiungere/rimuove elementi. Ad esempio:
 
<syntaxhighlight lang="text">
Le parentesi quadre denotano invece l'inizio di una "Sequenza" (<code>Sequence</code>), una specie di lista di oggetti alla quale si possono aggiungere/rimuove elementi. Ad Esempio
 
<source lang="text">
var miaSequenza : Number = [10, 20, 40];
insert 30 into miaSequenza;
remove 40 from miaSequenza;
</syntaxhighlight>
</source>
 
crea una sequenza di 3 numeri, e successivamente rimuoveaggiunge l'elemento "4030" e aggiungerimuove "3040".
 
== Date di rilasciodistribuzione ==
Il linguaggio di scripting di JavaFX era originariamente un progetto di Chris Oliver, chiamato F3, ed è stato annunciato per la prima volta da Sun Microsystem alla conferenza [[JavaOne]] del Maggiomaggio 2007.
Soltanto un anno dopo, nel Maggiomaggio 2008, Sun ha annunciato il piano di distribuire JavaFX per desktop entro la fine del 2008, e per i cellulari a metà del 2009, ed ha reso ufficiale la collaborazione con [[On2 Technologies]] per incorporare in JavaFX la possibilità di riprodurre alcuni formati video (componente fondamentale per concorrere con [[Adobe Flash]], obsoleto dal 31 dicembre 2020<ref>{{Cita web|url=https://theblog.adobe.com/adobe-flash-update/|titolo=Flash & The Future of Interactive Content {{!}} Adobe Blog|sito=web.archive.org|data=2017-12-02|accesso=2021-02-10|dataarchivio=2 dicembre 2017|urlarchivio=https://web.archive.org/web/20171202123704/https://theblog.adobe.com/adobe-flash-update/|urlmorto=sì}}</ref>).
 
A partire dal Luglioluglio 2008 è stato possibile scaricare una [[anteprima]] di JavaFX per [[Microsoft Windows|Windows]] e [[Apple Macintosh|Macintosh]].
 
* La prima versione ufficiale, JavaFX 1.0, è stata rilasciatadistribuita il 4 Dicembredicembre 2008.
* JavaFX 1.1, annunciato nel Febbraiofebbraio 2009, è la prima versione di JavaFX ad includere le componenti per lo sviluppo su piattaforme mobili.
* JavaFX 1.2 è stato reso pubblico nel Giugnogiugno 2009 ed ha introdotto molte novità fondamentali, oltre ad un notevole aumento delle prestazioni:
** Supporto per [[Linux]] e Solaris
** Controlli e Layout grafico integrati
** [[CSS]] come strumento per definire l'aspetto grafico dei controlli
** Grafici e data charts di vario tipo
* JavaFX 1.3 è stato rilasciatodistribuito nell'Aprile 2010 con l'introduzione di diverse novità tra cui:
** Nuovi controlli UI e ampliato supporto a CSS
** Miglioramenti nelle prestazioni, grazie anche all'introduzione di un nuovo motore grafico denominato Prism
Line 121 ⟶ 119:
** Supporto per le applicazioni su TV
** Un più ampio spettro di emulatori per cellulari e TV
Con il nuovo modello di rilascio del progetto JDK, le nuove versioni delle funzionalità sono rilasciate con una cadenza di circa 6 mesi<ref>{{Cita web|url=http://openjdk.java.net/projects/jdk-updates/|titolo=OpenJDK: JDK Updates Project|sito=openjdk.java.net|accesso=2021-02-10}}</ref>. Ogni versione riceve a sua volta aggiornamenti costanti. Ad esempio la versione 13u ha ricevuto 7 aggiornamenti tra il 2019 e il 2021<ref>{{Cita web|url=https://wiki.openjdk.java.net/display/JDKUpdates/JDK+13u|titolo=JDK 13u - JDK 13u - OpenJDK Wiki|sito=wiki.openjdk.java.net|accesso=2021-02-10}}</ref>.
{| class="wikitable"
|+Cronologia versioni<ref>{{Cita web|url=https://gluonhq.com/products/javafx/|titolo=JavaFX Roadmap|sito=|accesso=5 novembre 2024}}</ref>
|'''Versione'''
|'''Data rilascio'''
|'''Ultima versione'''
|'''JDK'''
|'''Release notes'''
|-
|11
|settembre 2018
|11.0.20 (Luglio 2023)
|11
|https://gluonhq.com/products/javafx/openjfx-11-release-notes/
|-
|12
|marzo 2019
|12.0.2 (Luglio2019)
|11
|https://gluonhq.com/products/javafx/openjfx-12-release-notes/
|-
|13
|settembre 2019
|13.0.2 (Gennaio 2020)
|11
|https://gluonhq.com/products/javafx/openjfx-13-release-notes/
|-
|14
|marzo 2020
|14.0.2.1 (Luglio 2020)
|11
|https://gluonhq.com/products/javafx/openjfx-14-release-notes/
|-
|15
|settembre 2020
|15.0.1 (Ottobre 2020)
|11
|https://gluonhq.com/products/javafx/openjfx-15-release-notes/
|-
|16
|marzo 2021
|16 (Marzo 2021)
|11
|https://gluonhq.com/products/javafx/openjfx-16-release-notes/
|-
|17
|settembre 2021
|17.0.13 (Ottobre 2024)
|11
|https://gluonhq.com/products/javafx/openjfx-17-release-notes/
|-
|18
|marzo 2022
|18.0.2 (Luglio 2022)
|11
|https://gluonhq.com/products/javafx/openjfx-18-release-notes/
|-
|19
|settembre 2022
|19.0.2.1 (Gennaio 2023)
|11
|https://gluonhq.com/products/javafx/openjfx-19-release-notes/
|-
|20
|marzo 2023
|20.0.2 (Luglio 2023)
|17
|https://gluonhq.com/products/javafx/openjfx-20-release-notes/
|-
|21
|settembre 2023
|21.0.5 (Ottobre2024)
|17
|https://gluonhq.com/products/javafx/openjfx-21-release-notes/
|-
|22
|marzo 2024
|22.0.2 (Luglio 2024)
|17
|https://gluonhq.com/products/javafx/openjfx-22-release-notes/
|-
|23
|settembre 2024
|23.0.1 (Ottobre 2024)
|21
|https://gluonhq.com/products/javafx/openjfx-23-release-notes/
|-
|24
|marzo 2025
|accesso anticipato
|21
|
|}
<references group="versioni" />
 
== Licenze ==
Attualmente, JavaFX è un progetto open source sotto il nome di ''OpenJFX''<ref>{{Cita web|url=https://openjdk.org/projects/openjfx/|titolo=OpenJDK: OpenJFX Project|sito=openjdk.org|accesso=2024-11-05}}</ref>. A partire dalla versione 11, JavaFX è stato reso disponibile come libreria separata dal JDK, distribuita sotto la [[GNU General Public License|GNU General Public License versione 2 con Classpath Exception]]. Questa licenza consente agli sviluppatori di utilizzare, modificare e distribuire JavaFX liberamente, inclusa la possibilità di includere le librerie di runtime nelle loro applicazioni.
C'è ancora un po' di confusione in merito alle licenze con cui è distribuito JavaFX: sembra che Sun abbia intenzione di rilasciare in futuro il codice di JavaFX<ref>[http://blogs.sun.com/meetjeet/entry/javafx_the_road_ahead Articolo: JavaFX the road ahead]</ref> ma
 
* JavaFX Runtime è tuttora un software proprietario, ed il sorgente non è ancora stato rilasciato,
Con il passaggio a OpenJFX, il [[codice sorgente]] di JavaFX è stato reso disponibile pubblicamente, eliminando la confusione precedente riguardo alla sua licenza. Ora gli sviluppatori possono contribuire attivamente al progetto e beneficiare delle nuove funzionalità e degli aggiornamenti rilasciati dalla comunità.
* Il compilatore JavaFX, il componente aggiuntivo per NetBeans e alcune parti del codice delle classi JavaFX sono state rilasciate sotto la GNU Public License versione 2.
 
== Note ==
<references/>
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [http://www.javafx.com/ javafx.com Sito web ufficiale di JavaFX]
* [{{cita web|http://javawww.sunjavafx.com/|javafx/index.jsp java.sun.com Sito web della Sunufficiale sudi JavaFX]}}
* [{{cita web|http://wwwjava.sun.com/software/javafx/ Sunindex.jsp|java.sun.com -Sito JavaFX]web della Sun su JavaFX}}
* {{it}}cita [web|http://javawww.htmlsun.itcom/articolisoftware/leggi/3192/introduzione-a-javafx/|Sun.com Introduzione a- JavaFX - Java.HTML.it]}}
* {{cita web|http://java.html.it/articoli/leggi/3192/introduzione-a-javafx/|Introduzione a JavaFX - Java.HTML.it}}
* [https://openjfx.dev.java.net/ Sito web di OpenJFX]
* {{cita web |1=https://openjfx.dev.java.net/ |2=Sito web di OpenJFX |accesso=27 dicembre 2008 |urlarchivio=https://web.archive.org/web/20070610234324/https://openjfx.dev.java.net/ |dataarchivio=10 giugno 2007 |urlmorto=sì }}
* [http://java.sun.com/javafx/1/tutorials/core/ Guida al linguaggio JavaFX Script]
* [{{cita web|http://java.sun.com/javafx/1/tutorials/uicore/ |Guida allaal programmazionelinguaggio diJavaFX interfacce con JavaFX]Script}}
* [{{cita web|http://java.sun.com/javafx/1.3/docstutorials/apiui/|Guida Laalla documentazioneprogrammazione ufficialedi delleinterfacce API dicon JavaFX]}}
* {{cita web|http://java.sun.com/javafx/1.3/docs/api/|La documentazione ufficiale delle API di JavaFX}}
* {{cita web |1=http://blogs.sun.com/javafx/entry/javafx_1_3_released_delivers |2=Annuncio ''release'' JavaFX 1.3 |accesso=8 luglio 2010 |urlarchivio=https://web.archive.org/web/20110430161432/http://blogs.sun.com/javafx/entry/javafx_1_3_released_delivers |dataarchivio=30 aprile 2011 |urlmorto=sì }}
 
{{Portale|informatica}}
 
[[Categoria:Applicazioni Java]]
 
[[cs:JavaFX]]
[[de:JavaFX]]
[[en:JavaFX]]
[[es:JavaFX]]
[[fr:JavaFX]]
[[he:JavaFX]]
[[ja:JavaFX]]
[[pl:JavaFX]]
[[pt:JavaFX]]
[[ru:JavaFX]]
[[sk:JavaFX Script]]
[[uk:JavaFX]]
[[zh:JavaFX]]