Greater Atlanta Software Symposium

October 6 - 8, 2006 - Atlanta, GA


Crowne Plaza Marietta
1775 Parkway Place
Marietta, GA   30063
Map »

NOTE: You are viewing details about a past event. We will be back in AtlantaSeptember 20 - 22, 2013.
View the event details here ».

Session Schedule

We are committed to hype-free technical training for developers, architects, and technical managers. We offer over 55 sessions in the span of one weekend. Featuring leading industry experts, who share their practical and real-world experiences; we offer intensive speaker interaction time during sessions and breaks.

About Sessions

Our sessions are designed to cover the latest in trends, best practices, and latest developments in Java application development. Each session lasts 90 minutes unless otherwise noted.

Friday - October 6


  Roberts II Roberts III Victor Meaghan Chris Darci
12:00 - 1:00 PM REGISTRATION
1:00 - 1:15 PM WELCOME
1:15 - 2:45 PM

Clean Up Your Code: 10 Java Coding Tricks, Techniques, and Philosophies

Neal Ford

JavaServer Faces: A Whirlwind Tour

David Geary

Applied REST

Brian Sletten

What's New in Spring 2

Bruce Tate

Creating, Telling, and Tracking User Stories

David Hussman
2:45 - 3:15 PM BREAK
3:15 - 4:45 PM

JSF: State of the Art

David Geary

Introduction to NetKernel : Software for the 21st Century

Brian Sletten

Effective Hibernate

Scott Leberknight
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM

Ruby for Java Developers

Neal Ford

Shale: Turbo-charge your JSF Apps

David Geary

Prototype: Ajax and JavaScript++

Stuart Halloway

Applied AOP

Brian Sletten
6:30 - 7:15 PM DINNER
7:15 - 8:00 PM KEYNOTE

Saturday - October 7


  Roberts II Roberts III Victor Meaghan Chris Darci
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

Spring Dependency Injection

Stuart Halloway

Ajaxian Faces

David Geary

Applied Object-Oriented Metrics

Brian Sletten

Where Agile meets Argyle: New processes in established companies

Bruce Tate
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

The Google Web Toolkit, Part One

David Geary

Three Technologies to Watch

Bruce Tate

Automating Business Value with FIT and FitNesse

David Hussman
12:30 - 1:30 PM LUNCH
1:30 - 3:00 PM

JRuby

Stuart Halloway

5 Minutes Forms with JGoodies Binding and Validation

Scott Delap

Losing Battles and Winning Wars: Adopting Agile

David Hussman
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM

Spring AOP

Stuart Halloway

TDD/BDD and EAI: Unit Tests in a Middleware Tool

Rebecca Parsons

Practices of an Agile Developer

Venkat Subramaniam
4:45 - 5:30 PM BIRDS OF A FEATHER

Sunday - October 8


  Roberts II Roberts III Victor Meaghan Chris Darci
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

Open Source Tools for Agile Development

Venkat Subramaniam

Enterprise Architecture and Agile: They Aren't Mutually Exclusive

Rebecca Parsons

Introduction to Tapestry

Neal Ford
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

Continuous Testing

Paul Duvall

Working with Rules Engines

Venkat Subramaniam

Web Application Security Vulnerabilities

Neal Ford

Spring XML Namespaces for Fun and Profit

Ben Hale

Easing into Agile

Scott Davis
12:30 - 1:15 PM LUNCH
1:15 - 2:00 PM EXPERT PANEL DISCUSSION
2:00 - 3:30 PM

Applied Design Patterns

Brian Sletten

Refactoring your code - a key step in agility

Venkat Subramaniam

Pragmatic Extreme Programming Part 1: Planning & Design

Neal Ford

Holistic Testing

Scott Davis

Continuous Integration

Paul Duvall
3:30 - 3:45 PM BREAK
3:45 - 5:15 PM

Introducing the Semantic Web

Brian Sletten

Programming with Mock objects

Venkat Subramaniam

Pragmatic Extreme Programming Part 2: Architecture, Coding, and Testing

Neal Ford

OO Domain Modeling Strategies

David Bock

Rolling Your Own Google Maps

Scott Davis

Continuous Database Integration

Paul Duvall

Clean Up Your Code: 10 Java Coding Tricks, Techniques, and Philosophies

close
Neal Ford

By Neal Ford

This session delivers 10 techniques for improving your code, whether you are freshly graduated or a grizzled veteran.

Even the most competent programmer falls into habits and coding ruts. This session delivers 10 techniques for improving your code, whether you are freshly graduated or a grizzled veteran. It is derived from many sources, including other languages (Smalltalk, Lisp, Java, and others), and techniques and idioms we have developed teaching developers. It also consolidates information from books that delve into the craft of writing good software. The goal is to create code that is easier to read, maintain, debug, and enhance.
Key Session Points:

  1. Names of Things
  2. Composed Method
  3. Apply the Unix Philosophies
  4. Syntactic Stuff
    • Constants
    • Enumerations
    • Common Methods: equals() && hashcode()

  5. Orthogonality
  6. Compactness
  7. The Pragmatic Rules
  8. Template Method
  9. Bad Inheritance
  10. Decoupling with Interfaces


The Productive Programmer

close
Neal Ford

By Neal Ford

This session shows you how to become a more productive programmer every day by using tools that you didn't know you already had.

<grizzled-programmer>
Why, in my day, we didn't have any fancy Gooey tools -- we did everything from the command line and we liked it. And, we got a lot more done than all you point-and-click monkeys
<grizzled-programmer>

Have you ever noticed that some old-school developers can run rings around you at the keyboard? Have you ever seen a 2 week problem become a 2 hour solution because someone knew a better way to solve it? This session is about all the command line and other tools that are extremely powerful yet widely neglected in today's graphical environments. This session shows you how to take advantage of those tools whether you run Windows, *Nix, or Mac. It focuses on specific recipes to make your job easier. I'll show you how to get around your computer in a hurry (no more clicking around in trees), how to find anything fast, how to manage projects and artifacts from the command line, how to automate the repetative tasks you find yourself doing every single day, how to stop repeating yourself, and how to stop repeating yourself. This session is guaranteed to improve your developer productivity by an order of magnitude.

Key Session Points

  • Creating a common environment
  • The Unix philosophy (without Granola or sandals)
  • Automating common programming tasks
  • Getting around in a hurry
  • Searching techniques
  • Text techniques
  • Project management from the command line
  • Stop repeating yourself
  • Tying it together


Ruby for Java Developers

close
Neal Ford

By Neal Ford

This session introduces Ruby, aimed specifically at Java developers.

Why would any self-respecting Java developer care about Ruby? And why does everyone keep talking about it? This session answers these questions and more. Ruby is a very expressive, powerful general purpose language that keeps gathering raves from industry luminaries. This session introduces Ruby, aimed specifically at Java developers. It covers Ruby syntax and philosophy, showing lots of code along the way. See how a 200 line Java application equates to 20 lines of Ruby code. In addition to syntax, this session shows networking, file I/O, web services, threading, and a host of other topics. The goal of this session isn't to get you to switch from Java. It makes you think about expanding your toolbox and adding Ruby for things that don't need a full-blown Java application. Along the way, the Ruby philosophy will make you Java coding better too.

