Central Florida Software Symposium

June 2 - 4, 2006 - Orlando, FL


Sheraton Studio City Hotel
5905 International Drive
Orlando, FL   32819
Map »

NOTE: You are viewing details about a past event. View our upcoming event schedule here ».

Session Schedule

We are committed to hype-free technical training for developers, architects, and technical managers. We offer over 44 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 - June 2


  1 2 3 4
12:00 - 1:00 PM REGISTRATION
1:00 - 1:15 PM WELCOME
1:15 - 2:45 PM

Spring Fundamentals

Stuart Halloway
2:45 - 3:15 PM BREAK
3:15 - 4:45 PM

Effective Teams

Bruce Tate

Naked Objects Applied

Eitan Suez
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM

Hibernate by Example

Eitan Suez

Politics of Persistence

Bruce Tate

Spring Security with ACEGI

Stuart Halloway
6:30 - 7:15 PM DINNER
7:15 - 8:00 PM Keynote

Saturday - June 3


  1 2 3 4
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

Groovy for Java Programmers

Venkat Subramaniam

JavaScript for Java Programmers

Stuart Halloway
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

Introduction to Tapestry

Neal Ford

Three Technologies to Watch

Bruce Tate

Get Groovier with Grails

Venkat Subramaniam
12:30 - 1:30 PM LUNCH
1:30 - 3:00 PM

Practices of an Agile Developer

Venkat Subramaniam

Testing with Selenium

Neal Ford
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM

The State of AOP

Ramnivas Laddad

Creating Polished Swing Applications

Scott Delap

Advanced Hibernate

Stuart Halloway
4:45 - 5:30 PM BIRDS OF A FEATHER SESSIONS

Sunday - June 4


  1 2 3 4
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

Real-world Agile Development

Neal Ford

Evaluating Open Source Solutions

Ian Roughley

Applied Object-Oriented Metrics

Brian Sletten

Testing Strategies for Web Applications

Ramnivas Laddad
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

Advanced Enterprise Debugging Techniques

Neal Ford

Applied Design Patterns

Brian Sletten

Ajax, Flash, and Java - Choosing The Right Rich Client Technology for Your Next Project

Scott Delap

Spring AOP in Depth

Ramnivas Laddad
12:30 - 1:15 PM LUNCH
1:15 - 2:00 PM EXPERT PANEL DISCUSSION
2:00 - 3:30 PM

8 Steps to Struts2

Ian Roughley

Performance Monitoring in J2EE Applications

Ramnivas Laddad
3:30 - 3:45 PM BREAK
3:45 - 5:15 PM

Introducing the Semantic Web

Brian Sletten

Code Coverage: A Guardian of Quality

Ian Roughley

Web Application Security Vulnerabilities

Neal Ford

Enterprise AOP with AspectJ

Ramnivas Laddad

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


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


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


Real-world Agile Development

close
Neal Ford

By Neal Ford

Lots of developers want to use Agile development technique but don't know where to start. This session discusses how to get started with Agility, the key benefits you can expect, and the pitfalls to avoid.

There's the perfect world, and then there's the world you have to live in. Lots of organizations would like to reap the benefits of Agile development techniques but don't know how to get started. This session discusses the key benefits you can derive from Agile software development so that you can decide for yourself how many agile techniques will work within your organization. I discuss project planning and estimation, how to benefit from pair programming when you aren't allowed to pair, how to measure your progress, and other project milestones. Agile software development isn't just an unrelated set of activities, it is a discipline. Once you understand the component parts of the discipline, you can apply them to your less-than-perfect world.

Key Session Points

  • What makes Agile tick?
  • Flavors of agility
  • Selectively applying agile practices
  • Enforcing code quality
  • Measuring progress
  • Iterating over the waterfall
  • Lessons learned


Advanced Enterprise Debugging Techniques

close
Neal Ford

By Neal Ford

This session discusses techniques and tools for debugging enterprise applications (without using System.out.println()!)

It's an interesting dilemma – we have the best tools for software development ever, yet developers are still debugging enterprise applications using ystem.out.println()! This session discusses techniques and tools for debugging enterprise applications. It shows how to perform remote debugging through all the major IDEs, either on the same machine or across a network. It also shows how to debug using the command-line jdb debugger (the only one guaranteed to always be available).This session shows how to debug web, EJB, and lightweight enterprise applications. It discusses class loaders, interactive enterprise debugging with Groovy, and how to automate repetitive tasks using JWebUnit and Selenium, making the computer do work for you instead of vice versa (how many times do you have to walk multiple pages through a web application to get to the point where you can debug it?). This session shows you how to automate these and other common debugging tasks. The goal is to make hunting and eliminating bugs in complex applications much easier.

