SpringOne 2GX 2010 Day 2: Keynote

After returning to work Thursday and catching up on some sleep following my attendance of the SpringOne 2GX 2010 conference held at The Westin Lombard Yorktown Center in the heart of the Lombard / Oak Brook, Illinois business corridor, the following are some notes taken following dinner during the second keynote address led by Adrian Colyer, SpringSource CTO and leader of open source project AspectJ. (Notes taken during the first keynote address on Day 1 of the conference can be found here, and the complete session schedule for the week (Tuesday evening through Friday afternoon) is located here.)

SpringOne2gx2010_Balloons_TheWestinLombardYorktownCenter_Gfesser

Along with Colyer, a few other individuals spoke directly to specific products within and around the SpringSource lineup. This second keynote ran much more smoothly than the first, and all of the software demonstrations appeared to have worked, unlike during the first where network connectivlty periodically stalled (or stopped) demonstrations. In contrast to Rod Johnson, rather than working up to a theme Colyer announced the theme of his keynote to be "Happy Hour at the Microbrewery", a theme which is of course meant to be humorous, although giving no indication of keynote content.

Colyer opened up his keynote by displaying an animation that showed the history of Spring Framework 3.0 by graphically depicting Subversion commits over time using Spring Batch, Spring Integration, and WebSocket API (and incidentally, this was the only or one of the only mentions of Subversion the entire evening; all other mentions of version control focused on Git).

This demonstration was then immediately followed up by Colyer with a question: "How can I move applications through the development, testing, and production environments easier?" He then presented "Spring Travel", the Spring MVC and Spring Web Flow reference application powered by Spring on GAE (Google App Engine) that can be found here, followed by essentially the same application hosted on VMforce, which combines the Java programming language, the Spring Framework, and the Force.com cloud platform. This second reference application can be found here.

Spring Framework 3.1 introduces "environments" and "profiles" which are intended to enable movement between environments more efficiently and can be activated via web.xml, systems properties, or environment variables. One or more profiles can be set as default. (In the midst of this discussion, Colyer announced that Spring Framework 3.0.5 was released earlier in the day.) Essentially, what was being sold here is environment-based property injection.

In addition, Spring Framework 3.1 introduces a caching abstraction via the @Cacheable annotation for incorporating pluggable caching strategies into applications. The @Cacheable annotation uses Spring AOP and AspectJ under the covers, and can be invoked using

<cache:annotation-driven … />

Caching can be provided via the @Cacheable annotation at the local node level, but distributed caching is also available. The following swappable distributed caches are built in: Ehcache, Coherence, GigaSpaces, and GemFire (recently acquired by SpringSource). Colyer offered a simple description of distributed caching: "horizontally scalable data fabric" that enables "data shuffling" between two WANs.

Colyer followed the caching discussion by what he described as an "enterprise integration fabric", horizontally scalable messaging fabric that enables WAN integration via AMQP (a standard that provides messaging interoperability via a wire-level protocol rather than at the API level like JMS). RabbitMQ implements the AMQP standard and was recently acquired by SpringSource, and emphasized that all it takes to install the software using the Brew package manager is

> brew install rabbitmq

Spring Rabbit is an implementation of RabbitMQ and is the first implementation of Spring AMQP. Under the covers, calls by Spring Erlang are made to Erlang from Java (RabbitMQ was developed with Erlang). I am sure you have noticed by now that a number of technologies are being brought under the Spring fold. In addition, some of the technologies mentioned during the first keynote were revisited by Colyer during his discussion, albeit at a more technical level.

Colyer extended the discussion of NoSQL started during the first keynote, by first reviewing some of the products in this space – Apache Cassandra, Redis, MongoDB, Apache CouchDB, Neo4j, GemFire, BigTable, Apache Hadoop, JCR, and Riak – Graeme Rocher, project lead and Grails co-founder, was introduced to present NoSQL with Groovy and Grails (SpringSource acquired G2One, the company behind Groovy and Grails, in 2008).

Rocher opened with an answer to his own question as to how Grails users can work with data stores (GORM), and offered a discussion on GORM for NoSQL. During his demonstration of using GORM for Redis, Rocher focused on its ease of use:

  • start up the Redis server
  • create a Grails project using SpringSource Tool Suite (STS)
  • open plugin manager
  • uninstall Hibernate plugin
  • install Redis plugin
  • create domain class
  • load Grails console
  • start executing methods

Following the demonstration, Rocher indicated that a lot of the NoSQL products address specific problems like scale, and announced that GORM for GemFire was being made available for immediate release, a demonstration of which followed where he again emphasized ease of use. On the tails of the GORM for Redis demonstration, he executed the following steps:

  • install GemFire plugin to STS
  • load Grails console
  • kill Redis server
  • start up GemFire

> grails gemfire-generate

> grails start-cache-server

  • start up two Grails consoles
  • start executing methods from either console

Rocher indicated that each of the Grails consoles were running in a separate JVM. In addition, he emphasized that support for continuous querying was added for GemFire. After turning this feature on during the demonstration, he showed how results for a continuously executed query were displayed in the other console, which has implications for a wide variety of usage.

Colyer returned by introducing the Spring Data project, a programming model for productivity and consistency across a wide range of NoSQL products, the M1 release of which is planned for 4Q2010. During this introduction, he provided a preview for a CouchDB demonstration to be presented in a conference session later in the week that will show offline data access and synchronization with continuous bi-directional replication between an Android mobile phone and a Spring application server.

Keith Donald, SpringSource principal and founding partner, continued a discussion of Greenhouse started during the first keynote by talking about Spring Social and Spring Mobile. Donald discussed Greenhouse as an OAuth (open standard for authorization) provider, using both an API key (permitting another application to connect to you while running the Greenhouse client from a mobile phone with the Safari browser) and a "secret" key. Access tokens are stored within the browser database, including both the API key and secret key that are both encrypted (the encryption method was not discussed).

Permanent OAuth connections can be made via Spring Security. The first milestone of Spring Social is planned for M1 release later this week. In addition, the M1 release of Spring Mobile is also planned for this week. Spring Mobile provides automatic conditional view rendering depending on the device by which an application is accessed, and from one line of code these different layouts are effective across all pages of the application.

Jon Travis, Spring Insight architect and co-founder, took the stage to demonstrate Spring Insight, which provides monitoring of requests across an entire VMware cluster in real-time, including the ability to easily drill down into requests such as JDBC. During the demonstration, Travis commented that "the concept of the cloud is really open to debate", mentioning that instances of tc Server for example are really "just transient objects that can come and go".

(Note that during the conference, I had a chance to chat with a few SpringSource (and coincidentally ex-SpringSource) representatives during meals, and one individual from SpringSource replied "really not much" to my question as to what makes tc Server different than Apache Tomcat.)

Subscribe to Erik on Software

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe