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 Werner Schuster on Jul 18, 2009
MacRuby's tight integration with the Cocoa platform is one of its big assets, comparable to JRuby's or IronRuby's integration with their underlying platforms. MacRuby seems to be the best way for Mac developers to use Ruby for client applications. Recent work on the experimental branch has been improving the Ahead of Time (AOT) compilation:
Introducing macrubyc, a command line tool interface to the AOT compiler.
macrubyc allows you to compile a given Ruby file into a Mach-O object file and/or produce a final executable.
While it's definitely possible to write and deploy Ruby applications written with MacRuby today, these apps still need to be shipped with the MacRuby runtime. The aim for the AOT implementation is to solve this:
Produced Mach-O objects are true object files. They can be used to form a MacRuby executable or you can also use them into your Objective-C project that uses the MacRuby Objective-C API.
Produced executables embed all the compiled Ruby code as well as MacRuby, statically. It can be distributed as is and does not depend on anything MacRuby or LLVM at runtime. The Ruby source code is compiled into native machine code (same process as we do at runtime with the JIT compiler), so it's also a good way to obfuscate the source code. The final binary looks like an Objective-C binary (except that it's larger).
One example of a utility written with MacRuby is Chris Wanstrath's BaconDrop tool, which is written using MacRuby. While the tool is tiny, it weighs in at around 15 MB due to the bundled MacRuby - an AOT compiled binary should be slimmer.
BaconDrop is also an example of how Ruby-powered tools can help with Mac development. Bacondrop comes in the form of a Mac DMG file - created with a utility called ChocTop, developed by Dr Nic. The tool works for all Cocoa applications, and automates the tedious bit of DMG creation complete with Sparkle setup (Sparkle handles software updates). ChocTop has a DSL-ish configuration system and adds a few task to your rake file.
Once it's possible to AOT compile all MacRuby applications, Ruby seems to be a viable competitor to Objective-C for OS X application development (probably not iPhone development as the iPhone's Objective-C runtime doesn't support Garbage Collection).
Introducing SQLFire: a memory-optimized, high performance SQL database
RDBMS to NoSQL: Managing the Transition
Banking Case Study: Scaling with Low Latency using NewSQL
Adopting Git for the Enterprise: Risks and Considerations
Branching & Merging Efficiently: A Guide to Using Process-Based Promotional Patterns
VMware vFabric SQLFire - Test drive the data management system with memory speed, horizontal scalability and a familiar SQL interface
Nice post, but I think MacRuby iPhone development shall be considered in the near future as nowadays it is being the most profitable and attractive marked for software developers. As Ruby being one of the most productive languages this would be a dream for SDK development!!
“MacRuby seems to be the best way for Mac developers to use Ruby for client applications.” Nope, RubyCocoa is still _the best way_ for Mac developers to use Ruby for client applications. Trying to write a bigger app will show that easily.
While we are working hard to make MacRuby the RubyCocoa replacement, it's not there yet. We definitely need people to use it to get it there, but saying these things will simply make people disappointed at some point and isn't really helping them right now. Apps can be ported easily from RubyCocoa to MacRuby later on.
Please consider this comment to be meant as being helpful and not as a flame.
A RubyCocoa & MacRuby committer.
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.
2 comments
Watch Thread Reply