Key Session Points: • Setting up remote debugging in IDE's    o Eclipse    o IntelliJ • Effective remote debugging • When it's all you've got: jdb and enterprise applications • Forensic debugging using loggers • Debugging web applications    o Inspector    o Bookmarklets • Debugging EJB • Debugging in lightweight frameworks • Interactive Debugging with Groovy • Automating debugging tasks    o JWebUnit    o Selenium



SOA: Next Wave of Enterprise Development or Return of the Son of CORBA?

close
Neal Ford

By Neal Ford

Is Service Oriented Architecture the next wave of distributed computing or just the same old crap in a shiny new package? This session provides an overview of what most people agree is the definition of SOA. I talk about SOA, ESB, CORBA, your MOM, and a bunch of other acronyms.

This session is a pragmatic look at SOA from a developer perspective, including such (never talked about) topics like tranports, granularity, versioning services, transformations, and whether you should be doing this or not. I show lots of slides with diagrams and talk about how to evolve towards an SOA. SOA can work if you ignore the hype and focus on the real meat: building loosely coupled message-based applications. This session discusses just that.



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


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



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.



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.



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.



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.



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.



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



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.



Ajax, Flash, and Java - Choosing The Right Rich Client Technology for Your Next Project

close
Scott Delap

By Scott Delap

Today's users are beginning to demand richer and richer application experiences. Plain html pages simply don't cut it anymore. Applications like Google Maps (Ajax) and Yahoo Maps (Flash) show how the UI experience can be pushed to the next level. As an IT manager, how do you decide which route to take however? Should you use Ajax because it is the new "it" technology. Is Flash a viable option with its 95%+ browser availability? Perhaps Java deployed through web start is really the best choice in contrast to what the buzz would lead you to believe. This presentation takes a look at these three core rich client technologies from both deployment/user experience and ease of development perspectives.

Today's users are beginning to demand richer and richer application experiences. Plain html pages simply don't cut it anymore. Applications like Google Maps (Ajax) and Yahoo Maps (Flash) show how the UI experience can be pushed to the next level. As an IT manager, how do you decide which route to take however? Should you use Ajax because it is the new "it" technology. Is Flash a viable option with its 95%+ browser availability? Perhaps Java deployed through web start is really the best choice in contrast to what the buzz would lead you to believe. This presentation takes a look at these three core rich client technologies from both deployment/user experience and ease of development perspectives.

Meet the Players Java Swing Swt Example Apps Ajax Ajax 101 Example Apps Flash Flash 2006 Laszlo Flex Example Apps User Experience Java Ajax Browser Issues Back/Forward Hyperlinks Flash Deployment Java Web Start Ajax Cross Browser Issues Flash Development Java Tool Support Http Invocation UI Libraries Swing Swt Ajax XMLHttpRequest XML DOM's Javascript Can Struts Developer's Get This? Flash Laszlo Flex Playing Nice in the Browser Conclusions Applications that Work Well with Java Applications that Work Well with Ajax Applications that Work Well with Flash



Spring Fundamentals

close
Stuart Halloway

By Stuart Halloway

The Spring framework is one of the fastest growing open source frameworks. New job postings are gaining rapidly, and many customers are adopting Spring instead of heavier alternatives. In this session, we’ll introduce Spring. You’ll see how Spring can give you much of the power of EJB, without the complexity or pain.

Spring uses concepts like dependency injection and aspect oriented programming to ease standard enterprise development. Spring developers write plain, ordinary Java objects (POJOs), instead of sophisticated components. In this session, you’ll see a basic Spring application. You’ll also see some details about some of the enterprise integration strategies, including:

• Spring AOP • Transactions • Persistence • Model/view/controller

When the session is over, you won’t be an expert, but you should have a much clearer understanding of what Spring does, what it doesn’t do, and why it’s growing so rapidly.



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



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.



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.



Programming Java Concurrency

close
Stuart Halloway

By Stuart Halloway

Java has always provided a model for concurrency and threads. With Java 1.5, this model received a major facelift. Learn how to use the new concurrency utilities to build responsive, scalable, and correct concurrent applications.

