Introduzione alla Java FX GUI

Java è un linguaggio ormai maturo che vanta interfacce grafiche semplici ed intuitive. Accanto alle storiche librerie Swing, trattate in queste pagine, ci sono le più recenti e performanti Java Fx, librerie inizialmente sviluppate da Oracle e ora concesse al mondo Open Source e la sua collettività. Vediamo come usarle cercando di confrontarle con le Swing

 JavaFx nascono nel 2008, dall’esigenza di riscrivere e ristrutturare le ottime Swing per renderle più funzionali a pari merito con le GUI dei linguaggi concorrenti. Il lavoro, seppur a rilento, era stato di ottima fattura in quanto a performance da parte di Sun, poi acquisita da Oracle. Il problema di quel periodo storico era cruciale: JavaScript aveva fatto passi in avanti mostruosi così da rendere HTML e i browser ottimi strumenti per creare applicazioni anche complesse, seppur di natura web, capaci di girare anche in locale. Oracle ha intuito questa sfida, in cui Android, Angular, React ed altri sistemi tendono ad imoprsi tra gli sviluppatori, segnando una rotta. Dal 2018 con Java 11, Oracle si disfa di Java Fx, non includendolo più nella sua JVM (a differenza delle Swing, quasi per retro-compatibiltà). Java Fx viene così concesso alla comunità, che lo sviluppa e porta avanti ancora oggi sotto il nome di OpenJFX, giunto alla versione 14. L’intento è chiaro: il mondo va verso il cloud spinto e, anche se c’è spazio per interfacce grafiche in locale per gestire oggetti remoti, non è più la priorità facendo di HTML5/CSS3/Javascript i veri padroni del mondo lato client. Lo stesso sito di OpenJfx cita:

“OpenJFX is an open source, next generation client application platform for desktop, mobile and embedded systems built on Java”

Piattaforme dektop, mobile e sistemi embedded, territorio sconosciuto al navigatore main-stream ma che vanta una fetta di mercato professionale non trascurabile dove la portabilità è piuttosto importante, soprattutto quando parliamo di piattaforme diffuse basate sulla tecnologia ARM, per citarne una.

Va da se, è evidente anche nelle pagine del nostro sito, come la programmazione web sia quasi preponderante ormai nella realizzazione di servizi software. Il cloud sembra interessante, e sta convincendo sempre più il mercato che spinge in quella direzione, spesso anche in modo esagerato. Non tutto però è vantaggioso da far girare in cloud, vuoi per la qualità dell’infrastruttura di rete, dei costi non sempre chiari e spesso più alti delle licenze, e della oggettiva insensatezza di alcune scelte tecniche. Perché usare un Office online o un prodotto di fotoritocco Adobe solo attraverso la connessione internet in cloud? Se internet è giù non posso stampare una lettera o una foto? Eccessi di chi o cosa spinge il mercato. Di fatto JavaFX, merita di essere approfondita ed usata, anche solo per creare i nostri tool personali.

Se non vi convince la scelta di React, Angular, JQuery, VUE.JS, ma non volete sporcarvi le mani con JavaFx c’è sempre la possibilità di un approccio ibrido che sfrutti le potenzialità di Java con HTML e AJAX che si combinano in un Web Toolkit detto Vaadin.

Creiamo il progetto

Con NetBeans

Creiamo in NetBeans un progetto predisposto per l’uso di JavaFX. Suggerisco sempre di usare il tool Maven con il tipo Simple JavaFX Maven Archetype. Se è la prima volta che usiamo un progetto FX con Maven, probabilmente chiederà di scaricare una manciata di plugin da spuntare. Per questo progetto scegliamo il nome TestFX e GroupId com.iisteramo. Il resto lasciamo invariato o personalizziamo a piacere.

Sul menu di esplorazione del progetto, nella sezione src, troveremo una classe App.java che sarà la nostra classe “main” eseguibile, più una classe SystemInfo in realtà eliminabile.

Con IntelliJ Idea

Intellij è un validissimo IDE, forse più indirizzato al professionista che allo studente ma è pur sempre un’ottima alternativa che vale la pena vedere. Essendo dedicato a Java e Kotlin fondamentalmente, ci sono meno fronzoli, meno esempi del fratello NetBeans. Se lo scarichiamo, ricordate di prelevare la versione gratuita Community Edition.

Il tool Glucon SceneBuilder

Contrariamente a quanto avveniva per le vecchie Java Swing, non c’è un tool interno agli IDE, qualcosa di più o meno blasonato adatto a sviluppare un software complesso. In realtà parte grafica e parte di classi sono apparentemente sconnessi tra loro. Alla base del design c’è il software SceneBuilder, alla cui base ci sarà un file FXML, ovvero lo scenario, che si dovrà importare nell’IDE in cui andremo a toccare il codice vero e proprio.

Possiamo scaricarlo dal sito ufficiale https://gluonhq.com/products/scene-builder/

Mentre scriviamo è fermo alla versione 18 e contempla pacchetti di installazione Window, Mac e Linux.

Scene Builder by GlugonHQ

Importare il file scenario

Ultima modifica 12 Settembre 2022