Key Session Points

  • The Ruby Philosophy
  • Ruby syntax
  • Classes and objects in Ruby
  • Closures
  • Mixins
  • Networking
  • Threading
  • Test-first coding in Ruby
  • Ruby as a scripting language
  • Ruby as a web language


Testing with Selenium

close
Neal Ford

By Neal Ford

This session describes the use and workings of Selenium, the open source web user interface testing tool.

Selenium is one of the most powerful functional testing frameworks to come from the open source world in a long time. This session covers all aspects of Selenium, starting from its origins as an internal user-acceptance testing tool through testing Ajax applications. This session covers Selenium functionality, syntax of the test scripts (both HTML and the scripting language), keywords, testing techniques, recording tests, creating extensions, and testing Ajax applications. Selenium is the premiere testing tool for Ajax, so I show several examples of the power of Selenium combined with Ajax.

Key Session Points

  • Selenium origins and background
  • Installation
  • Building tests
  • API overview
  • The Selenium IDE
  • Testing Ajax Applications
  • Future directions


Introduction to Tapestry

close
Neal Ford

By Neal Ford

This session delves into details about building web applications with Tapestry, covering configuration, templates, and separation of concerns.

Tapestry is the most radical web framework available, and arguably the most powerful. This session delves into the details of how to use Tapestry. It covers configuration, templates, separation of concerns, components, dendency injection, testing, and other topics. This talk is designed to jump-start experienced web developers with enough information about Tapestry to start building applications with it right away.

Key Session Points

  • Understanding Tapestry's structure
  • Building a simple Tapestry application
  • Templates
  • Components
  • The Tapestry engine
  • Dependency injection and HiveMind
  • Testing


Web Application Security Vulnerabilities

close
Neal Ford

By Neal Ford

This session highlights common mistakes made by web programmers, stating the problems and avoidance techniques.

Building secure web applications is difficult. Common trivial mistakes in other programming environments break web applications. This session highlights common mistakes made by web programmers, stating the problems and avoidance techniques. The material in this session is derived from the Open Web Application Security Project (OWASP) and other sources. It covers the OWASP top 10 list of vulnerabilities (including examples). It also demonstrates some (legal!) hacker tools that malicious developers use against you. This session includes case studies showing complete attacks, from vulnerability acquisition to compromise. It also covers open-source tools (such as Stinger) that automate some of the security jobs for developers. This session is designed to scare you – but in a good way!

Key Session Points:
* OWASP List of Vulnerabilities

  1. Insecure configuration management
  2. Denial of service
  3. Insecure storage
  4. Improper error handling
  5. Injection flaws
  6. Buffer overflows
  7. Cross site scripting flaws
  8. Broken authentication and session management
  9. Broken access control
  10. Unvalidated input

    • Security Tools and frameworks
    • Case Study: Hacking Oracle through a browser
    • Case Study: Cross-site scripting
    • Case Study: SQL Injection


Pragmatic Extreme Programming Part 1: Planning & Design

close
Neal Ford

By Neal Ford

This session begins a detailed discussion about how to actually get XP done in the real world (and what to tell your boss). This session includes artifacts (project tracking sheets, code coverage reports, etc.) from real XP projects.

Extreme programming sounds a little too “ESPN2” for most managers, but there is a lot of sound engineering behind its principles. My employer, ThoughtWorks, has been extremely successful using the full XP stack and we have developed lots of experience with it. This session talks about how to do XP in the real world. XP is all about feedback loops, so I discuss how to replace the radical sounding ones with more palatable ones. I talk about the parts of XP that are absolutely vital (unit testing, collective ownership, continuous integration, etc) and the ones that you can introduce a little more slowly (pair programming, only a 40 hour work week). This session focuses on the practicality of XP and how you can adopt it at your organization. I also talk about political battles with managers, other departments, and barriers that pop up anytime you try to introduce change in a large enterprise. Discussion is encouraged (required) in this session.

Key Session Points: XP and Feedback Loops A pragmatic look at the XP practices     The planning game     Small releases     Metaphor     Simple design     Testing     Refactoring     Pair programming     Collective ownership     Continuous integration     40-hour week     On-site customer     Coding standards Sample Project Tracking Sheets Code Coverage Overcoming objections What to say to your boss and his boss XP in the real world



Pragmatic Extreme Programming Part 2: Architecture, Coding, and Testing

close
Neal Ford

By Neal Ford

Continues the discussion from Part 1, focusing on how to keep the benefits of XP without sacrficing it's effectiveness. This session shows real artifacts of XP in action.

Extreme programming sounds a little too “ESPN2” for most managers, but there is a lot of sound engineering behind its principles. My employer, ThoughtWorks, has been extremely successful using the full XP stack and we have developed lots of experience with it. This session talks about how to actually get XP done in the real world. XP is all about feedback loops, so I discuss how to replace the radical sounding ones with more palatable ones. I talk about the parts of XP that are absolutely vital (unit testing, collective ownership, continuous integration, etc) and the ones that you can introduce a little more slowly (pair programming, only a 40 hour work week). This session focuses on the practicality of XP and how you can adopt it at your organization. I also talk about political battles with managers, other departments, and barriers that pop up anytime you try to introduce change in a large enterprise. Discussion is encouraged (required) in this session.

Key Session Points: XP and Feedback Loops Continuing the pragmatic look at the XP practices Tools to support agility Overcoming objections What to say to your boss and his boss XP in the real world



Applied REST

close
Brian Sletten

By Brian Sletten

REST sounds like such a simple thing. But, what is it really? How do you convince your boss to let you try it when she has been sold on the equation SOAP = SOA + P(rofit)? How do you go about building, deploying, publishing and orchestrating web services without the (Un)Holy Trinity of SOAP, WSDL and UDDI?

This talk will thoroughly examine this REST phenomenon in terms of its history, its goals, its consequences and where it fits into the Big Picture of SOA. We will also look at exposing existing tools/APIs through RESTful APIs.

If you find yourself interested in talking about REST without people dismissing it as trivial (yeah, but what is it?!?!), unsaleable (yeah, but I am trying to solve problems, not buy tools!) or not SOA (<insert your own joke here -- that one leaves me speechless>), come on by.



Introduction to NetKernel : Software for the 21st Century

close
Brian Sletten

By Brian Sletten

Imagine the simplicity of REST married to the power of Unix pipes with the benefits of a loosely-coupled, logically-layered architecture. If that is hard to imagine, it may because the architectures available to you today are convoluted accretions of mismatched technologies, languages, abstractions and data models.

NetKernel is a disruptive technology that changes the game. It has been quietly gaining mind share in the past several years; people who are exposed to it don't want to go back to the tired and blue conventions of J2EE and .NET. Not only does it make building the kinds of systems you are building today easier, it does it more efficiently, with less code and a far more scalable runway to allow you to take advantage of the emerging multi-core, multi-CPU hardware that is coming our way.

Come see how this open source / commercial product can change the way you think about building software.

NetKernel makes the things you are doing now easier, but also makes new types of systems possible.

A wise man once said, "XML is like lye. It is very useful, but humans shouldn't touch it." If you've had to incorporate XML into your project by hand, you have probably been burned by getting too close. NetKernel turns this wisdom on its head and encourages you to use XML like the liquid data stream you want it to be.

