At the annual JavaOne conference in May 2007, Sun Microsystems announced a new product family named JavaFX. Its stated purpose includes enabling the development and deployment of content-rich applications on consumer devices such as cell phones, televisions, in-dash car systems, and browsers. Josh Marinacci, a software engineer at Sun, made the following statement, very appropriately, in a Java Posse interview: “JavaFX is sort of a code word for reinventing client Java and fixing the sins of the past.” He was referring to the fact that Java Swing and Java 2D have lots of capability, but are also very complex. Furthermore, technologies have evolved a lot since Swing and Java 2D were created. Today’s client systems (desktops as well as mobile and embedded devices) are equipped with powerful graphical processors—the GPU. JavaFX takes advantage of the new features and performance increases offered by GPUs. By using FXML, JavaFX allows us to simply and elegantly express user interfaces (UIs) with a declarative programming style. It also leverages the full power of Java, because you can instantiate and use the millions of Java classes that exist today. Add features such as binding the UI to properties in a model and change listeners that reduce the need for setter methods, and you have a combination that will help restore Java to the client-side Internet applications.