Chris Beams

Chris Beams

Alumni
Blog posts by Chris Beams

Project Sagan: Upgrading to JDK 8

Engineering | April 18, 2014 | ...

As I'm sure most readers are aware, Java SE 8 was released last month. In conjunction with the recent release of STS 3.5.0 and its complete support for JDK 8, we thought now would be an ideal time to upgrade Sagan to take advantage of the new language features and APIs.

Note: Not yet familiar with the Sagan project? It's the Spring reference application that powers this blog and everything else at spring.io. Check out the first three posts in this series for more details.

Cloud Foundry's Java buildpack has provided support for JDK 8 since the day it was released. To begin using it, we've created our own fork of the buildpack, bumped the JDK version from 1.7.0 to 1.8.0, and configured our Gradle build

Project Sagan: zero-downtime deployments

Engineering | April 04, 2014 | ...

Last week, I began this series by announcing that the Sagan reference app is now open source and showed how to get up and running with it on your own machine.

In this post, I want to walk through how we push Sagan into production at spring.io multiple times a day with zero downtime using blue-green deployments. You may have heard of this technique before; Martin Fowler gave it a write-up a few years ago, and there is a section on it in the highly-recommended book Continuous Delivery. In a nutshell, it goes like this:

  1. maintain two copies of your production environment ("blue" and "green");
  2. route all traffic to the the blue environment by mapping production URLs to it;
  3. deploy and test any changes to the application in the green environment;
  4. "flip the switch" by mapping URLs onto green and unmapping them from blue.

Comments are back!

Engineering | April 01, 2014 | ...

When we launched the new spring.io, we left comments off the blog. On one hand this was because we were time-constrained, and leaving them off was the simplest thing to do. On the other hand, it was an experiment in minimalism. We thought we'd see if we could reduce the number of channels for feedback, and in doing so improve the quality all around. We asked everyone to route their questions and feedback on our blog posts to the @springcentral Twitter handle, and many of you did that—thanks!

So how did it go? Well, we heard some feedback from the community that they miss comments on the blog…

Project Sagan: open-sourcing spring.io

Engineering | March 27, 2014 | ...

We launched the spring.io site at last year's SpringOne/2GX, and today I'm glad to announce on behalf of the team that we're open-sourcing the Spring-based application that powers it.

We call the project Sagan, and it's been designed to serve as a reference for building modern web applications with Spring. The code is available now at github.com/spring-io/sagan, and it's easy to get started. Here's a short screencast to prove it:

!{iframe src="//player.vimeo.com/video/90126708" width="640"  height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen}{/iframe}


Over the coming weeks, we'll post a series of articles on the Sagan effort, exploring different aspects of the app, decisions behind its design, and chronicling its evolution. For example, while Sagan runs equally well today on JDK 7 and JDK 8, we're not yet taking advantage of Java 8 language features. As we do that, we'll blog about it here, and in the process demonstrate why we think Spring and Java 8 make such a great match.

In the meantime, take Sagan for a spin! For a start, you can get up and running locally, and then try deploying to Cloud Foundry at Pivotal Web Services.

Note: Register with the invitation code "sagan" for instantaneous account approval. The PWS team has made a limited number of these available, so it's first-come, first-served.

From there, you can explore the rest of the howto-style docs in the wiki, and we'd love it if you'd provide feedback along the way.

As GitHub's contributors graph shows, the Sagan project has already been a big team effort internally. Today, we couldn't be happier to invite everyone reading this post to join us. There is plenty to do, and pull requests are welcome!


UPDATE, May 16, 2014: A replay of the SpringOne2GX 2013 session, "spring.io inside and out" is also now available.

The spring.io site

Engineering | October 23, 2013 | ...
$ curl -I springsource.org
HTTP/1.1 301 Moved Permanently
Content-length: 0
Date: Mon, 9 Sep 2013 19:30:00 PST
Location: http://spring.io

Chances are good that if you're reading this post you're well aware that springsource.org has been redesigned and relaunched as spring.io. We're happy to report that since the launch at SpringOne last month, reception for the new site has been positive and constructive. Thanks to all that have been providing feedback via @springcentral – please keep it coming!

If you are looking around for the first time, the all-new collection of guides is a good place to start. Keep in mind that each guide is backed by a GitHub repository, meaning you can clone everything locally and provide feedback via…

Spring Framework 3.2 M2 Released

Releases | September 12, 2012 | ...

The second milestone release toward Spring Framework 3.2 is now available from the SpringSource repository. If you're not already familiar, see our quick tutorial on resolving these artifacts via Maven. The complete distribution zip is available as usual from the SpringSource community download site.

Be sure to catch up on the changes in 3.2 M1 if you haven't already.

Highlights from 3.2 M2 include:

A major area of focus for 3.2 is ensuring that Spring Framework runs flawlessly on JDK7. M2 artifacts have been built, tested and published against JDK7 and we continue to test JDK6 compatibility in nightly builds as well. We encourage all Spring users on JDK7 to give M2 a spin in your development and test environments and provide as much feedback as possible prior to 3.2 GA. Thanks!

Users of @Configuration classes and Spring's support for subclass proxies (proxy-target-class=true), please take note: it is now no longer necessary to add CGLIB as an explicit dependency to work with these features. As of 3.2 M2, we have upgraded to the new CGLIB 3.0. We repackage all net.sf.cglib classes to org.springframework.cglib and inline them directly within the spring-core JAR. This means that all @Configuration and subclass proxying functionality works out of the box in M2, and means no potential for CGLIB conflicts with other projects. Likewise, we have upgraded to the new ASM 4.0, which we continue to repackage and inline as we have done for quite some time now. Note however that we've eliminated the dedicated spring-asm jar in M2 in favor of including org.springframework.asm classes directly in spring-core. Both of these upgrades are good news for JDK7 users writing Spring components in dynamic JVM languages, as these new versions of CGLIB and ASM properly handle the new invokedynamic bytecode instruction introduced in JDK7.

Enjoy!

Download | Documentation | Javadoc API | Change Log | JIRA | Forum | Stack Overflow

Get ahead

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

Learn more

Get support

Tanzu Spring 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