VMware vFabric Powers Cloud Application Platform Vision

Engineering | Rod Johnson | August 31, 2010 | ...

At this year’s VMworld, VMware is unveiling our vision for enabling IT as a Service. Today’s announcement outlines the three major layers of the IT stack that we feel are critical to delivering IT as a service—cloud infrastructure and management, cloud application platform, and end user computing—and lays out our roadmap for addressing it. Spring developer technologies and SpringSource middleware play a key role in our vision, and we believe we are opening exciting new opportunities to our community.

As part of this strategy, we are announcing our cloud application platform, under the new VMware vFabric brand. This platform delivers on the promise of VMware’s acquisition of SpringSource, pulling together our assets into a single, next-generation infrastructure. While the respective components will remain available separately, we believe this integrated offering will provide a simpler, more efficient, option.

The VMware vFabric platform combines the Spring development framework and tools with VMware vFabric platform services that enable fast delivery of next-generation applications that are instantly scalable and cloud-portable.

Today’s announcement is a natural continuation of our work over the last 5 years. We started out by transforming enterprise Java productivity with the Spring Framework and the innovation of POJO programming; extended the Spring programming model to address security, batch, integration and other important requirements; continued to simplify enterprise Java deployment with tc Server and Hyperic; further helped productivity with SpringSource Tool Suite, Grails and Spring Roo; added cloud-ready messaging and data grid capabilities with our acquisitions of Rabbit Technologies and GemStone Systems; and integrated with the industry’s leading virtualization solution. Out of these best of breed parts, we are today announcing a unified platform.

VMware vFabric

Why is a New Application Platform Needed?

The rise of virtualization and cloud computing combined with the popularity of consumer and software-as-a-service applications such as Facebook and Salesforce.com are driving significant shifts in application architectures – across infrastructure, applications, data access, and how end users interact with applications.

Modern applications need to be easy to use, data rich, and provide access anywhere, anytime. Developers need the frameworks, tools and platform services that enable them to build great applications and immediately deploy those applications onto an intelligent platform that provisions itself on demand and scales the application based on policy.

IT needs a platform for this new generation of applications that is free of the complexity, bloat and limitations of prior-generation architectures.

The Unique Value We Provide

The VMware vFabric cloud application platform combines the Spring projects and tools used by millions of Java developers with the VMware vFabric platform services required for powering next-generation applications. The shift toward cloud computing tends to mix developer and operational concerns; we believe that understanding and addressing modern developer requirements is essential.

The path to cloud begins with developer tools and features that make it easy to create new applications that provide a rich, modern user experience and integrate with other applications using proven EAI patterns. Spring applications can be deployed across any Java platform, including WebSphere, WebLogic, JBoss, our own tc Server, as well as public cloud platforms. The best way to get started is to download the SpringSource Tool Suite, which provides a rich development environment and runtime platform that makes creating Spring and Grails applications quick and easy.

VMware vFabric delivers the lightweight footprint and transparent visibility necessary for applications to make the best use of the underlying virtual infrastructure platform with technologies such as tc Server and Hyperic. The platform addresses the technical challenges of cloud computing head on, supporting new approaches to data management that enable applications to scale across elastic, geographically distributed cloud architectures with our GemFire and RabbitMQ technologies.

Where Are We Headed?

At VMworld, we have 6 demo pods where we will be showing the VMware vFabric cloud application platform in action. I encourage you to drop by and check it out.

Our Spring and vFabric engineers continue the blistering pace and will be highlighting even more innovation at the SpringOne 2GX conference in Chicago from October 19 – 22, 2010. In support of our partnerships with Salesforce.com and Google , we have been hard at work extending the Spring programming model and vFabric platform services to enable developers to deploy applications across cloud platforms such as VMforce and Google AppEngine. We encourage you to come see the new advances for yourself.

We feel we have a unique ability to provide the millions of enterprise Java developers with a clear and innovative path to cloud computing architectures, powered by a modern programming model paired with next-generation platform services. A path that is not overgrown with the cruft and complexity of prior-generation architectures. The journey will be fun, and I look forward to taking it together.

RabbitMQ 2.0 is Now Available

Releases | Adam Fitzgerald | August 30, 2010 | ...

Great news for everyone interested in advanced, scalable, enterprise and cloud messaging! The RabbitMQ team has just released a brand new version, RabbitMQ 2.0, of their popular messaging server. The release includes an all new scalable storage engine, native support for multi-protocol messaging, improvements to plugin distribution and much more.

Download | Documentation | Release Notes | Blog

Spring Community members can use the new Spring AMQP project for both Java and .NET connectivity to RabbitMQ. RabbitMQ and Spring AMQP will be among the incredible technical content featured at SpringOne 2GX 2010 in Chicago, October 19th-21st. Be sure to register now to lock in an early registration discount.

The future of functional web testing?

Engineering | Peter Ledbrook | August 28, 2010 | ...

The Groovy community is a productive bunch, which means there are a plethora of frameworks, libraries, and tools to make your life easier. The area of testing seems to be particularly fertile ground and I've recently been looking into a couple of tools that, when combined, promise a step change in your productivity when writing functional web tests.

Although my usual focus is Grails, you don't have to use Grails to reap the benefits of these tools: they will work with any web application and will integrate well with any Java-based project/build. As it happens they both have associated plugins…

Reuse your Hibernate/JPA domain model with Grails

Engineering | Peter Ledbrook | August 26, 2010 | ...

It's a common story. You have an existing database and now you want to add a web application for it with the minimum of fuss. Is Grails up to the task? Of course it is! Even better, if you already have a domain model based on JPA or Hibernate configuration files, you can reuse it and still benefit from the great GORM features you're used to.

The first step in reusing an existing domain model is to get the class files on the application's classpath. You can do this either by packaging them up in a JAR file and including it in the application (typically by dropping it in the 'lib' directory), or…

Spring Roo 1.1.0.M3 Released

Engineering | Ben Alex | August 25, 2010 | ...

Update: SpringSource Tool Suite 3.5.0.M3 is now available for download. It includes the latest Spring Roo 1.1.0.M3 and GWT 2.1.0.M3 support.