But, XML is only part of the story. Resource-oriented computing is a generalized and revolutionary approach to modern, flexible systems. There is less code to write, but it is more fun to do. Orchestration of existing services and data sources is faster, easier and more encompassing than with more conventional technologies.

This talk will help explain what NetKernel is (app server? pipeline tool? embedded SOA?) and, through a comprehensive set of examples, give you a glimpse at a deeper software reality than you might have thought possible.

Disclaimer: There will be no blue pills given to you to make you forget what you have seen. Come with an open mind.



Applied AOP

close
Brian Sletten

By Brian Sletten

Most people new to Aspect-Oriented Programming (AOP) are fed up with separation of concerns zealots explaining how great their techniques are at dealing with... logging. Ok, you get it. Logging is a cross-cutting concern that can be appropriately modularized. What else does AOP have to offer? A lot, it turns out. This talk will give an introduction to the motivations of AOP as well as a series of concrete examples drawn from enterprise and client side Java. Come learn how AspectJ-flavored AOP can begin to benefit you immediately either in development or production environments. Learn how to enforce architectural policies, find Swing threading issues, reduce the invasiveness of the Observer design pattern or even improve the reusability of your domain models. Now that Spring 2.0 provides support for AspectJ, the time has never been better to learn about these new (but backwards compatible) ways of thinking about building software.

Attendees will learn about
The history and reasons behind AOP
Development-oriented aspects that can be useful, but compiled out of production code
Production-oriented aspects that can simplify development and ease the burden of future changes
Basic AspectJ usage and jargon How to use AspectJ with Spring

Rating: Intermediate
Category: Architecture/Languages, Client Side Java, Server Side Java Prerequisites: Basic Java. Some level of AOP understanding is helpful, but not required. The pace of the introduction will depend on the average level of exposure the audience has previously had to AOP.



Applied Object-Oriented Metrics

close
Brian Sletten

By Brian Sletten

Object-oriented code metrics are a little like Artificial Intelligence: those who did it twenty years ago roll their eyes at the thought and prophesy the same ultimate failure at applicability now. Those who grew up with Java are approaching the topic with new eyes and are finding useful ways of incorporating metrics into their projects. Come hear about tools and ways to measure properties of software, how they might be beneficial and where you are likely to go astray with this approach.

Attendees will learn about
Approaches to measuring software The attempt to predict failure via software metrics (and the failure to do so) Analyzing OO designs based on the "Martin Metrics" Tools that allow developers to use metrics for themselves

Rating: Intermediate
Category: Architecture/Languages, Design, Core Java, .NET
Prerequisites: Basic Java or C# skills



Applied Design Patterns

close
Brian Sletten

By Brian Sletten

Just about every modern software developer has a copy of the Gang of Four "Design Patterns" book sitting on a shelf; many of them have actually read it. The dark secret of the patterns community is that there is often a large gulf between whiteboard simplicity and real-world complexity. Language choice plays a part in the design (and even importance) of patterns. The situation is made even more confusing by the fact that many of the core patterns have now been "voted off the island" for one reason or another. This talk will give a pragmatic overview of the motivations behind design patterns and will focus on applying a handful of the GOF patterns to example scenarios in Java, Ruby and C#. A quick introduction to the role AOP plays in changing the patterns landscape will also be covered.

Attendees will learn about
The benefits and history of patterns in software
How language choice affects pattern implementations
Applying a handful of GOF patterns in code examples
Why there is no DP4J available

Rating: Intermediate
Category: Architecture/Languages, Core Java, .NET
Prerequisites: Basic Java or C# skills



Introducing the Semantic Web

close
Brian Sletten

By Brian Sletten

Just as the world is feeling comfortable with the Web, Tim Berners-Lee et al inform us that what we have seen so far is just the beginning. His original plans at CERN were larger and grander. The Semantic Web is the new vision of machine-processable documents and metadata to improve search, knowledge discovery and data integration and management. While there are many naysayers chiding such grand visions, there are also pragmatic and useful technologies emerging that can be applied today.

Attendees will learn:

The history and motivations behind the Semantic Web The technology stack that will make it happen (including RDF and OWL) An overview of tools and technologies that are beginning to satisfy the vision

This talk stands on its own, but feeds into the "Experiencing the Semantic Web" talk which is more hands on.

Rating: Intermediate
Prerequisites: This is all so new, most engineers will find something to excite them.



Groovy for Java Programmers

close
Venkat Subramaniam

By Venkat Subramaniam

Object-oriented scripting languages, or agile dynamic languages, as some like to call those, are gaining programmers' attention. Groovy bring this excitement to the Java platform with its ability to generate byte code. You can use Groovy instead of Java for some parts of your application. By learning it, you can switch between the languages where you consider fit.

In this session we will learn what Groovy is. We will take an example driven approach to look at interesting features. We will see how a piece of code you would write in Java can be written, elegantly, using Groovy. In addition to the current features, we will also discuss the state of the language and tools.



Get Groovier with Grails

close
Venkat Subramaniam

By Venkat Subramaniam

Inspired by the Ruby on Rails project, Grails brings the ease of web development and "convention over configuration" to the Java platform. We will learn how to create web applications using Grails, how to integrate it with Hibernate, and how to Ajax it, all using the built in features of Grails. This section assumes that you are familiar with Groovy or you have attended the “Groovy for Java Programmers” session. The session will be example driven with live coding where we will build a web application from scratch.

In this session you will learn *How to create web application using Grails * Understand Grails Conventions * Learn how to use the code generators and how to manual create domain models, controllers, and view * AJAX your application * Integrate with database



Practices of an Agile Developer

close
Venkat Subramaniam

By Venkat Subramaniam

You have worked on software projects with varying degree of success. What were the reasons for the success of your last project? What were the reasons for those that failed? A number of issues contribute to project success - some non-technical in nature. In this presentation the speaker will share with you practices in a number of areas including coding, developer attitude, debugging, and feedback. The discussions are based on the book with the same title as the talk.

In this session you will learn about practices beyond what well know methodologies prescribe. While we reemphasize some popular practices, we will also discuss other often overlooked, but important practices - practices that contribute to success of projects.



Open Source Tools for Agile Development

close
Venkat Subramaniam

By Venkat Subramaniam

As a Java developer, you have taken the time to learn the basics of the language and relevant parts of its rich API. However, you need more than that to develop serious industrial strength applications. In this presentation, the speaker will introduce you to a number of open source tools which you can use to improve your application quality and your development process.

Instead of simply going through a laundry list of tools available, the speaker will engage you with motivation to use these tools, and show examples of their practical use.

We will start by looking at tools for unit testing and creating mock objects. We will then take a look at tools that will help you to ensure certain performance of your critical code.

You know writing good code is more than simply using an OO language. We will look at tools that will help you with code metrics, so you can analyze, and refactor your code to reduce coupling and undesirable dependencies.

But, what about hidden critical errors in your code, like synchronization problems that may potentially lead to deadlocks? We will look at how you can use open source tools to proactively eliminate these from your code.

Finally, we will look at tools available for automating your project and getting extreme feedback though out the development cycle.



Working with Rules Engines

close
Venkat Subramaniam

By Venkat Subramaniam

