Oracle Raccomandazioni
Vedere il consiglio di Oracle:
- Why use FXML
- Implementing JavaFX Best Practices
Oracle non raccomandare FXML per la definizione di layout sopra l'API Java.
alternative dichiarative Tecnologie per JavaFX
Gli altri pezzi dichiarative in JavaFX sono CSS e 3D models
un metodo semi-dichiarativa è il JavaFX Builder API, ma si potrebbe voler evitare che, come the builder api will be deprecated in future JavaFX versions.
Inoltre, se si programma in altre lingue, alcuni di questi incorporano un linguaggio specifico del dominio dichiarativo (DSL) per lo sviluppo di JavaFX, (ad esempio ScalaFX o GroovyFX).
In generale l'uso della sintassi dichiarativa ha vinto soprattutto nel corso di programmazione procedurale per la maggior parte dei compiti di marcatura UI. Questo essere visto dal rilievo di tecnologie quali HTML, CSS, FXML, XAML, MXML, XUL, ecc
basso livello di programmazione
Per le attività di basso livello come lo sviluppo di un controllo personalizzato JavaFX, manipolazione di un immagine di elaborazione di tela JavaFX o dati, l'API Java procedurale è più adatto invece di usare FXML dichiarativa - nessuno dei JavaFX codebase in openjfx utilizza FXML.
scelte personali e consigli
Alla fine, non v'è alcuna risposta giusta qui. La scelta è lasciata allo sviluppatore di scegliere l'approccio che preferiscono.
Non vi è alcun motivo per cui non è possibile combinare i due stili come meglio credi. L'utilizzo di un approccio dichiarativo diretto ti lascia con un'interfaccia utente molto rigida (come una pagina html statica), rispetto a qualcosa che miscela approcci procedurali e dichiarativi (ad esempio html + javascript + ajax) - e lo stesso vale per JavaFX così com'è per lo sviluppo HTML in questo caso.
Per piccoli programmi che mi piace solo la scrittura del codice nell'IDE, compilare ed eseguire senza avere a che fare con il cambio di contesto tra FXML basato su XML e il codice Java. Ma ho scoperto che questo approccio procedurale non si adatta facilmente bene ai progetti più grandi. Avere la vista separata in FXML aiuta a rafforzare la separazione delle preoccupazioni e la modularizzazione. È fin troppo facile mescolare queste considerazioni di vista e logica senza la separazione artificiale richiesta da FXML.
Non mi piace l'XML come linguaggio di layout dell'interfaccia utente. Penso che il formato FXD ormai defunto dal obsoleto ramo JavaFX 1.x fosse di gran lunga superiore. Tuttavia, FXML è la sintassi UI dichiarativa più accessibile e ampiamente utilizzata per JavaFX 2.
Uso molto i CSS con i programmi JavaFX e mi piace usarlo sia con codice dichiarativo FXML che con codice procedurale API Java. A mio parere, è altrettanto importante separare lo stile dal codice quanto separare il layout dal codice.
Quando si utilizza il CSS, è sempre meglio mettere i propri stili in un foglio di stile separato anziché inline gli stili nel codice.
Come sottolineato in un'altra risposta, lo strumento di progettazione visiva JavaFX SceneBuilder attualmente funziona solo con FXML e, a parte tutto ciò, è una ragione sufficiente per molti a utilizzare FXML per definire l'interfaccia utente JavaFX.