Speakers
- Dan Allen
- Aaron Bedra
- Tim Berglund
- Rohit Bhardwaj
- David Bock
- Stevie Borne
- Jeff Brown
- James Carr
- Scott Davis
- Jeremy Deane
- Keith Donald
- Michael Easter
- Robert Fischer
- Neal Ford
- Brian Gilstrap
- Andrew Glover
- Brian Goetz
- Stuart Halloway
- David Hussman
- Mark Johnson
- Dave Klein
- Scott Leberknight
- Tiffany Lentz
- Howard Lewis Ship
- Chris Maki
- Matthew McCullough
- Alex Miller
- Ted Neward
- Michael Nygard
- Pratik Patel
- Mark Richards
- Brian Sam-Bodden
- Srivaths Sankaran
- Nathaniel Schutta
- Aleksandar Seovic
- Ken Sipe
- Brian Sletten
- Matt Stine
- Venkat Subramaniam
- Burr Sutter
- Vladimir Vivien
- Mark Volkmann
- Craig Walls
- Richard Worth
Craig Walls
Author of Spring in Action
Blog
Spring Web Flow RefCard
Posted Monday, February 8, 2010
In case you've not heard or don't follow me on Twitter, I'm pleased to announce that my fourth DZone Refcard, one covering Spring Web Flow, was released today. You can also read a short interv more »Mark your calendars! My upcoming speaking engagements
Posted Thursday, January 21, 2010
Now that we're a few weeks into 2010, my speaking calendar is starting to take shape. Already in just the first quarter I think I have more dates set than I did in all of 2009. If you follow this more »SpringOne/2GX: A Retrospective
Posted Friday, October 23, 2009
SpringOne/2GX is now over and most everyone has made their way back to the real world. Rather than write a long-winded review of the conference, I decided to summarize my thoughts in the form of a more »Curing ADD with Roo, Blueprints, and Karaf
Posted Thursday, October 22, 2009
Yesterday was a big day for me at SpringOne/2GX. It was the day that I gave my talk on the Spring Expression Language (SpEL). I've been excited about giving that talk, but also excited about a more »SpringOne/2GX Day 2 Keynote
Posted Wednesday, October 21, 2009
It's almost 24 hours after the fact, but here's my writeup on the SpringOne/2GX Day 2 Keynote that was given by Adrian Colyer, Karl Rumelhart, and Chris Richardson. I won't go more »SpringOne/2GX Day 2 session wrap-up
Posted Tuesday, October 20, 2009
The second day of sessions at SpringOne/2GX is almost over. Soon, we'll be having dinner and then listening to Adrian Colyer give a keynote address (which I'll summarize in a later post). So I thought more »SpringOne/2GX Keynote notes
Posted Monday, October 19, 2009
Rod started out by giving a quick overview of the Spring timeline, starting with the publication of Expert One-on-One J2EE Design and Development, up through the formation of Interface21/SpringSource, more »Presentations
Beyond JUnit: Powertools for Test-Driven Development
Writing tests is more than just writing JUnit test cases and hoping that they'll pass when your project is built. If you want assurance that your code is sound and provides the desired functionality, then you'll want to test it from every angle and run th more »Third time's a charm: What's new in Spring 3.0
In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for nearly everyone. more »That old Spring magic has me in its SpEL: DI Wizardy with the Spring Expression Language
Spring 3.0 introduced the Spring Expression Language (SpEL), an extremely powerful yet succinct way to wire non-trivial values into Spring beans. In this presentation, we'll explore SpEL in great detail and see how SpEL opens up a whole new realm of bean more »Building RESTful Applications with Spring MVC
In this session, we'll look at the latest features of Spring 3.0's MVC framework, with an emphasis on building RESTful web applications. You'll see how Spring 3. more »Introducing Spring Roo: From Zero to Working Spring Application in Record Time
In this example-driven session we'll see how to swiftly develop Spring applications using Spring Roo. We'll start with an empty directory and quickly work our way up to a fully functioning web application. You'll see how Roo handles a lot of heavy-lifting more »Modular Java: An Introduction to OSGi
Contrary to what you may have heard, OSGi is neither complex, nor heavyweight. In this session, I'll show you how OSGi can actually simplify application development rather than complicate it. We'll look at the benefits of modularity, the fundamentals of O more »Modular Java: Declarative OSGi with Spring Dynamic Modules
This session will introduce you to Spring-DM. You'll learn how working with OSGi services can be as easy and as natural as declaring a in Spring. In addition, we'll look at how to use Spring-DM's web extender to develop modular web applications in OSGi. more »Writing tests is more than just writing JUnit test cases and hoping that they'll pass when your project is built. If you want assurance that your code is sound and provides the desired functionality, then you'll want to test it from every angle and run those tests as frequently as possible.
In this session, we'll look at a few testing tools that you may not be all that familiar with, including:
- Infinitest : A continuous testing tool that reports test failures almost as quickly as you can break them.
- Mockito : A relatively new tool for mocking objects in tests.
- Concordion : A framework for writing FIT-like functional specifications, without the hassles of FIT.
- jqUnit and JSTester : A xUnit-like framework for testing JavaScript.
- Selenium : A framework for in-container testing of web applications.
If you're ready to elevate your testing prowess to the next level, come see how these tools can help.
In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for nearly everyone.
It's been just over 5 years since Spring 1.0 was released. In that time it has gone from a modest open-source project to being a de facto standard Java application framework. Now, as Spring enters its 6th year, it continues its attack on Java complexity with Spring 3.0, packed with many new features such as:
- First-class REST support
- A new expression language
- More options for annotation-driven bean wiring
- And much more
In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for nearly everyone.
Spring 3.0 introduced the Spring Expression Language (SpEL), an extremely powerful yet succinct way to wire non-trivial values into Spring beans. In this presentation, we'll explore SpEL in great detail and see how SpEL opens up a whole new realm of bean wiring possibilities.
Spring's brand of dependency injection is quite awesome. But there are times when simple bean references and static values won't cut it. Sometimes it makes more sense to wire bean properties with values that are evaluated dynamically at runtime.
That's where the Spring Expression Language (SpEL) comes in. SpEL is one of the most interesting of the many new features in Spring 3.0. With SpEL you can succinctly wire in values derived...
- ...from system properties
- ...mathematically
- ...from the values of other bean properties
- ...from the results of static methods
- ...from almost anything you can conjure up
Previously, most of these types of wiring could only be accomplished with more XML configuration or special helper factory beans. But with SpEL, the seemingly impossible is not only possible, but is quite easy.
In this example-driven presentation, we'll explore SpEL in detail and you'll learn the tricks of SpEL that will make you a bean wiring wizard.
In this session, we'll look at the latest features of Spring 3.0's MVC framework, with an emphasis on building RESTful web applications. You'll see how Spring 3.0's new @PathVariable annotation can be used to develop controllers that respond to resource-oriented RESTful URLs and how ContentNegotiatingViewResolver can turn a user-facing web application into a powerful web-based API. We'll explore other ways Spring 3.0 supports working with REST, including how to write REST clients.
It is a very common practice to develop web applications that are use-case-oriented. This approach has a very procedural feel to it where URLs often involve imperative verbs: "showProduct", "deleteOrder", or "updateShoppingCart". While this approach has served us well, it does lead unnatural and difficult-to-follow URL schemes. Furthermore, the direct objects of the URLs' verbs are often specified in parameters, precluding any effective caching or indexing within search engines.
In contrast, RESTful web applications tend to be more resource-oriented. Rather than focus on verbs, REST places emphasis on the nouns. RESTful URLs tend to describe the target of an operation and rely on a fixed set of verbs (GET, PUT, DELETE, and POST) to indicate the operation itself. Moreoever, RESTful URLs identify resources, which themselves may be represented in many forms. This means that, if properly applied, REST can be used not only to create a web application, but to also define an API that can be used to access resources that are represented as JSON, Atom, RSS, XML, and/or (of course) HTML.
With the recent release of Spring 3.0, the Spring MVC web framework affords many opportunities for building RESTful applications. This includes a new set of annotations to support defining resource-oriented URLs and a new REST client template for consuming RESTful APIs.
In this example-driven session we'll see how to swiftly develop Spring applications using Spring Roo. We'll start with an empty directory and quickly work our way up to a fully functioning web application. You'll see how Roo handles a lot of heavy-lifting that you'd normally have to do yourself when working with Spring. And we'll stop at a few scenic points along the way to see how Roo accomplishes some of its magic.
In recent years, rapid application development frameworks such as Rails and Grails have earned a lot of attending. By employing code generation, convention-over-configuration, and the dynamic capabilities of their core languages (Ruby and Groovy) to offer unparalleled productivity, helping get projects off the ground quickly.
As awesome as these frameworks are, they do have one negative mark against them. Although developers love working with them, convincing the "boss" to build mission-critical applications in a relatively new development style based can be difficult. The mere mention of a word like "Groovy" conjures up images of tie-dye shirts and VW vans. Risk-averse project managers often think that free love may have been a big thing in the 70s, but it has no place in serious business.
If psychedelic frameworks are a tough-sell in your organization, then you can still feel much of the same productivity gains while developing Spring applications. Spring Roo mixes Spring and Java with a little code generation and a dash of compile-time AspectJ to achive a rapid development environment that resembles Rails and Grails. But instead of producing Ruby/Rails or Groovy/Grails code that may make your manager twitch, Roo produces Java-based projects that use the Spring Framework--which is already accepted in many organizations.
Contrary to what you may have heard, OSGi is neither complex, nor heavyweight. In this session, I'll show you how OSGi can actually simplify application development rather than complicate it. We'll look at the benefits of modularity, the fundamentals of OSGi, and see how to develop basic OSGi bundles. We'll also see how a few gadgets in the OSGi toolbox can ease the development of OSGi bundles.
The secret weapon for attacking complexity in any project is to break it down into smaller, cohesive, and more easily digestible pieces. Unfortunately, Java lacks critical ingredients necessary to achieve true modularity.
Enter OSGi. OSGi is a mature and established framework for dynamic modularity in Java. With OSGi, you'll be able to realize true modularity in your Java projects, making them more flexible, comprehensible, and testable.
This session will introduce you to Spring-DM. You'll learn how working with OSGi services can be as easy and as natural as declaring a in Spring. In addition, we'll look at how to use Spring-DM's web extender to develop modular web applications in OSGi. And we'll see how Spring-DM became part of the OSGi specification as Blueprint Services.
OSGi is a great framework for realizing true modularity in your Java applications. Unfortunately, however, working with OSGi services requires coding directly to the OSGi API and getting to know some new patterns for dealing with service availability.
If having to work with the OSGi API makes you feel uneasy, then have a look at Spring Dynamic Modules (aka, Spring-DM). Spring-DM brings a declarative service model to OSGi, relieving you from programatically servicing and consuming services. What's more, because Spring-DM is based on the popular Spring Framework, it brings all of the power of Spring to OSGi development.
Prerequisite: Modular Java: An introduction to OSGi
Craig's NFJS Schedule
Books
by Craig Walls
-
The secret weapon for attacking complexity in any project is to break it down into smaller, cohesive, and more easily digestible pieces. With Modular Java, you can easily develop applications that are more flexible, testable, maintainable, and comprehensible.
Modular Java is a pragmatic guide to developing modular applications using OSGi, the framework for dynamic modularity in Java, and Spring Dynamic Modules, an OSGi extension to the Spring Framework. You'll start with the basics but quickly ramp up, creating loosely coupled modules that publish and consume services, and you'll see how to compose them into larger applications. Along the way, you'll apply what you learn as you build a complete web application that is made up of several OSGi modules, using Spring-DM to wire those modules together.
Modular Java is filled with tips and tricks that will make you a more proficient OSGi and Spring-DM developer. Equipped with the know-how gained from this book, you'll be able to develop applications that are more robust and agile.
by Craig Walls and Ryan Breidenbach
-
Spring in Action 2E is an expanded, completely updated second edition of the best selling Spring in Action. Written by Craig Walls, one of Manning's best writers, this book covers the exciting new features of Spring 2.0, which was released in October 2006.
Spring is a lightweight container framework that represents an exciting way to build enterprise components with simple Java objects. By employing dependency injection and AOP, Spring encourages loosely coupled code and enables plain-old Java objects with capabilities that were previously reserved for EJBs. This book is a hands-on, example-driven exploration of the Spring Framework. Combining short code snippets and an ongoing example developed throughout the book, it shows readers how to build simple and efficient J2EE applications, how to solve persistence problems, handle asynchronous messaging, create and consume remote services, build web applications, and integrate with most popular web frameworks. Readers will learn how to use Spring to write simpler, easier to maintain code so they can focus on what really matters-- critical business needs.
Spring in Action, 2E is for Java developers who are looking for ways to build enterprise-grade applications based on simple Java objects, without resorting to more complex and invasive EJBs. Even hard-core EJB users will find this book valuable as Spring in Action, 2E will describe ways to use EJB components alongside Spring. Software architects will also find Spring in Action, 2E useful as they assess and apply lightweight techniques prescribed by Spring. and learn how Spring can be applied at the various layers of enterprise applications.
by Craig Walls and Norman Richards
- A guide to the XDoclet development tool that eliminates programming busy work by automatically generating code and other deployment artifacts, this book enables developers who place meta-data in a single source code file, to use XDoclet to generate additional source code and other files that are required in a project. Using both smaller code examples and a full-scale J2EE examples, everything needed to employ XDoclet code generation into a development cycle is provided. In addition to the typical uses of XDoclet in J2EE development, also covered are other uses of XDoclet with non-J2EE technologies such as JDO, Hibernate, JMX, SOAP, and MockObjects. Also, if none of these out-of-the box XDoclet tasks meet the developer's needs, information on how to extend XDoclet to generate practically any code your project requires is furnished.