My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information

Visage is a domain specific language (DSL) designed for the express purpose of writing user interfaces.

A Visage application models the user interface you are designing both in appearance and function. For example, the following Visage code will create a simple application that prints the text "Hello World":

Stage {
  title: "Hello World"
  Scene {
    Text {
      "Hello World"

The above code demonstrates the proposed syntax for how Visage will work with the JavaFX platform.

The Visage language has the following benefits:

  • Declarative Object Construction - Code looks like the UI it is representing.
  • Data Binding - Variables can be bound to UI state, allowing automatic updates and behavior to be triggered.
  • Behavior Encapsulation - Visage provides closures to make it easy to implement event handlers or other behavior-driven logic.
  • Null Safety - Application logic will proceed even if intermediate variables are undefined or null.
  • Cascading Properties (proposed) - Visage code can define behavior that cascades down the object tree without the need for a separate language.

If you would like to help out with this project, please join the Google Group. We are looking for compiler developers, and also folks interested in porting Visage to other platforms.

Project Sponsors

Apress generously contributed the rights to the Visage Language Guide, which is originally from the Pro JavaFX Platform book title.


Powered by Google Project Hosting