Leveraging Java for Great User Experiences and the Internet of Things

October 05, 2010

The Visage Programming Language: Expressionism meets UI Development

Visage Sur Fond Vert ("face on a green background") is a painting by Henry Matisse, whose mastery of the expressive language of color and drawing won him recognition as a leading figure in modern art. In this post I'd like to help bring to light Visage, the expressive programming language for creating user interfaces.

Two things that hooked me on JavaFX were:

the promise of getting rich-client Java back, and

the ease of expressing user interfaces.

The JavaFX-related announcements at JavaOne 2010 were bittersweet for me. The [extremely] sweet part is that making the JavaFX platform directly accessible to Java will greatly increase adoption of JavaFX and help us realize hook #1 above. The bitter part is that Oracle isn't moving the JavaFX Script language forward, which is on the surface a huge blow to hook #2.

Expressing user interfaces in code has always been an awkward act, to which many tools and techniques have been applied. These run the gamut of expressing the appearance of the UI in XML and its behavior in a programming language, to using GUI builder tools that generate code. Expressing user interfaces is a sweet spot for JavaFX Script due to its declarative syntax for expressing the UI containment hierarchy, including components and their layout. Features baked into JavaFX Script such as binding, triggers and sequences are conducive to expressing user interfaces as well.

In the interest of moving JavaFX Script forward, Stephen Chin recently announced the Visage language and associated open source project. Stephen has had many years of experience leading open source projects and communities, and I am very pleased to see that he is leading this charge. The Open JavaFX Compiler will be used as a starting point for Visage, and the plans are to continue evolving it. Here are some of the goals of the Visage project from Stephen's blog post:

Provide a JavaFX Java API Binding – One of the most innovative parts of the JavaFX platform was the language, and it is what all JavaFX applications are written in today. Our number 1 project goal is to make sure that developers can continue to write declarative code and easily port over their existing applications.

Enhance the Visage Language – The language syntax remains largely unchanged since the 1.0 release of JavaFX. We plan on making numerous improvements that will be beneficial to UI programmers and make common patterns easier to code.

Support for Other Platforms – For the Visage language to thrive, it has to be a general purpose UI programming language. Some other platforms that are in great need of a UI DSL include HTML5, Flex, and Android.

Language Standardization – We would like to see the Visage language be made an official standard with possibly multiple implementations.

Please join me in congratulating/thanking Stephen, as well as getting involved in the Visage open source project.

On a temporal note, Oracle's Richard Bair and Jai Suri will discuss JavaFX 2.0 at the Silicon Valley JavaFX User Group on 5.Oct.2010 at 6p PT. You can attend in-person or online, and it will be a very informative session on the future of JavaFX.