Many members of the community have been eagerly awaiting Spring Roo 1.1.0.M3, and I'm pleased to announce it is now available (download here). This release incorporates more than 150 new features, enhancements and other improvements since Milestone 2, bringing the cumulative total in the 1.1.0 milestone series to some 500 issues. Many of the improvements in Spring Roo 1.1.0.M3 reflect our continued close collaboration with the Spring Framework, Google Web Toolkit, AspectJ and SpringSource Tool Suite teams, and you can see the results in some of the major new features:
  • Incremental database reverse engineering (or DBRE as it's affectionately known around the office): This has been the most highly-voted for Jira ticket in the history of the Spring Roo project, representing around 130 separate votes. This new feature makes it possible to introspect an existing relational database and emit a series of JPA entities. However, unlike traditional database reverse engineering tools, DBRE can be re-run repeatedly on the same project without undesired side-effects (thus the term "incremental" in the feature name). All of the members that result from the introspection are stored in AspectJ ITDs, which is consistent with the rest of Roo. This keeps your .java files clutter-free and intention-revealing (just like they should be). While introspection is now working well (even for complex situations like composite primary keys and all cardinality types) and allows you to programmatically use the resulting entities in normal Java style, in Roo 1.1.0.M4 we'll be adding web tier support for introspected databases.
  • Latest Google Web Toolkit 2.1.0.M3 features: Our collaboration with GWT enables Roo to produce applications that use the newest features in GWT 2.1.0.M3 (which was also released today). One of the most highly-anticipated new features is relationship support under the RequestFactory infrastructure. You can try this out by using the "script expenses.roo" command, then "mvn gwt:run" and creating related employee objects via the GWT UI. You can read more about the new GWT 2.1.0.M3 features in the GWT blog entry.
  • Automatic JSON support, including in Spring MVC applications: All domain objects produced by Spring Roo will now include automatic JSON-related methods. These allow you to bidirectionally convert between a JSON representation and an object. We introduce these new JSON-related methods via ITDs in the normal Roo style. Roo-managed Spring MVC controllers now also automatically use these methods as well. To see this in action, use "script clinic.roo", then "mvn tomcat:run", create a new Owner via the web user interface, and then try a curl command such as curl -v -H 'Accept: application/json' -X GET http://localhost:8080/petclinic/owners/.
  • 16 social media embedding features: It's now possible to add content from 16 social media web sites to your Spring MVC-based front end with a single Roo command! This includes YouTube, Google Video, Vimeo, Viddler, Screenr, UStream, LiveStream, Flikr, Picasa, Google Presentations, Scribd, SlideShare, Google Maps, Google Wave, Twitter and Wikinvest. It's all available from the new "web mvc embed" command.
  • Library upgrades: We've updated the libraries which Roo automatically uses in projects. Some of the notable updates include shifting to Spring Framework 3.0.4 (with enhanced resource serving by the elimination of the URL rewrite filter) and Spring Web Flow 2.1.1.
  • Automatic Roo annotation JAR upgrades: Now when you upgrade to a new version of Roo, there's no need to edit your project's pom.xml to change the Roo annotation library version. Roo will take care of this automatically for you.
  • Usability enhancements: We've now added a number of new features to improve usability. One item you may notice is the new "flash message" area at the top of the screen. This displays the progress of long-running operations (you can try the "flash test" command for a quick demo). We do recommend you use Linux, Windows or iTerm (for OSX users) for the best flash message experience. Some other less visible improvements include better logging, suppport for "#" comments, tab assist for the "hint" command, a comment at the top of AspectJ ITDs to remind you not to edit them, and many others.

As always, the Spring Roo Reference Guide includes upgrade instructions for those already using Roo, as well as background reading and introductory tutorials for those interested in learning more. The reference guide can be viewed online, plus it's also included in the download ZIP. You can also learn more about Spring Roo by attending SpringOne, JavaOne, Devoxx, Google Developer Days or YOW!2010 over the next few months.

The next release of Spring Roo will be 1.1.0.M4. This will be the final milestone in the series and we expect to reach 1.1.0.RELEASE in mid-0ctober 2010. We maintain our full roadmap dates in Jira for…

RabbitMQ Plugin for Grails - Early Access

Engineering | Peter Ledbrook | August 23, 2010 | ...

RabbitMQ is a lightweight, reliable, scalable and portable message broker based on the Advanced Message Queueing Protocol (AMQP). It's ideal for heterogeneous systems and cloud platforms, but it can be used for pretty much any messaging requirements, big or small. You don't (typically) access it via the JMS API, and in fact the JMS plugin won't help, but a new plugin is now available that's dedicated to making it easy to use RabbitMQ from Grails applications.

The current version of the plugin (0.2) is relatively limited, but you can already send and receive messages. I encourage you to try it…

(Secure) File Transfer, the Only Way to Fly…err Copy

Engineering | Josh Long | August 23, 2010 | ...

There are many ways to skin a cat. Many applications today rely on messaging (AMQP, JMS) to bridge the gap between disparate systems and data. Others rely on RPC (typically web-services, or REST). For a great many applications, however, file transfer is very much a way of life! There are several common ways of supporting it, but three of the most common are using a shared mount or folder, using a FTP server, and - for more secure exchanges - using SSH (or SFTP). While it's common knowledge that Spring has always provided first-class support for messaging (JMS, AMQP) and RPC (there are far too…

Spring 3.0.4 is Now Available

Releases | Adam Fitzgerald | August 19, 2010 | ...

Arjen Poutsma has just announced that Spring 3.0.4 is now available. This release addresses over 80 minor issues and updates Spring's support for some recent third-party releases including Hibernate Core 3.6, Hibernate Validator 4.1, EclipseLink 2.1, and EHCache 2.2.

Download | Documentation | Javadoc API | Change Log | JIRA

All the latest features for Spring as well as advanced technical sessions and roadmap discussion will be happening at SpringOne 2GX 2010 in Chicago, October 19th-21st. Be sure to register now to lock in an early registration discount.

Don't forget that Spring users can ask questions in the community forum and identify issues in JIRA as well.

Building RabbitMQ apps using Python

Engineering | Greg L. Turnquist | August 19, 2010 | ...

RabbitMQ is a powerful messaging broker based on the Advanced Message Queueing Protocol (AMQP). Thanks to the neutral nature of the AMQP spec, it is easy to connect to it from many platforms, including Python. In this blog entry, we will:

  • Create a simple stock ticker Python application
  • Create a brokerage Python application that decides when to buy and sell.
  • Compare pika, an AMQP library created by the RabbitMQ team, with py-amqplib.
You can find all the source code for this blog at http://github.com/gregturn/amqp-demo. This assumes you have already installed RabbitMQ based on instructions for your platform and fired it up. Personally, I have it running on my Mac OS X machine (snow leopard).

By the way:

The code written in this blog entry is for demonstration purposes only. Do not rely on the algorithms for financial advice.
With that out of the way, let's write some code!

Building the stock ticker

A good example for a messaging solution is a stock ticker system. The stock exchange publishes messages to the broker indicating stock name, price, and time.
import pickle
import random
import time

class Ticker(object):
    def __init__(self, publisher, qname):
        self.publisher = publisher

        # This quickly creates four random stock symbols
        chars = range(ord("A"), ord("Z")+1)
        def random_letter(): return chr(random.choice(chars))
        self.stock_symbols = [random_letter…

Get the Spring newsletter

Thank you!

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all