Rule based programming allows us to develop applications using declarative rules. These can simplify development in applications where such rules based knowledge is used for decision making.

In this presentation we will take a look at the tools and techniques for developing rule based applications. We will take a look at open source tools, discuss their strengths, capabilities, and limitations.



Refactoring your code - a key step in agility

close
Venkat Subramaniam

By Venkat Subramaniam

Refactoring is one of the core practices in Agile Software Development. Refactoring is based on some core principles that apply to more than writing good code. But, what's refactoring? Why should you do it? How do you go about doing that? What tools are available to successfully refactor your App?

In this presentation we will address each of these questions. We will take an examples based approach to look at code that can benefit from refactoring. We will discuss how to identify a case for refactoring. Then we will use tools to help us refactor.



Programming with Mock objects

close
Venkat Subramaniam

By Venkat Subramaniam

You are convinced that Test Driven Development is good for you and your project. You realize the benefits it has to offer. What's holding you back? All the code and components that your code so heavily depends on is most likely making you wonder if TDD is really for you. We will start out by looking at dependency and dependency inversion. Then we will discuss how mock objects can help separate our code from its dependencies.

In this presentation, we will take an examples oriented approach to utilizing mock objects. We will first hand toss a mock and see how our code benefits from it. Then we will take a look at using frameworks that can assist with the creation of mocks.



Capistrano: Application Deployment and More

close
David Bock

By David Bock

Capistrano (formerly Switchtower) is a tool originally written to help automate application deployment for Ruby on Rails. It does this well, but it has grown up into a tool capable of much, much more. It can be used for deploying Java applications, updating server configurations acrtoss an enterprise, administering netwoeks, backing up files, and all sorts of other activities. Any activity you might do from the command line, you can now do simultaneously across large numbers of machines, with all machines succeeding (or rolling back in case of failure) together.

In this talk I discuss the fundamentals of capistrano, use the built-in tasks to deploy a rails application, demonstrate the capability of performing custom tasks across several computers simultaneously (thanks to several virtual machines), and show how applications can be rolled back in case of problems. Capistrano isn't perfect though; we will also discuss best practices, limitations, and lessons learned.

Capistrano requires a POSIX-compatible shell and SSH on the machines it is going to control; as a side-benefit, we will also learn about CYGWIN, an open source tool that provides these capabilities (and lots lots more) to Windows environments.



OO Domain Modeling Strategies

close
David Bock

By David Bock

A well-designed domain model is the best foundation any application can have. Unfortunately, many models grow like weeds in a garden, driven more by the needs of a relational database than the needs of the business model. It doesn't have to be this way - we can build a solid domain model that can survive change and withstand several different mechanisms for persistence.

In this talk we will start with a list of requirements for a small application, and use these to build a domain application that will be free of persistence constraints, adaptable to changes in the business rules, and even predictive of the future needs of the application. While the examples alternate between Java and Ruby, the techniques involved are foundational and applicable to most any object-oriented language.



Real World Web Services

close
Scott Davis

By Scott Davis

In this talk, we'll survey the web services exposed by leading websites (Google, Yahoo, Amazon, eBay) and discuss how they are driving the AJAX revolution. You'll see examples of RESTful, SOAP, and JSON web services, as well as the strengths and weaknesses of each.

Everyone seems to be talking about AJAX and Web 2.0 these days. While the UIs of AJAX-enabled websites such as Google Maps and Flickr are undeniably cool, they wouldn't exist without a strong SOA/Web Services infrastructure behind the scenes.

"Web Services" is an overloaded term. While SOAP is a mainstay in the web services world, there are other equally valid flavors (REST, JSON) that accomplish the same goal -- decoupling the data from the presentation layer, the platform, and even the programming language used.

Rather than talking about web services in the abstract, this talk shows examples of each flavor of web services as it is used in the wild by leading web companies. They have all taken slightly different approaches to the same problem. We'll compare and contrast their public-facing offerings.

There is no one "right way" to expose your API via web services. After this talk, you should have a better idea of the relative strengths and weaknesses of each variant.



Groovy: The Next Generation of Java

close
Scott Davis

By Scott Davis

This is the year of the dynamic scripting language. Ruby (and Rails) has won the hearts and minds of many independent software developers. JavaScript is experiencing a renaissance thanks to the wild success of AJAX and websites like Google Maps. And Groovy (JSR-241) brings the same level of excitement and "scripting goodness" to the Java platform.

In this presentation, we take a very pragmatic "prove it in code" approach to learning Groovy. Since the syntax is (almost) identical to Java, we can dive right in from the very beginning, learning the "syntactic sugar" as we solve real world problems.

You'll learn how easy it is to install Groovy and get started working with it. You'll tackle file I/O, reading and creating text files. You'll create and parse XML and HTML. You'll interact with databases. You'll create Groovlets (servlets sprinkled with Groovy-dust). And finally, you'll get a brief introduction to Grails (hint: the 'G' is silent).



Easing into Agile

close
Scott Davis

By Scott Davis

How do you get started with an Agile development methodology? Everyone has been talking about eXtreme Programming for years, but how do you get it introduced to your team? Many times, you're not simply transitioning from from one methodology to another -- you're introducing a methodology for the first time. Adding structure to a previously unstructured endeavor. Adding a touch of discipline where programmers once roamed free.

This presentation talks about how to introduce Agile practices slowly. Think of it as refactoring your team iteratively. If you drop 25 new "best practices" on developers all at once, the chances of getting any of them to stick is slim. If you start with one practice and get buy-in on it, sneaking in the next one (especially if it is complementary) is far easier.

  • starting with source control
  • easing into iterations with XPlanner
  • is your team ready for pair programming?
  • writing your first unit tests
  • evaluating your code base for unit test coverage


Holistic Testing

close
Scott Davis

By Scott Davis

Mark Twain once said, "Everyone talks about the weather, but nobody does anything about it." Do you feel the same way about Unit Testing? Are you actively testing your code, or are you just thinking about testing your code... some day... once you get some more free time...

Unit testing offers benefits beyond the obvious. A happy side effect of writing unit tests is that your code ends up being better architected. By forcing you to be a consumer of your own code outside of the context of the main application, you end up seeing your code in a different light. Hidden dependencies get flushed out early. Good unit tests force your code to be more loosely coupled and highly cohesive.

This presentation is a survey of the testing ecosystem. A good testing infrastructure should include more than just JUnit. Cobertura, a test coverage tool, shows you how much of your code base is being tested. Writing test cases in Groovy adds a measure of flexibility that makes working with XML (and string data in general) a piece of cake. EasyMock allows you to test interfaces instead of implementations (and also avoid having to hand-code and maintain your own mock objects). We'll also look at functional testing libraries like HttpUnit, DbUnit, and JUnitPerf that allow you to test how your code behaves out in the wild, interacting with real subsystems instead of just mocks.

Most importantly, you'll see these tools live in action -- real code examples instead a simple slideware overview. Rather than looking at each tool in isolation, you'll see how they interact and complement each other. Rather than just talking about testing, we'll (finally) do something about it.



Rolling Your Own Google Maps

close
Scott Davis

By Scott Davis

The release of Google Maps was a "Wizard of Oz / Technicolor" moment for web developers everywhere. It didn't just change the way we look at mapping sites; it forever changed the way we look at all web sites. It put AJAX on the map, both figuratively and literally.