Java's support for threads is broad and deep. From the early days of the platform, programmers have used threads, synchronized blocks, and monitors to build safe multi-threaded applications. Java 1.5's new concurrency utilities greatly reduce the need to use these primitives directly. Now, Java provides a set of lock classes and task scheduling tools that provide much more leverage in writing real applications. We'll explore java.util.concurrent, and also see how the Java Memory Model has been corrected in 1.5.

Most of the advantages of java.util.concurrent can also be had in previous version of Java. We'll discuss Doug Lea's concurrency utilities and the backport of java.util.concurrent to 1.4. Both of these are appropriate for production use.

Finally, we'll look at common mistakes in multi-threaded programming. The most common mistake is using threads when you don't need them. We'll look at alternatives to threads, and how to choose between them.



Advanced Hibernate

close
Stuart Halloway

By Stuart Halloway

Hibernate is easy to get started with, but can sometimes be hard to make efficient or secure. In fact, the default settings for Hibernate createapplications that will run slowly, cause unwanted round trips to the database, and may be more restrictive and/or permissive from a security standpointthan you would otherwise want.

This session will show advanced techniques for tuning performance, including: • advanced collection mapping strategies • lazy loading • cascading update management • lifecycle management • Hibernate's interceptor layer In addition, we'll examine the security considerations when using Hibernate. Often, single-credential data access isn't enough for sensitive data. We'll walk through using per-user credentials for data access, logging security information about and through Hibernate, and accessing data sources through secure application servers.



The State of AOP

close
Ramnivas Laddad

By Ramnivas Laddad

A lot is happening in the field of Aspect-oriented programming (AOP). AspectJ and AspectWerkz, the two leading AOP implementations, have merged, bringing in their respective strengths. The merged version, AspectJ 5, adds many new features aimed at simplifying writing and deploying aspects. The new features include an annotation-based and XML-based syntax to define aspects, support for new Java 5 concepts, and load-time weaving. The tools support for AOP continues to improve, as well. Further, the most popular IOC framework, Spring, enables integrating aspects written in AspectJ. There is also serious discussion and preliminary work going on to support AOP right into the VM itself. All in all, there is a lot to learn about the changes in the exciting field of AOP. This session is designed to help you get up to date with all these changes.

This session provides a guided tour of the new things in the AOP world. It explains new features in AspectJ along with the practical considerations in utilizing each of them. The presentation explores the fundamental synergy between AOP and metadata to understand right (and wrong) utilization of metadata-based crosscutting. Load-time weaving (LTW) enables adding aspects to your existing applications deployed in any application server with a minimal effort. The presentation shows how to utilize LTW to improve your productivity considerably, even if you don't yet subscribe to the AOP philosophy and don't want to use AOP in production. The presentation also demos the latest AspectJ Development Tool (AJDT) in Eclipse (that has improved a lot) to make Java developers feel home when developing with aspects. The presentation includes many demos to reinforce the concepts learned, as well as give a feel for what it would be like to apply aspects written using new features.

This session is particularly targeted at developers with good familiarity with AOP concepts and the AspectJ language. It is recommended to attend the “Introduction to Aspect-oriented programming with AspectJ” session or read articles and/or books that introduce AOP and AspectJ to obtain the prerequisite.



Testing Strategies for Web Applications

close
Ramnivas Laddad

By Ramnivas Laddad

Ever wondered if you can automate testing of your web application, but couldn't produce a satisfactory solution? If so, this is the session for you! Attend this session to understand the alternatives you have for unit and functional testing of web applications.

Testing a web application is a complex task. You must not only ensure that each unit is working as expected, but also ensure that your application works correctly on all target browsers and operating systems. The sad fact is that not all browsers behave in the expected, standards-compliant manner. Performing all tests manually is not only cumbersome, but also error-prone and expensive. This necessitates automated testing of the application inside all relevant browsers. With the increasing use of Javascript and AJAX, automated functional testing is becoming even more important.

This presentation will show strategies for testing web applications. It will cover both unit testing as well as functional testing. For unit testing, it will discuss the mock object approach. Since unit testing is necessary, but not sufficient, the presentation will discuss tools available for functional testing. It will also study a specific tool -- Selenium -- that simplifies functional testing. During this session, we will do live coding to solidify the concepts learned.



Spring AOP in Depth

close
Ramnivas Laddad

By Ramnivas Laddad

Support for aspect-oriented programming is an important part of the Spring framework. It is the AOP support that allows keeping implementation of functionality such as transaction management and security out of your POJOs. While many developers only use aspects provided with Spring, once you understand how it all works, you can make a better use of those aspects, extend them, and write brand new aspects.

