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 Jan 12, 2011
Just before Christmas the OpenJDK builds started to include an updated version of the JSR 292 API, which, whilst not yet final, gives a good indication as to how the JSR is shaping up. For those not familiar with it, JSR 292 adds a new bytecode instruction, invokedynamic, that supports the execution of method invocations in the absence of static type information, as InfoQ previously explored.
John Rose’s blog contains a summary of the major changes. Amongst them:
Some areas of the API are still provisional and could yet change, including the MethodHandles.AsInstanceObject interface, which provides a mechanism for applications to repeatedly convert between method handles and SAM objects, without the risk of creating unbounded delegation chains. In addition the JVM options which currently have to be enabled to work with JSR 292 (XX:+UnlockExperimentalVMOptions, -XX:+EnableInvokeDynamic, and -XX:+EnableMethodHandles) will be turned on by default in the near future,
Disappointingly JDK 7 will not now include syntax support in the Java language for issuing invokedynamic instructions. These may be re-introduced as part of Project Lambda in the JDK 8 timeframe (the actual plan to implement Java lambda uses several features introduced by JSR 292 including Method Handles and dynamic invocation). In the meantime however, Rose has put together a small classfile transformer, named “indify” which can be used to generate invokedynamic instructions, and can also generate “ldc” instructions for MethodHandle and MethodType constants. Rémi Forax has also looked at the problem, developing a small class called DynamicIndy. As Forax explains, the class uses the Java bytecode manipulation library ASM 4.0 (not yet released) to generate a static method that calls invokedynamic. The static method is then converted to a MethodHandle that can be called in Java.
Whilst JSR 292 focuses primarily on the needs of dynamic languages it has become apparent that Java itself is now a candidate user of the API, as noted above. In view of this it has been suggested that the java.dyn package be renamed. Brian Goetz and Mark Reinhold propose to rename it to java.lang.mh (mh stands for MethodHandle), however other suggestions are welcome and can be made in the first instance at Rémi Forax’s blog.
Troubleshoot Java/.NET performance while getting full visibility in production
Tools to unit test your JavaScript
App Server Evolution: REST, Cloud, and DevOps Support in Resin 4
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.
No comments
Watch Thread Reply