Based on the book Pragmatic GIS, we deconstruct the mechanics behind Google Maps, showing you the magical combination of JavaScript and CSS that allows it to work. In 12 easy-to-follow steps, we take you from static HTML all the way to your own "slippy map", complete with zooming and different map types.

Even if you don't have immediate plans to add maps to your website, come look at "the man behind the curtain". The hands-on, practical approach to learning AJAX in this talk will pay you dividends. The pretty map you get at the end is just the icing on the cake.



Creating Polished Swing Applications

close
Scott Delap

By Scott Delap

Too often, Swing applications are slow, ugly, and hard-to-maintain. It turns out that it doesn't have to be this way. Swing can be used to create highly-responsive, beautiful applications that are very maintainable. If this isn't consistent with your own experience, don't feel bad; its not very obvious how to make Swing sing.

In this session, I explore three topics that lead to much better Swing applications:

  • Proper Swing threading
  • High-quality third-party Swing look-and-feels
  • Good practices for coding Swing applications

In the threading portion of the session, I explain Swing's event handling architecture and its implications for Swing applications. Understanding this topic is crucial to creating highly-responsive Swing apps. I demonstrate how to use this knowledge in the form of many live-coded examples, and I show how frameworks like SwingWorker and FoxTrot can make this easier. Java's default look-and-feel, Metal, is awful (and in my opinion, the "Ocean" theme in JDK 5.0 doesn't do enough to improve it); you should stop using it immediately. But creating good-looking applications is sadly more than slapping in a look-and-feel; you must also take care to understand the principles behind attractive layouts. I spend the second part of this session exploring how to make your Swing applications look great through a combination of third-party look-and-feels and layout techniques.



5 Minutes Forms with JGoodies Binding and Validation

close
Scott Delap

By Scott Delap

Application developers often spend hours on the simple tasks of laying out a form, wiring components to objects, and validating the data entered. This is time that could be much better spend on the business problems your application is trying to solve. This session will show how to leverage open source libraries to take the work out of the form building process.

First you will be introduced to the JGoodies Binding and Validation libraries. Then you will see how a basic form builder built on top of these technologies can reduce the form building process from hours to minutes.



Introducing the Eclipse Rich Client Platform

close
Scott Delap

By Scott Delap

Rich client application development using Java can be intimidating giving the vast flexibility in application design and structure. It also can be frustrating to create the large number of support services (persistence, menus, event and job frameworks) that a large scale rich client applications needs. The Eclipse Rich Client Platform is one project attempting to solve these issues by providing a core infrastructure that not only provides the day to day services a rich client application developer needs, but also providing a suggested path to guide you down the road of designing your application. This presentation introduces both the Eclipse RCP and the tools provided by the Eclipse IDE that assist developers in writing RCP apps.

Rich client application development using Java can be intimidating giving the vast flexibility in application design and structure. It also can be frustrating to create the large number of support services (persistence, menus, event and job frameworks) that a large scale rich client applications needs. The Eclipse Rich Client Platform is one project attempting to solve these issues by providing a core infrastructure that not only provides the day to day services a rich client application developer needs, but also providing a suggested path to guide you down the road of designing your application. This presentation introduces both the Eclipse RCP and the tools provided by the Eclipse IDE that assist developers in writing RCP apps.

How can a RCP Framework help my application? Menus Events Jobs etc.. Introducing Eclipse RCP The base of the Eclipse IDE Actively Developed Leveraged By Many Projects ... Eclipse RCP Services Plugins Core based on OSGi Extensions Menus/Toolbars/Actions Jobs View Framework Tools Support Plugin Editors Product Definition ... Deployment One Click Webstart Deployment Support Multiple Platforms



Continuous Testing

close
Paul Duvall

By Paul Duvall

The key to improving the reliability of your software is to run tests whenever a change occurs. Continuous Testing leverages the practice of continuous integration (CI) to ensure highly reliable code.

You'll learn about various testing frameworks such as JUnit, Selenium, and DBUnit that can be incorporated into your CI system so that the tests are run continually (or periodically). Numerous examples will demonstrate the use of these tools so that you can immediately add continuous testing to your development infrastructure.



Continuous Integration

close
Paul Duvall

By Paul Duvall

Increase feedback on your project by building your software with every change applied to your source code repository. The practice of Continuous Integration (CI) can be used to decrease the time between when a defect is introduced and when it is fixed.

You will learn how to get the CruiseControl CI server and a source code management repository to work together in a CI system. From a working reference implementation in Java, you will learn the attributes that make up an effective development platform for CI. Learn how to use the CI system as the centerpiece to your software development activities to create automated code reviews, generate diagrams and documentation, and detect anomalies on a continual basis. Paul will use CruiseControl, Subversion, Ant, JUnit, and other tools that can help you implement a powerful CI system.



Continuous Database Integration

close
Paul Duvall

By Paul Duvall

Performing daily or continuous builds is essential for ensuring working software. Yet, most consider only the source, not the database, as a part of these builds. What’s good for the source code is also good for your database.

You’ll learn how to leverage your CI system to rebuild your database, along with the associated test data when changes occur. Examples will use the CruiseControl CI tool, Ant build tool and the MySQL database. You’ll see demonstrations for dropping and recreating a database along with its associated tables, inserting and modifying the test data.



JavaServer Faces: A Whirlwind Tour

close
David Geary

By David Geary

In April 2005, annual growth rates for jobs in JavaServer Faces, Struts, and Ruby on Rails were all at about 0%. Today, Struts' growth rate still hovers around 0%, but JSF and Rails have taken off. At the end of 2007, both JSF and Rails were growing at a rate of between 400-500% annually (according to indeed.com).

JSF has passed the adoption tipping point, and is now the Java-based framework of choice, as is evidenced by its ecosystem. From vendors such as MyEclipse and RedHat to open source projects such as Seam, Facelets, and Ajax4JSF, JSF is where the action is.

Come see why JSF is so popular. In this code- and demo-intensive session, I'll show you the fundamentals of JSF.

This session is taught by a member of the JSF Expert Group for JSF 1.0 and 2.0., and co-author of the best-selling book on JSF: Core JavaServer Faces. David will take you through a whirlwind introduction to JSF including what JSF is, how it was developed, and how you can best take advantage of the technology. Here is a list of topics:

Components, managed beans, value expressions, and static navigation i18n, CSS, and actions The Faces Context and Faces messages The JSF Event Model Using JavaScript with JSF

This introduction to JSF also contains 5 live-code demos, where David will develop a simple, but robust application during the course of the session.

Prerequisite: Some knowledge of Java-based web applications, such as Struts, is a plus, but is not required. If you have a significant experience with JSF, you probably already know most of what's covered in this session.



JSF: State of the Art

close
David Geary

By David Geary

In 2005, JSF hit its stride, as evidenced from overwhelming support from both vendors and the open-source community. JSF 1.0 had plenty of holes, but open-source projects have arisen to address those needs. This session takes a look at three of those projects: Tomahawk (MyFaces component library) FaceletsSeam

MyFaces is an open-source implementation of the JSF spec. In addition, MyFaces developers got a little carried away and also developed a useful set of custom components that you can use in your own applications, regardless of whether you use MyFaces as your JSF implementation. Those components are now packaged separately from MyFaces under the name Tomahawk.

Facelets is an open-source project from java.net that lets you implement views with Tapestry-like HTML pages. That technique is a powerful feature that lets graphic designers and software developers work separately in parallel.

Seam is a framework from JBoss that provides a component model that unifies the EJB and JSF component models. Seam makes great use of annotations to meld EJBs and JSF components in a seamless fashion (thus the name).

Lots is happening in the JSF space. Come to this talk and learn about these three exciting open-source projects.



Shale: Turbo-charge your JSF Apps

close
David Geary

By David Geary

JavaServer Faces is a well designed user interface framework, but it lacks a number of features you might otherwise expect out of the box; for example, JSF does not explicitly provide support for client-side validation.

So, from the folks that brought you Struts, comes Shale, a collection of useful enhancements to JSF. A top-level Apache Software Foundation project, Shale adds some really cool features to vanilla JSF, including:

Web flow: script dialog flow Remote Method Calls: easily call JavaBean methods from JavaScript Tapestry-like views: code views in pure HTML Use Apache Commons Validator validators on the client or server, or both JSF testing framework: mocks for easy JSF testing

There's a lot of cool stuff in Shale that makes JSF a much more compelling proposition. Come see what it's all about.

This is a code-intensive, fast-paced look at Apache Shale. Forty-plus slides and five demos makes for an action packed session that illustrates the cool features that Shale provides.



Ajaxian Faces

close
David Geary

By David Geary

JavaServer Faces is a perfect platform for implementing Web 2.0 interfaces with Ajax. This session explores how you can use these two potent technologies--JSF and Ajax--together to create applications that look and behave like desktop applications but run in the browser.

JavaServer Faces, with a mature component model and flexible lifecyle, is a perfect platform for implementing Web 2.0 user interfaces with Ajax. This session explores using JSF and Ajax to create applications that act like desktop applications but run in a browser.

We'll start with a quick look at implementing basic Ajax in a JSF application. Then, once your bloodthirst has been slaked, we'll dive deeper into Ajaxian Faces dynamics with a form completion demo that requires its implementor to understand two simple, but vital facts about JSF.

If you're savvy, you probably use client-side validation to augment your server side validation logic, which parenthetically, is no no-brainer in either of the leading web application frameworks, JSF or Rails. But anyway, client-side validation is old school. All the cool developers nowadays use Ajax to implement realtime validation, where you sneak a trip to the server as an unwary user types into your input fields. But to accomplish that, we'll have to dive even deeper into JSF, with concerns such as accessing view state and accounting for client-side state saving.

All of this Ajax development is great fun, but most of it is best relegated to components and frameworks, which are the topics that will wrap up our session. We'll see how to keep your JavaScript separate from your JSF components and how to pass JSP tag attributes all the way through to JavaScript. Finally, we'll take a look at Ajax4jsf, a JSF component library with a tag library that blends Ajax into JSF in a natural, intuitive way without having to write JavaScript.

As web developers, we've been handcuffed long enough by the shackles of Web 1.0 development. Come to this session and see the brave new world of Web 2.0 development with one of the hottest web application frameworks.



The Google Web Toolkit, Part One

close
David Geary

By David Geary

Developing highly interactive web applications, for the most part requires knowledge of a wide array of technologies: HTML, CSS, JavaScript, XMLHttpRequest, JSP, JSF, etc.

With the Google Web Toolkit (GWT), Google turns that notion of development on its head. Instead, you implement Ajax applications by writing almost entirely in Java. You use an AWT-like API, which the Google compiler compiles to JavaScript that runs on the client.

In the early days of Java, application development with the AWT was relatively simple. You had to have a decent understanding of Java and AWT fundamentals, but once equipped with such knowledge, you could dive in and develop some impressive applications.

Ten years later, we have, in so many respects, gone significantly backwards. We've shoehorned technologies such as HTML into shoes for which they were never intended, and for our efforts, we have a mismatch of disparate technologies that one needs to knit together for a truly interactive web application.

This is the first session of a two-part presentation on the GWT, where I'll concentrate on GWT basics: implementing Ajax-enabled applications in Java, internationalization, testing, and remote procedure calls.



Spring Web Flow Jumpstart

close
Ben Hale

By Ben Hale

Have you ever developed a web application with a long user action based on form input? Did you curse the Java community for their inability to address this very common application type? Well, attend this session about Spring Web Flow and you'll curse no more.

In this session we'll learn about a new(ish) Spring sub-project, Spring Web Flow. Spring Web Flow is an innovative new framework for declaratively modeling web application user interactions. We'll start with an exploration of some web development issues and then take a look at the value proposition that Web Flow brings to the table. Once everyone is comfortable with that, we'll jump straight to code. We'll start by exploring some of the features that SWF has and then we'll finish with a live coding example where the audience will help write the application.



Spring XML Namespaces for Fun and Profit

close
Ben Hale

By Ben Hale

Spring 2.0 introduces the new concept of XML-based configuration namespaces. These namespaces allow you to define domain specific languages for configuring your applications. This session will walk through the business case behind these namespaces as well as note Spring's own use of this system to simplify common configuration tasks. The session will finish with a live coding example of how to implement an XML namespace for your own application. This will include XML Schema definition, parser implementation, and packaging in a jar file for use by consumers.

Through this session you'll learn about how Interface21 is enhancing the development experience for those building Spring based software components. You'll see how Interface21 has heard the calls for a simpler XML based configuration and developed a simple and powerful way to extend the standard configuration mechanism.



Ajax Architecture

close
Stuart Halloway

By Stuart Halloway

Ajax applications have unique architectural challenges and opportunities. This presentation will show you how to take advantage of the Ajax's strengths, and work around its quirks.

We'll start with an overview of Ajax, and then dive right into an extended example where we add Ajax to an existing web application. Along the way we'll cover several tools that we use to aid in Ajax development: The JavaScript Shell, Firebug, and the Web Developer's Toolbar. We'll also look at two popular JavaScript Ajax libraries: Prototype and Scriptaculous.

With the example application under our belts, we'll move to a discussion of Ajax architectural questions, including:

  • How do I select an Ajax library?
  • What format data should my Ajax calls use: XML, JSON, HTML, or other?
  • How do I handle the back button and deep linking in Ajax?
Prior exposure to Ajax and JavaScript is useful but not required.



JavaScript for Java Programmers

close
Stuart Halloway

By Stuart Halloway

This presentation covers JavaScript from the perspective of a Java programmer. We assume that you may be using an Ajax toolkit, but still need to be able to read, modify, and test the JavaScript code in your application. You will learn the common idioms of JavaScript by looking at working code from Prototype and Scriptaculous.

All Ajax programmers need to know JavaScript. Toolkits will do some of the work for you, but your own JavaScript will differentiate your applications from others. A reading knowledge of JavaScript is also necessary when selecting an Ajax framework, and for testing and debugging applications.

We'll go straight to the interesting parts of JavaScript programming:

  • Prototype-based inheritance
  • Functional style
  • Dynamic evaluation
  • In-browser testing

We'll demonstrate these concepts using the popular Ajax frameworks Prototype and script.aculo.us.



Prototype: Ajax and JavaScript++

close
Stuart Halloway

By Stuart Halloway

Learn to simplify Ajax development with Prototype through a series of real-world examples. Along the way, learn to code in Prototype's modern JavaScript style, taking advantage of Prototype's extensions to JavaScript's object model

Prototype deserves its fame for Ajax support, and for easy integration with the Rails platform. In this presentation, you will learn to simplify Ajax development with Prototype as we work through a series of examples that demonstrate:

  • using Ajax.Request to manage XMLHTTPRequest
  • automatically updating pages with Ajax.Updater
  • polling with PeriodicalExecuter
  • managing forms with Form.serialize
  • responding to inputs with Event.observe
  • simplifying DOM updates with Insertion

But there's more! Prototype exemplifies modern JavaScript coding style. You will see how to take advantage of "Prototype as JavaScript++" by

  • using JSON for parameter passing
  • defining classes with Class.create and Object.extend
  • using Ruby-inspired extensions to the JavaScript object model, such as Array.each



Spring Dependency Injection

close
Stuart Halloway

By Stuart Halloway

Dependency Injection (DI) is the cornerstone of Spring. The core concept is quite simple, but (surprise!) actual practice can become complex. To take full advantage of Spring DI, you need to understand not only the basics on configuration, but also the container lifecycle model and the various hooks provided by the framework.

Topics will include

  • The difference between DI and Continuous Integration
  • Setter Injection
  • Constructor Injection
  • Factory Injection
  • Bean lifecycle
  • Method Injection
  • Using the ApplicationContext
  • Custom PropertyEditors



Spring Security with ACEGI

close
Stuart Halloway

By Stuart Halloway

Spring offers developers a simpler, more robust method for configuring applications. These benefits extend to security through the ACEGI framework. ACEGI makes the otherwise daunting task of securing your application logical and straightforward. More importantly, through its support for single sign-on provision through Yale's CAS system and its ability to provide instance-level authorization, Spring extends the common security model of most J2EE apps beyond what they are traditionally capable of.

In this session, we'll explore:

• configuring ACEGI to authorize against an in-memory user list, a database, and a JAAS login module • page level authorization • method level authorization • instance level authorization • forcing HTTPS connections to secured sites • impersonation using the RunAsManager



JRuby

close
Stuart Halloway

By Stuart Halloway

JRuby is not one, but two great technologies: the Ruby language, and the Java Virtual Machine and libraries. In this talk you will learn the basics of programming JRuby, and how to integrate JRuby code into existing Java projects.

JRuby provides a very powerful development platform: the expressiveness and beauty of the Ruby language, with full access to the huge and powerful world of Java libraries. In this talk you will learn to use JRuby as your glue to assemble applications from Java components.

We'll start with how to call Java from Ruby. You will see how to use the high-level API, which provides proxies for Java objects. You will also see how to use the low-level API, where you can get total control via Java reflection.

Next, we'll look at some things you might want to do with JRuby: testing Java code with Test::Unit, automating development processes with Rake, and wrapping useful Java APIs. Oh, and of course, we'll build a Ruby on Rails on Java application.

Finally, we will look at the architecture of JRuby. This is useful so that you can understand what capabilities (and limitations) JRuby has today, and how these are likely to change in the future.



Spring AOP

close
Stuart Halloway

By Stuart Halloway

Learn to use Spring AOP, aspect injection. and AspectJ integration

Spring provides powerful support for Aspect-Oriented Programming (AOP), via

  • Spring Advisors
  • Dependency Injection for Aspects
  • Integration with AspectJ
In this session you will learn to use Spring AOP in real-world settings. We'll start with the basics of programmatic pointcuts, advice, and joint points. Then, we'll integrate these into the application Spring-style, using Dependency Injection.

With the basics out of the way, we'll move to meatier questions, including:

  • How (and when) should I step up to AspectJ?
  • How are Aspects implemented, and what are the performance implications?
  • What are the alternatives to Aspects?

Attendees will get more out of this presentation if they have a basic knowledge of Spring and Dependency Injection.



Creating, Telling, and Tracking User Stories

close
David Hussman

By David Hussman

The participants of this session will become agile customers and product owners, using personas to create stories for a sample product development.

The questions around user stories are many, and the list grows larger as their popularity of increases. Many organizations are on their path to adopting stories as requirements vehicles, possibly struggling with story writing as well as finding a way to fit them into their organization. Along with writing stories, this session will cover connecting with product owners and a short review of several tools for tracking and managing user stories.



“Show Me the Numbers” - Agile Planning Tools and Techniques

close
David Hussman

By David Hussman

This session will focus on tools and techniques for tracking an agile project plan from creation to project completion.

As agile grows, so too do the questions for how to track and communicate progress within the project community as well as to upper management and others interested in progress. We will create a simple plan in a planning tool, and run a mock project, showing how to estimate and use agile planning to communicating progress, addressing missed estimates, scope modifications, and more.



Ready, Set, Agile?

close
David Hussman

By David Hussman

As with many methodologies, moving agile into an organizations poses larger challenges. Before jumping in, it helps to ask a few questions before "racing toward agility". This session will provide 3 tactical steps that can help your adoption of agile.

There are many factors outside the developer world that can crash all the benefits of agile without regard to its success. This session will provide ways to select agile practices, create a transition plan for adopting agile, and bring people together before trying to adopt new techiniques that are part of agile development. Various tools and techniques will be discussed, and at least part of the session will include Q/A for the presenter to field specific questions about your organization.



Automating Business Value with FIT and FitNesse

close
David Hussman

By David Hussman

The presentation will briefly discuss stories, the origin and authoring of story tests, and a demonstration of how FIT and FitNesse (FIT living within a Wiki) can be used to automate acceptance tests.

Agile communities consider stories “done” when the acceptance tests (also called story tests) are shown to the customer. Originally, this was a manual process, but in recent years, several frameworks have been created to automate this process, providing acceptance testing all the benefits of automated unit testing. One of the most popular of these if called FIT, created by Ward Cunningham.



Losing Battles and Winning Wars: Adopting Agile

close
David Hussman

By David Hussman

Adopting agile is different for each company, but most companies will go through some amount of change during the adoption of agile.

This session will discuss some of the most common difficulties for adopting agile and provide various plans of attack. The session will start with a listing of issues for the session participants, and some portion of the session will be dedicated to an open forum where the presenter will address the issues collected.



Effective Hibernate

close
Scott Leberknight

By Scott Leberknight

Hibernate seems simple on the surface yet when you go beyond very simple use cases it can become much more complex. Intended for beginner to intermediate-level Hibernate developers, come see how to put Hibernate to effective use on your projects.

Hibernate is only part of an overall application architecture. This session shows ways to use Hibernate effectively including creating rich domain models, managing sessions and transactions, querying for objects, using interceptors and the event model, and handling lazy-loading. We'll also cover using Hibernate annotations instead of XML mapping files and the notion of application transactions.



Spring/Hibernate Integration Basics

close
Scott Leberknight

By Scott Leberknight

Hibernate is a very popular Java transparent persistence framework, but you often need to create additional infrastructure to manage sessions, transactions, and lazy-loading in a clean and elegant manner. See how Spring can help.

This session shows you the benefits of using Spring's integration with Hibernate to simplify and in many cases remove the need to write repetitive and tedious code for tasks like setting up session factories, creating sessions, committing or rolling back transactions, handling exceptions, and lazy-loading. You also learn how Spring makes your data access code much simpler and easier to unit test. Intended for developers who have used Hibernate and want to know what benefits the Spring integration provides.



Spring/Hibernate Integration Patterns, Idioms, and Pitfalls

close
Scott Leberknight

By Scott Leberknight

Using Spring's Hibernate integration significantly simplifies applications that use Hibernate for data persistence by removing tedious and repetitive infrastructural code that you need to write. Intended for developers familiar with Spring/Hibernate integration basics, who want to learn additional idioms and solutions to common problems.

Learn best practices and the various alternatives available to you when using the Spring/Hibernate integration including Hibernate mapping strategies, session factory configuration, DAO and business service implementation, programmatic and declarative transaction management, unit and integration testing, and dealing with Hibernate lazy-loading.



TDD/BDD and EAI: Unit Tests in a Middleware Tool

close
Rebecca Parsons

By Rebecca Parsons

There are many well known tools and approaches in the Java and C# world for unit testing and Test Driven Development or Behaviour Driven Development. Extending these concepts in the EAI world is more of a challenge.

This talk briefly introduces both Test Driven and Behaviour Driven Development. We will spend most of the time talking about how to go about testing in an EAI world. Examples will be drawn from an actual project using Tibco Designer.



Enterprise Architecture and Agile: They Aren't Mutually Exclusive

close
Rebecca Parsons

By Rebecca Parsons

Agile development is often talked about in terms of small teams of developers creating massive amounts of code. Such scenarios strike fear into the hearts of "Enterprise Architects". This talk addresses the issues of how agile development and enterprise architecture can not only co-exist with but participate in an agile development effort.

Issues such as roles, how architecture requirements can become stories and functional tests, and different models of assimilation are described.



SOA for Developers

close
Burr Sutter

By Burr Sutter

The focus of this session will be to demonstrate innovative open source technologies and give you an insight into the skills, tools and techniques for SOA-enabling your enterprise architecture.

This session will be taught via lecture as well as interesting live demonstrations (e.g. .NET linking to Java-based Rules engine) on various SOA related technologies such as ESB, BPEL and Web Services. This session also includes a number of interesting data points that I have collected from meeting with senior architecture teams from numerous large IT organizations.



What's New in Spring 2

close
Bruce Tate

By Bruce Tate

In this session, we'll review the new features of Spring 2.0. If you've been using Spring 1.x, you'll want to hear about the improvements.

This material comes directly from Interface21. The SpringFramework version 2.0 brings tremendous maturity to one of the most successful Java projects of our time. In this session, you'll see

  • Radical improvements in the simplicity of context definitions
  • Much better AspectJ integration
  • Unified user interface strategies, and the continued emergence of WebFlow.


Where Agile meets Argyle: New processes in established companies

close
Bruce Tate

By Bruce Tate

Agile programming is a collection of core principles and techniques that allow software developers to create lighter, more responsive applications, and to have fun doing it. Many established organizations are either openly or sub-conciously hostile to many of the principles of Agile development.

We'll explore the intersection of these new practices and old-world sensibilities, relying on real-world case studies to illustrate some of the compromises that are necessary to bridge the gap. In addition to technical and process aspects, we'll also spend some time talking about the business aspects, such as how Agile development affects contracts.



Three Technologies to Watch

close
Bruce Tate

By Bruce Tate

The state of the art is progressing rapidly, and dynamic languages are driving the revolution. Find out about these topics that will be central to programming. We'll discuss continuation servers, metaprogramming frameworks and functional langauges.

Seaside provides a much richer web development experience than you can find in Java today. Learn how continuations can radically improve your web development experience, and learn what Java frameworks are doing about it.

The programming world is abuzz over the Rails framework, but how many of the ideas are exclusive to Rails? We'll look at Active Record, and discover the fundamental innovations that let it happen. What improvements might be made by Java persistence frameworks, and where does Active Record come up short?

Concurrent programming will come to a head with the introduction of multiprocessor systems. We'll discover just how broken conventional langauges are. Also, see how functional languages solve this problem.



Effective Teams

close
Bruce Tate

By Bruce Tate

Most conferences will try to tell you that the secret to good software development lies with a process, or a technology, or an architecture. Here's a dirty little secret. You can build working software with an outdated two tier archtiecture, a waterfall process and COBOL. How? By building a great team. These techniques were used to build one of the most unique and complex up and coming Ruby on Rails sites.

By far, the biggest factor in the success or failure of a software project is the quality of your team. Build a great team first, and great software will follow. In this session, we'll explore ways to build effective teams for modern software development. Whether you're a project manager or a technical lead, you need to know how to build the most effective team possible. In this session, we'll look at all aspects of team building, including

  • What team sizes are optimal for software projects?
  • What tools can help your team communicate?
  • How does development process come into play?
  • How do you build better software faster?


Java/Ruby Integration with JRuby and ReST

close
Bruce Tate

By Bruce Tate

You can have rapid web development with Rails without losing access to your critical Java code. With the explosion of the Ruby programming language, more developers will need a strategy for letting Java and Ruby interoperate. This session explores two strategies: JRuby and Rails-based web services.

Both Java and Ruby do certain things well. Ruby tends to build web based user interfaces, complete with AJAX integration, very quickly. Java has thousands of libraries and millions of lines of legacy code. How can you combine the two? We'll explore three approaches.

An ambitious integration framework is also under development. The JRuby project recognizes the value of the best possible integration between Java and Ruby. As of today, 90% of the test cases for the Ruby language are passing for JRuby. How much is possible, and what's missing?

Finally, closures and a fantastic XML API make Ruby a fantastic framework for doing integration work with web services. Often, coarse grained integration is enough.

Come learn how to have your cake and eat it too.



Get Rich Now - Selecting Rich Client Technologies

close
Vladimir Vivien

By Vladimir Vivien

There is a new equilibrium shift taking place between server-hosted and client-hosted applications where more code being sent to the client for execution. Today Java developers have more view technology options available than ever before including browser-based AJAX, Open Laszlo, Adobe Flex, and Mozilla XUL. This session explores these options to help you select the next one for your project.

This presentation explores web-based rich client technology options that are gaining momentum. As a developer, manager, or architect you need to know the differences and nuances between these technologies to effectively select the proper platform. The session compares several rich client technologies including AJAX frameworks, Flash-based frameworks (Open LaszLo and Flex), and Mozilla XUL as vehicles to deliver your next rich client application.



Developing Manageable Component-Based Systems with JMX and Spring

close
Vladimir Vivien

By Vladimir Vivien

JMX (or Java Management Extension) facilitates the manageability of components hosted in the VM. While JMX has been available to developers prior to the latest version of Java, it has now been added as a standard API to Java 5. This session provides techniques and best practices for developing your own managed components using JMX and the Spring Framework.

Java 5 has made it easy to incorporate manageability into any application hosted on a VM. In this session, we explore how to create highly decoupled components that are managed using JMX and wired within the context of a Spring application. This session also provides best practices for injecting management lifecycle concerns into your object graph without bleeding into business domain. The presentation discusses three areas where you can leverage JMX including Monitoring, Control, and Runtime Configuration.