This session focuses on Spring AOP implementation. We cover topics such as Advice, Pointcuts, Advisors, proxy configuration, proxy factory bean, the autoproxy mechanisms, and the introduction mechanism. We will also examine many aspects shipped with the framework itself. While Spring’s AOP solution is sufficient in a typical enterprise application, there are situations where we need more full-fledged AOP support. Therefore, we will discuss using AspectJ with Spring and how to leverage the dependency injection mechanism with AspectJ aspects.

This session is targeted for enterprise application developers who want to gain in-depth understanding of Spring's AOP feature. After attending this session you will gain a solid understanding of Spring AOP, standard aspects shipped with the framework itself, and how to write new aspects. Some familiarity with the Spring framework, gained by attending other Spring talks or reading about Spring, is recommended.



Performance Monitoring in J2EE Applications

close
Ramnivas Laddad

By Ramnivas Laddad

J2EE has become the main new platform for enterprise application deployment. Good performance is an important business requirement. Supporting this requirement needs application profiling during the development phases and performance monitoring after application deployment. Come to this session to understand challenges and choices in monitoring J2EE applications.

Performance monitoring solutions must work under constraints imposed by the environment. Further, they must balance conflicting requirements such as overhead vs. richness of information. All of these need careful understanding of both requirements and solutions as well as the costs of any tradeoff decisions.

This session presents various tools and techniques available for monitoring J2EE applications. We will consider requirements of performance monitoring solutions in different scenarios. We will also discuss underlying enabling technologies such as Java Virtual Machine Profiling Interface (JVMPI), Java Virtual Machine Tool Interface (JVMTI), JFluid, JMX, design patterns, and aspect-oriented programming (AOP). During the session, we will demonstrate many of the tools and technologies discussed.



Enterprise AOP with AspectJ

close
Ramnivas Laddad

By Ramnivas Laddad

Enterprise application development is a gold mine for applications of AOP. There are many crosscutting concerns found in a typical enterprise application, ranging from well-known security and transaction management to application- and technology-specific concerns. Using AOP leads to implementations that are easy to understand and easy to change.

This session shows how to address common problems faced by typical enterprise applications, with a focus on web applications using AOP. It will present examples of applying aspects to persistence, business, and web layer. It will show how to apply aspects synergistically with technologies such as Hibernate, JAAS, JMX and Spring. Many of the examples include reusable portions enabling them to be readily used in your own application.

This session is targeted at developers with familiarity with AOP and enterprise applications. It is recommended to attend the “Introduction to AOP with AspectJ” session or read articles and/or books that introduce AOP and AspectJ prior to attending this session.



Evaluating Open Source Solutions

close
Ian Roughley

By Ian Roughley

Many companies and most, if not all, software today utilizes open source. Whether it is databases, application servers, frameworks or libraries, these projects are fast becoming a standard commodity for building business-related functionality upon and speeding up development time. Sometimes technology evaluations are done, but frequently the library is simply slipped into the code base to address an urgent requirement - often without evaluating the technology beyond the immediate need.

In this talk I will address this and many other facets that need to be considered when utilizing open source in your project – how open source evaluation should be different from other product evaluation; guidelines for implementing corporate procedures; the benefits of companies contributing back into the open source community; and legal aspects that every developer should be aware of.



8 Steps to Struts2

close
Ian Roughley

By Ian Roughley

This presentation introduces the features of Struts2, and the framework differences between it and Struts, by iteratively migrating a simple application in 8 steps.

The presentation covers topics including running Struts and Struts2 in the same web application, configuration differences, Struts2 Tags, dependency injection, interceptors, validation, using models and data conversion.



Code Coverage: A Guardian of Quality

close
Ian Roughley

By Ian Roughley

Code coverage is generally viewed as a metrics that managers use to chart progress, a number that has to be blindly attained. In this talk we discuss everything that you, the developer, need to know to make it more than a number and part of a process that will improve code quality.

We will cover what code coverage is and what it can do for you; how it can be incorporated into your development and build processes; and how to interpret the results. Finally, alternate usage scenarios will be discussed that will help you better understand the application you are building.



XML Data Binding with JiBX

close
Eitan Suez

By Eitan Suez

JiBX is an open source XML data binding API for Java. JiBX is younger than most other APIs in this space (Castor XML, BEA XMLBeans, JAXB). JiBX's philosophy on data binding is that: [a] databinding should be fast, and [b] databinding frameworks should allow for the divergence and evolution of your codebase from its xml representation. JiBX excels on both counts and consequently is a practical tool for the purpose of data binding. In this session, Eitan will be covering all aspects of Dennis Sosnoski's JiBX framework.

