I am willing to use JavaFX on a large size (non web) program that I'm in charge for both GUI and back end. I am new in UI, so for separating back end from UI I am willing to use MVC programming method both for the sake of cleanness and easiness. now the question: how do I need to separate controller form the model for the best design. My GUI is based on javaFX FXML and I want to know that is it better to use XML for the controller or java itself?
I suggest to break down your GUI into small self-contained fx:root based controls (high cohesion, low coupling). Use the Mediator Pattern to combine these controls (the parent control manages/ configures its child controls and listens to the events of its child controls. The child controls don't know about each other).
You can create whole hierarchies of such controls. Breaking them down into small controls will make maintenance easier (e.g. if the layout or the user interaction has to change).