Fork me on GitHub

Overview of JRebirth Application Framework Core Architecture

JRebirth Application Framework offers a very efficient pattern to build real Professional JavaFX applications.

Overview

How does JRebirth work ?

JRebirth uses a WCS-MVC pattern with 6 main layers:


Application

The App lication is the starting class to extends to build a JavaFX 2.0 application that use JRebirth framework.

Learn more about Application

GlobalFacade

The GlobalFacade is just used to simplify acess from any layer to any other.
Learn more about GlobalFacade

Notifier and Wave

The Notifier layer will transport small notifications called Waves. This notification engine is integrated into the core of JRebirth. Its role is to manage communication throught all JRebirth layers.

Instead of propagating events or notifications we are using Waves. Why Waves ? Because it sounds great.

When I send a wave I feel like a surfer !

A wave can be sent or received by three kinds of components :

  • Command
  • Service
  • Model

There are a lot of convenient method available to create and launch waves into the application.

Learn more about Notifier

CommandFacade and Commands

The Command layer is used to manage complex group of actions (MultiCommand) (synchronously or asynchronously), or atomic reusable action (Command).

They can be processed into one of the 3 kind of thread managed by using annotation.

All interactions between layers must be managed by Commands.

Learn more about Commands

ServiceFacade and Services

The Service layer is used to retrieve Data from outside the application or to communicate with others applications.

It can use Spring HttpRequests, Web Services, Restlets, files or whatever you want. They are managed as Worker tasks in a dedicated thread pool.

Learn more about Services

UiFacade and Models

The Model layer is used to manage the loading of the data displayed into a view, for example by calling a service.

A model manage the View logic.

A Model creates its View automatically by reflection.

Learn more about Models

Controllers

A Controller manage the View's Interactions logic. it's used to intercept all JavaFX components' events.

A controller must implements an custom Adapter to manage events (like MouseAdapter) and link its built-in Handler to the View's nodes (like MouseHandler).

Or it can simply implement custom methods if annotations are used.

Views

The view layer is used to create user interface by using JavaFX visual components.

A View manage the View's Presentation logic.

Each view have a Model used to acessinterrogate to display data.

Each view have a Controller used to manage JavaFX components events.

A view creates its Controller automatically by reflection.

Each JavaFX Node that need to be controlled by a Controller can declare a getter with package visibility to restrict access from other layers.

It can also use an annotation to automatically call a dedicated method into the controller.