Session Goals: To learn the JiBX API in detail. JiBX can considerably simplify the task of parsing XML content into business objects and generating XML representations of these business objects.

Prerequisites: Basic understanding of XML, but not of any of the variety of standards that build upon that foundation. Basic understanding of the Java programming language.

Session Rating: Intermediate

Category: XML/Web Services



Naked Objects Applied

close
Eitan Suez

By Eitan Suez

Join Eitan in this hands-on session on Naked Objects. This session uses the "learning by doing" approach to learning an API or framework. Naked Objects is a powerful tool that can give you a significant advantage in the development of business systems. It gives you the ability to prototype a software application so quickly that it can be performed during information gathering phases of a project. It gives you the power to codevelop the core business model of your application with a non-developer business expert at your side. No prerequisite knowledge of Naked Objects is required.

Session Goals: To learn to write software applications (possibly system prototypes) using the NakedObjects framework. Developing applications that use NakedObjects requires knowledge of the conventions and contract of this framework. NakedObjects is a fairly radical development in the domain of business software application development. Awareness of the concepts and implications of expressive systems is an important secondary goal.

Prerequisites: Basic understanding of the Java programming language and of object-oriented programming and design. Familiarity in the domain of business application software development.

Session Rating: Intermediate

Category: Architecture



Hibernate by Example

close
Eitan Suez

By Eitan Suez

This talk covers the core of the Hibernate Object/Relational Mapping framework by example; that is: in a hands-on manner.

What does this mean? Two things: 1. Rather than spending 1.5 hours going from slide to slide, passively covering various aspects of the Hibernate framework, you'll be actively building a sample application, modeling, persisting, querying information using Hibernate 3.1 2. Hibernate today is a mature and rich framework consisting of many features. Discussion of features outside of the Hibernate "Core" will be sacrificed for the sake of presenting Hibernate in an active, "by example" style.

No a-priori knowledge of Hibernate is assumed. We'll cover the basics of Hibernate v3.1, XML mappings, the Hibernate Query Language (HQL), the Criteria API, custom UserType's, Components, and more! (This talk does not discuss auxiliary topics such as the EJB 3 persistence API, Annotations, or integrating Hibernate in managed (J2EE) environments).



All Roads Lead to.. AOP?

close
Eitan Suez

By Eitan Suez

An exercise in refactoring, playing with Java 5 annotations, varargs, JUnit, and more (see detail description for more).

This talk is a little story. It begins, innocently enough, with a speaker's dilemma: how to give an effective talk on Hibernate? The speaker quickly realizes that to he's going to have to automate some of the associated configuration and setup code. There's an interesting refactoring hurdle along the way, whereby the author:

[a] dreams he could be writing the code in JavaScript [b] tries out the Spring Framework's medicine for Hibernate [c] ends up simply using JUnit [d] gets inspired and writes his own mechanism to resolve the situation [e] finally, looks towards the future with a sigh, and thinks "AOP"

An exercise in refactoring, playing with Java 5 annotations, varargs, JUnit, and more.



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.



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?


Politics of Persistence

close
Bruce Tate

By Bruce Tate

This session will help a Java developer choose a persistence framework. After the session, you will • Understand the core strengths and weaknesses of the main persistence frameworks in the Java space • Understand where marketing influences can impact persistence • Know what’s going on behind the scenes to impact the persistence pictures • Answer questions about persistence frameworks that might not be mainstream

This free-form session is intended to help attendees choose or validate a persistence framework. In it, the instructor will take questions from the audience, and tailor the session to the questions asked. Bruce will focus on three persistence frameworks: EJB, JDO and Hibernate. He’ll talk about the evolution of each of the frameworks. He’ll talk about the fundamental design philosophies of each, and what makes each unique and strong.

But understanding technical strengths is not enough in the area of persistence. To make the best possible choice, a developer or architect must also understand the politics of persistence, and the marketing pressures that lead to the success or failure of each framework. The proposed common standard across JDO and EJB will get special consideration.

This format has been very popular among nofluffjuststuff attendees. It’s highly tailored to each audience, but still flows with good structure. When the session is over, you’ll have a better understanding of the major persistence frameworks in the Java space, and what makes each valuable. You’ll also understand how much of a role market share and technology play in the success or failure of a persistence framework.



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.


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.