Cloud Foundry: Design and Architecture
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Charles Humble on Jun 07, 2011
The first public beta of JavaFX 2.0, Oracle's Java orientated rich client platform, is available for download, along with a beta plug-in for NetBeans 7.
The release includes:
The beta also includes a small selection of samples, including Ensemble, which is the main sampler for JavaFX.

The first release of JavaFX 2 will be on Windows only, although architecturally the system has clearly been designed to be cross-platform, and Oracle has made it clear that it intends JavaFX to be multiple-platform:
We absolutely will be targeting a whole host of different platforms, not even just the big three (Mac, Linux, Windows). The value of the Java platform is in the fact that you can write across multiple operating systems and devices.
Whilst both Flex and Silverlight use XML as their declarative language (MXML and XAML respectively), JavaFX originally included a new DSL, JavaFX Script, for the task. JavaFX Script, whilst interesting, was seen by many developers as a barrier to entry, and Oracle announced last year that whilst it would continue to invest in the JavaFX platform, it was discontinuing work on it. An XML-based declarative language (currently called FXML), is in the works, but has not yet made it into the beta.
The lack of JavaFX Script does make the API feel more verbose, but the change isn't as dramatic as it might have been. For one thing, the javafx.builders package offers 257 builders, covering all the APIs. In addition Lambda support in Java 8 will make a significant difference. Richard Bair, the architect for client software at Oracle, previously told InfoQ
JavaFX was designed to be amenable to the "lambda" language feature planned for Java SE 8. The current plans and proposals for lambdas favor "single abstract method" interfaces. We have designed the new Java APIs in JavaFX to follow this pattern so that when lambdas become available, they will be natural to use with the JavaFX 2.0 APIs.
As well as Java support, the APIs are designed to be friendly to alternative JVM languages, such as JRuby (example), Scala and Groovy, and DSLs like the JavaFX Script based Visage, as an alternative.
JavaFX 2 represents a major update to the client-side Java stack, offering an alternative to the entire client layer of the JavaSE platform. Osvaldo Pinali Doederlein has gone as far as to argue that
JavaSE as we know it is deprecated. I wonder how many people realize this; if you don't, check again Cindy Castillo's great overview of the JavaFX Architecture. It's not just a new library of components, animation and rich media. It's something that completely replaces AWT [Abstract Window Toolkit], Java2D, Swing, Java Sound, Applets, ImageIO, Accessibility - in short, the entire Client layer of the JavaSE platform. (No, a JavaFX "applet" doesn't use the java.applet API anymore.) Oracle got rid of the massive legacy of the AWT and everything that was built on top of the AWT; that's the major reason why the new browser plugin is much better.
Amy Fowler, a Senior Staff Engineer at Sun Microsystems, and one of the founding members of the Java Swing GUI Toolkit, suggests that such a change is necessary for Java to be a viable client platform:
User-interface technology is on a collision course with graphics. For Java to be a viable client platform in the long haul, it must be inherently capable of the sort of visual delicacies that you see in iPhone/iPad applications. As I've stated many times, it's possible to achieve some of this using Java2D tricks in Swing (e.g. Kirill's very nice Trident library), but it requires sophisticated gymnastics; it’s not a natural fit. The crux of the problem is that Swing is rooted in the antiquated AWT, rather than being integrated into the 2D coordinate system. Fixing this would require some massively incompatible changes and once you march down that path, well, you start asking yourself what other incompatible improvements should be made ….pretty soon the remodel becomes reconstruction and you realize that a new foundation is really needed.
Whilst the RIA space, which Adobe has dominated with Flash for so long, looks to be shifting towards HTML 5 and related technologies, the extensive use of native applications on the current generation of smartphones and tables demonstrates that there is still a role for non-web-based applications. Oracle, of course, makes heavy use of Java and Swing in its own desktop applications, and the JavaFX 2.0 investment will ultimately give it a Swing 2.0 platform to develop with.
Troubleshoot Java/.NET performance while getting full visibility in production
RDBMS to NoSQL: Managing the Transition
Tools to unit test your JavaScript
Introducing SQLFire: a memory-optimized, high performance SQL database
VMware vFabric SQLFire - Test drive the data management system with memory speed, horizontal scalability and a familiar SQL interface
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Andrew Watson talks about the work of the OMG, where CORBA is alive and well (hint: in your car), UML and UML Profiles vs. custom Modeling languages, DDS and other middleware, and much more.
Sohil Shah discusses creating iPhone and Android enterprise mobile applications based on cloud services using the open source platform OpenMobster.
Paul Sanford presents the transformations supported by data throughout its life cycle, and how that can be better done with Splunk, an engine for monitoring and analyzing machine-generated data.
A common “best practice” for unit tests is to only write a one assertion in each test. I intend to question this advice by showing that multiple assertions per test are both necessary and beneficial.
John Rauser presents the architectural and technological evolution of Amazon retail websites starting with 1994 and ending with adopting Amazon Web Services.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
1 comment
Watch Thread Reply