Project Visage to Continue Work on JavaFX Script Without Oracle
Some of the most significant announcements Oracle made at its first JavaOne in charge were around their future plans for JavaFX. The proposed roadmap for JavaFX 2.0, with a ship date in 2011, includes a number of welcome additions including multi-threading improvements, a WebView control with HTML5 support, and a major overhaul of the media libraries. Most significant of all, Oracle intends that all JavaFX 2.0 APIs, including JavaFX Scripts' binding support, will be exposed via Java classes and accessible from other languages that target the JVM. This would obviously include Java itself as well as alternatives such as JRuby, Jython, Clojure, Groovy, Scala and so on. Given that a common criticism of JavaFX was the need for developers to learn another new language in the JavaFX Script this move seems broadly positive.
There are, however, two significant casualties. The first is JavaFX mobile. The roadmap makes no reference to it and Oracle didn't mention it at JavaOne, concentrating instead on JavaME. We did approach Oracle for clarification, which they declined to offer, but it is clear that all the current focus for JavaFX is on the desktop. The second casualty, as we previously reported, is JavaFX Script itself, which will not be developed as part of JavaFX 2.0. Whilst this may be a sensible pragmatic decision for Oracle, it does also remove a key differentiator between JavaFX and its competitors.
It may be possible, however, for the Java community to take up the slack, either by developing the key features of JavaFX Script as an internal DSL using an alternative JVM language (a proof of concept for this already exists in Ruby), or by taking on development of JavaFX Script without Oracle's support. The JavaFX Script compiler is already open source and Thomas Kurian, Executive Vice President of Product Development at Oracle, announced a strategy to open source the JavaFX controls going forward.
Since JavaOne, Stephen Chin has announced the Visage project, an alternative DSL for writing GUIs that is largely based on JavaFX Script. Chin told us
One of the unique features of the JavaFX platform was the declarative language for building UIs. Rather than mixing an imperative language like Java with an XML mark-up language for UI definition, they rolled it all together with a single declarative language specifically designed for building UIs. Unfortunately, Oracle made a business decision to move away from JavaFX Script and focus on Java APIs, so we have picked up the torch.
The goal of Visage is to carry on the legacy of JavaFX Script, while extending the language and range of applications it can be applied to. Our primary goal will be to port Visage to the new JavaFX 2.0 APIs (when they become available). At the same time we are working on adding some language features that will help with UI development. Finally, we plan to broaden the range of UI toolkits that Visage can work with by adding support for Apache Pivot, Flex, Android, and HTML
The JavaFX Script compiler is the foundation of the Visage project. Chin told us:
We do not need any additional assistance to complete our project goals, but would encourage Oracle to continue taking steps to open source the rest of the JavaFX platform. Thomas Kurian's announcement at JavaOne that JavaFX controls were being open sourced was a huge step in the right direction. I have also started a community effort to petition for fully open sourcing the JavaFX platform on my blog.
Visage is already getting some attention from the community. We have had a lot of interest on the project, some very active discussions on the mailing list, and input from some JavaFX luminaries like [JavaFX Script creator] Christopher Oliver. I have also talked to former members of the JavaFX compiler project, including Brian Goetz, and they have been very supportive, offering to help out with some knowledge transfer and give input on new language features.
Chin also noted that
Doing compiler development is not an easy job to start with, and for a lot of us will become a second job. If members of the Java community want to see this project be successful, we can use as much help as possible. In addition to the core compiler work, we also have plug-in development, documentation, and other work that we can use assistance on.
Also, for companies who want to take advantage of this technology, please support the folks working on this effort. We are looking for partnerships with companies that will help us ensure the technology is maintained and supported as well or better than it was under Oracle's guidance.
Sun did the Java community a great service by open sourcing the compiler. It will be interesting to see how successful the language can be outside of Oracle's control.