NFJS eXchange 2007

August 29 - 31, 2007 - London, England


London Marriott Hotel Grosvenor Square
Grosvenor Square
London,   W1K 6JP
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 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.

Thursday - August 30


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

Apache Axis2 for Developers

Paul Fremantle
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

FP for Java Programmers

Venkat Subramaniam

Regular Expressions in Java

Neal Ford

RAD JSF with Seam, Facelets, and Ajax4jsf, Part Two

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

Exploring Terracotta : JVM clustering in the real world

Geert Bevin

Spring 2.0: New and Noteworthy

Ben Hale
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM

Cutting-edge productivity with RIFE and Web Continuations

Geert Bevin

Spring and Hibernate in the Middle Tier

Ben Hale

The Google Web Toolkit, Part Two

David Geary
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM Keynote: Software "Engineering" & Polyglot Programming by Neal Ford
6:30 - 8:00 PM DINNER BREAK
8:00 - 9:30 PM BIRDS OF A FEATHER SESSIONS
9:30 - 10:30 PM NFJS eXchange Party

Friday - August 31


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

AOP and JMX: A match made in heaven

Ben Hale
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

Flooring the flaws: The top ten bottomed out

Mark Goodwin

Spring Web Flow Jumpstart

Ben Hale

Code Metrics & Analysis for Agile Projects

Neal Ford
12:30 - 1:15 PM LUNCH
1:15 - 2:15 PM EXPERT PANEL DISCUSSION
2:15 - 3:45 PM

Applied AOP

Brian Sletten

The Busy Java Developer's Guide to Debugging

Ted Neward

Hands On DWR

Joe Walker

Programming with Mock objects

Venkat Subramaniam
3:45 - 4:00 PM BREAK
4:00 - 5:30 PM

Rails for JRuby

Neal Ford

The Busy Java Developer's Guide to Rules and Rules Engines Using JESS

Ted Neward

Practices of an Agile Developer

Venkat Subramaniam

The Productive Programmer: Practice (10 Ways to Improve Your Code)

close
Neal Ford

By Neal Ford

No one writes perfect code: even the best developers fall into bad habits and traps. These topics from The Productive Programmer illustrate blind spots and helps you write better code.

It is too easy to get into a coding slump and not realize it. This talk revitalizes your relationship to code, forcing you to rethink some of the thing that you take for granted and showing new approaches to solving hard problems. It covers topics that range from improve the overall structure of your code to the way you write JavaBeans, with lots of examples. Everything in this talk may not be new to you, but I guarantee that you'll see some things that will make you reevaluate the way you think about your code.

Session Outline:

  1. TDD
  2. Static Analysis
  3. Good Citizenship
    • getters and setters
    • Constructors
    • Static State
  4. YAGNI
  5. Occam and His Razor
  6. Question Authority
    • DSLs
    • JavaBean Specification
  7. SLAP
  8. New Languages
  9. Every Nuance
  10. Anti-objects



Implementing SOA

close
Neal Ford

By Neal Ford

This talk avoids SOA hype and gets to the meat of the matter: how do you implement a Service-Oriented Architecture, what are the technological pitfalls, how do you test it, and what traps should you avoid. No marketecture: just implementation details.

No subject has been subject to more recent hype than Service-Oriented Architecture (I think it was because of a really good article in an in-flight magazine). For whatever the reason, the CxO has decided that we need one. It's up to you to implement it. This session is all about the technical considerations required to implement a service oriented architecture. It discusses technology choices, what is in (and out) of SOA's scope, how to implement transformations, routing, and other key services, how to version endpoints, and finally testing and debugging SOA. This session is marketecture free: it covers the details you need to implement this style of architecture.

Session Topics:

  • What SOA means to those who must implement it
  • Technology choices
  • Routing
  • The WS deathstar
  • MOM
  • Implementing transformations
  • Versioning services
  • Testing SOA
  • Debugging SOA implementations



Agile Project Management (With Just a Bit About Mingle)

close
Neal Ford

By Neal Ford

You can read books about Agile projects, but you must consult real-world experience to really understand the dynamics of agile project management. This session discusses agile management topics including estimation, project tracking, and useful metrics (and how to obtain them). And just a little about Mingle, the agile project tracking tool from ThoughtWorks.

OK, sure, you can read the XP Explained book. Now what? Agile project management in the real world requires understanding of not just the practices but why they work. This talk delves into several topics relevant to agile project management, including estimation, project tracking, accurate project metrics (and the practices that make them possible). This talk is designed to describe some of the nuances required to handle real agile projects, along with a demonstration of some of the artifacts ThoughtWorks uses to track projects (the most elaborate spreadsheet you've ever seen!). And, towards the end, I show how our experience has culminated into Mingle, the agile project tracking tool from ThoughtWorks with skinnable religion.



Regular Expressions in Java

close
Neal Ford

By Neal Ford

Regular expressions should be an integral part of every developer?s toolbox, but most don?t realize what an important topic it is. Regular expressions have existed for decades, but many developers don't understand how to take full advantage of this powerful mechanism, either through command line tools and editors or in their development.

This session shows how to fully exploit regular expressions. It begins with the basic premise of how regular expressions work, then shows how to take advantage of the RegEx library built into the Java platform. This session shows how to use wildcards, escape characters, meta-tags, character class operators, look-aheads/look-behinds, and how to use the greedy operators effectively. It covers regular expressions from the beginning through to advanced usage, both in Java and in tools that support regular expressions. This session is packed with real examples of regular expressions (including a game show with no fabulous prizes).

Key Session Points:

  • Regular expressions defined
  • Examples
  • Using the regex classes in Java
  • Regular expression techniques
  • Patterns
  • Groups and subgroups
  • RegEx Game Show!
  • Back references
  • Greedy, reluctant, and possessive qualifiers
  • Lookaheads and lookbehinds
  • Practical regular expressions
  • Best practices
  • Common Regex mistakes



  • Building DSLs in Static and Dynamic Languages

    close
    Neal Ford

    By Neal Ford

    This session discusses building Domain Specific Languages and DSL-style code in Java, Groovy, and Ruby. It discusses the different types of DSLs, details on how to implement them in Java, Groovy, and Ruby, and example problem domains where DSLs make sense.

    You've heard all the hype for the past couple of years: Domain Specific Languages (DSLs) are going to take over the world. This session demystifies this topic in 2 ways: by providing concrete definitions for styles and applicability of DSLs and showing how to implement these different styles. I build up definitions for the different types of DSLs in static (Java) and dynamic (Groovy and Ruby) languages. Then, I discuss building DSLs as internal (i.e., built on top of an underlying language) and external (built using a preprocessor or grammar), with examples of each. Throughout this session, I discuss the applicability of this style of development and show targeted examples. I discuss fluent interfaces and techniques for building them, including problems. Incidentally, I show some cool language features of both Groovy and Ruby that make building DSLs easier in those languages.

    Session Topics:

    • Why DSLs
    • Abstraction
    • Internal vs. External DSLs
    • Fluent Interfaces
    • Building Blocks
    • Internal DSLs
      • In Java
      • In Groovy
      • In Ruby
    • The Stopping Problem
    • Best Practices and Applications



    Keynote: Software "Engineering" & Polyglot Programming

    close
    Neal Ford

    By Neal Ford

    About bridges, languages, engineering, polyglot programming, and the near future.

    Other engineers sneer at us when we call ourselves "Software Engineers", and they have a point. This keynote discusses real comparisons between traditional engineering and the software kind. It also delves into what it will take to make our profession a real engineering discipline and the near future of languages and environments. Come see your future.



    Code Metrics & Analysis for Agile Projects

    close
    Neal Ford

    By Neal Ford

    What does code + methodology have to do with one another? Everything! Agile projects focus on delivering working code, and tools exist to allow you to verify some quality metrics for your code. This session is a survey of tools and metrics that allow you to determine the quality of your code and strategies to "wire it" into your agile project.

    Agile projects focus on delivering code. The responsibility for the quality of that code lies with developers. Yet most developers have a poor sense of how to gauge the quality of code, both during development and forensically. This talk lives on the boundary between what is important in agile projects and ways to verify code quality. It is both a survey of tools and metrics and strategies for proactively applying these techniques to ongoing projects. I talk about the Hawthorne effect, analysis tools (both byte and source code), useful metrics, tools for generating metrics, and how to analyze raw data into actionable tasks.

    Session Topics:

    • The Hawthorne Effect
    • How Agility and Metrics Feed Each Other
    • Analysis Tools
      • FindBugs
      • PMD/CPD
    • Testing Metrics
    • Cyclomatic Complexity
    • Chidamber and Kemerer Object-oriented Metrics
    • JDepend
    • Code Change Risk Analyzer and Predictor for Java
    • Panopticode
    • Tools



    Introduction to JRuby

    close
    Neal Ford

    By Neal Ford

    This session describes JRuby, the 100% pure-Java implementation of the Ruby programming language. It covers the basics of programming with JRuby and examples of how to integrate it into existing Java projects.

    Like hamburger & fries and turkey & dressing, JRuby allows you to harness the awesome power of Ruby in your Java projects. This session describes the origins, capabilities, and limitations of JRuby, the 100% pure-Java implementation of the Ruby programming language. This session also demonstrates some areas where it makes sense to mixin Ruby and Java code: Rails on Java, testing, and dynamic programming. JRuby is a powerful implementation of Polyglot Programming, and this session shows you how to leverage this cutting-edge concept.

    Session Topics:

    • JRuby's origins
    • Calling Java from Ruby
    • Calling Ruby from Java
    • Limitations and pitfalls
    • Example usage
      • Rails on Java
      • Testing
      • Dynamic programming
    • The future



    Rails for JRuby

    close
    Neal Ford

    By Neal Ford

    This session explains all the hype surrounding Ruby on Rails, in a context familiar to Java developers. It covers convention over configuration, ActiveRecord, controllers, views, Ajax, scaffolding, testing, and deployment...on the JVM, using JRuby.

    Find out why everyone won't shut up already about Ruby on Rails! This web framework for Ruby has appeared from nowhere to become the critics darling: there must be good reasons why. This session shows those reasons, in a context familiar to Java developers. It discusses how configuration works in Rails, persistence through ActiveRecord, scaffolding, controllers, views, and Ajax. It also covers the important topic of testing, and how Rails makes it easy and automatic. Finally, this session discusses deployment on the JVM, using JRuby, and reflects back on the important lessons that Rails teaches Java developers. This session also presents information about the boundary between Rails, Ruby, and JRuby.

    Session Topics:

    • Why Ruby? Why Rails?
    • Getting started
    • JRuby and Rails
    • Convention over configuration
    • Scaffolding
    • ActiveRecord: Persistence done right
    • ActionPack
      • Controllers
      • Views
      • Ajax for free
    • Testing
    • Deployment
    • Reflection



    The Busy Java Developer's Guide to Concurrency (Part 2: Concurrency)

    close
    Ted Neward

    By Ted Neward

    Java's threading capabilities have been a part of the Java platform since its inception, yet for many Java developers, using Threads still remain a dark and mysterious art, and synchronization beyond the use of the "synchronized" keyword is almost unknown.

    In this talk, we'll explore the Java "monitor" concept, and how a monitor isn't quite the same thing as a lock from other concurrency systems. We'll see how monitors can be used to perform signalling across threads, and then how the new java.util.concurrent API (introduced in Java 5) can be used to simplify the same sorts of tasks that used to require deep knowledge of the synchronized keyword. Finally, we'll answer that age-old question, "Why did the multithreaded chicken cross the road?"

    Prerequisite: The Busy Java Developer's Guide to Concurrency (Part 1: Threads)



    The Busy Java Developer's Guide to Concurrency (Part 1: Threads)

    close
    Ted Neward

    By Ted Neward

    Java's threading capabilities took a serious turn for the better with the release of Java5, thanks to the incorporation of the java.util.concurrent packages, a set of pre-built components for thread pooling and execution, synchronization, and more.

    In this presentation, we'll explore the Thread API, the Java threading model beneath it, and the enhancements made in Java5 to make it easier for Java code to walk and chew gum at the same time.



    The Busy Java Developer's Guide to ClassLoaders

    close
    Ted Neward

    By Ted Neward

    If you've ever gotten a ClassCastException and just knew the runtime was wrong about it, or found yourself copying .jar files all over your production server just to get your code to run, then you probably find the Java ClassLoader mechanism to be deep, dark, mysterious, and incomprehensible. Take a deep breath, and relax--ClassLoaders aren't as bad as they seem at first, once you understand a few basic rules regarding their operation, and have a bit more tools in your belt to diagnose ClassLoader problems. And once you've got that, and hear about ClassLoaders' ability to run multiple versions of the same code at the same time, and to provide isolation barriers inside your application, or even compile code on the fly from source form, you might just find that you like ClassLoaders after all... maybe.

    For a beginning to intermediate Java audience.



    The Busy Java Developer's Guide to Performance and Scalability

    close
    Ted Neward

    By Ted Neward

    Wondering why your enterprise Java app just... sucks? Trying to figure out why you can't get more than 10 concurrent users online at the same time? Looking for ways to try and spot the slowdowns and ways to fix them?

    In this talk, we'll look at the various things that can occur in an enterprise Java app (from the smallest web site to the largest multi-resource environment) to make your Java apps perform and scale less well than they should, and how you can work to correct them. We'll examine a variety of broad concepts to apply in architecture and design, and examine what factors make an enterprise application slow, then use a variety of tools to figure out how to remedy them.



    The Busy Java Developer's Guide to Debugging

    close
    Ted Neward

    By Ted Neward

    Bugs? We all know your code has no bugs, but someday, you're going to find yourself tracking down a bug in somebody else's code, and that's when it's going to be helpful to have some basic ideas about bug-tracking in your toolbox. Learn to make use of the wealth of tools that the Java Standard Platform makes available to you--tools that your IDE may not know exist, tools that you can make use of even within a production environment.

    Learn to use jdb, jconsole, jps, jstat, and other tools to identify and squash software defects that just won't reveal themselves during development. Then, just in case those tools aren't enough for you, we'll look at how to write your own, special-purpose tools using the same technology backplane.



    The Busy Java Developer's Guide to Rules and Rules Engines Using JESS

    close
    Ted Neward

    By Ted Neward

    If you've been keeping your ear to the ground, you may have heard some talk recently about "rules", "business rules" and "rules engines", but not necessarily any clear discussion on what they are, how to use or design them, or why they might be useful or important.

    This presentation puts some concrete definition around what a "rule" is, how a "rule engine" like JESS (Java Expert System Shell) can enable your users to be more agile than they ever thought possible, where JSR-94 fits into both the J2EE and "lightweight" development environments, and how you can (finallY!) get out of the "infinite if-else game".



    Data Integration : Beyond Cutesy Mashups

    close
    Brian Sletten

    By Brian Sletten

    Ever since we started doing relational joins, we've looked for ways to tie data together. The web has given us no end of new data sources to integrate but it seems like the best we can come up with is locating Starbucks on Google Maps. The problem with browser-based mashups is that they don't survive the session, we have no way of referring to the results in future queries and ultimately we don't maintain ownership or control of the process.

    We want control of our data and our mashup results. We want ever more ways to view, explore and requery them in multi-faceted ways. Do you know what your data integration strategy is for the next few years? Are you sure? You owe it to yourself to come find out.

    The good news is that a slew of emerging technologies are starting to make this happen. Come explore integration strategies that allow real mashups to function on both the web and the Enterprise. We can use a variety of languages and tools to link legacy data and modern content sources. We will explore resource-oriented computing as a new way of building systems that manage information spaces, not code.

    We will discuss the benefits and deficiencies of XML in this space as well as look at things like JSON, RSS and RDF. We will look at research projects like Simile from MIT, metadata storage systems like Mulgara and scalable orchestration environments like NetKernel. What happens when you mix the concepts of REST with Unix Pipes and Service-oriented architectures? What happens when you leverage the power of the web as a global data source in the context of your own day-to-day activities?

    Come listen to a discussion about these next generation technologies that are available now. This is probably most accessible to upper intermediate attendees with broad backgrounds, but will have some fun demos and will paint a picture of what is on the verge of being available to just about anyone who consumes and produces data.



    Abusing Maven For Fun and Profit : (Near) Zero-Admin Deployments

    close
    Brian Sletten

    By Brian Sletten

    Ok, I can't promise you profit, but hopefully you'll have fun. Maven 2 introduces a number of new features (including that performance feature) that make it a swell project management tool for development.

    Come hear about how we can abuse Maven to manage distributed deployment scenarios before the Modules JSR is done.

    This talk will introduce Maven 2 and what it has to offer as a team-oriented development and project management tool. Then we will take a strange turn and discuss how the MavenEmbedder API can be used as a lightweight, low-admin deployment mechanism for self-updating, distributed Java installations.

    This is a very example-driven talk. We'll look at lots of code but you'll be able to walk away with a fresh take on how to roll out a new versions of entire applications, bug fixes, security patches or new features with very little effort.



    REST : Information-Driven Architectures for the 21st Century

    close
    Brian Sletten

    By Brian Sletten

    There is a shift going on in the Enterprise. While still used and useful, the promises of the SOAP/WSDL/UDDI Service-Oriented Architecture (SOA) stack have failed to live up to their promise. A new vision of linked information is enveloping online and Enterprise users. The REST architectural style is squarely behind this thinking as a way of achieving low-cost, flexible integration, increased data security, greater scalability and long-term migration strategies.

    If you have dismissed REST as a toy or are unfamiliar with it, you owe it to yourself to see what is so interesting about this way of doing things.

    There is tremendous interest in REpresentational State Transfer (REST) as an architectural style for building scalable, flexible, information-driven architectures in the Enterprise. The success of the Web has caught our attention in the face of increased complexity and many failures with more traditional Web Services technologies. The problem is that it is difficult to sell a way to do things. Managers do not want to feel like they are innovating in the middleware space. They want to understand why they should deviate from the blue prints laid down by the industry leaders. They want to understand when they should use REST, when they should use SOAP and when they might fallback to regular old Java-based messaging. They want to make business-based technology decisions that lay a path to forward progress rather than paying for technological flux.

    This talk will introduce REST and walk through why it is so important and makes such a difference. We will talk about REST API design, security, long-lived systems, content-negotiation, contract enforcement, when REST might not make sense, etc.

    REST and the Web Architecture are the basis for many exciting things happening on the Web and within our organizations. You owe it to yourself to make sure you really "get it".

    This talk should be accessible to everyone but is probably intermediate level.



    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.



    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.



    Grails: Spring & Hibernate Development Re-invented

    close
    Graeme Rocher

    By Graeme Rocher

    Spring & Hibernate development, although hailed in the past as being "lightweight", is still an XML-centric, configuration heavy approach to web application development. In this talk, by Grails project lead Graeme Rocher, you will discover how you can leverage Spring & Hibernate without ever having to write a line of configuration!

    The talk will demonstrate how Grails handles all the heavy lifting by performing runtime configuration based on conventions for you leaving you to focus on your business logic. At the same time you'll discover that none of what Spring & Hibernate provides has been taken away allowing you to leverage what is great about this frameworks from using AOP to mapping onto a legacy database system.

    Session Topics:

    • The Grails Architecture Overview
    • Grails & Spring
    • Re-using existing Spring services
    • Leveraging Spring AOP
    • Lightweight Hibernate with Grails
    • Using EJB3 annotations or Hibernate XML to map onto legacy system


    The Grails Plug-in System: Plug into productivity

    close
    Graeme Rocher

    By Graeme Rocher

    Grails is more than just a web framework, it is a complete platform and API for runtime configuration. This talk, by Grails project lead Graeme Rocher, will demonstrate Grails' modular architecture and how to hook into runtime configuration to adapt your application based on its environment and/or the presence of other plug-ins.

    The talk will start with an overview of the Grails architecture and then jump into an extended example of how to write your own plug-in. As part of the journey you'll learn how to customize the Grails build system, participate in runtime Spring configuration, add new persistence methods that work with Hibernate and enhance your existing classes through Grails' advanced Groovy Meta-programming system.

    Session Topics:

    • The Grails Architecture
    • Scripting Grails with Gant
    • Using Grails' Spring DSL: The BeanBuilder
    • Adding new methods, properties and constructors with ExpandoMetaClass
    • Packaging, distributing and installing your plug-in


    GORM - Object Relational Mapping with Hibernate De-mystified

    close
    Graeme Rocher

    By Graeme Rocher

    Hibernate is an immensely powerful ORM layer with an array of features and mapping options which comes at the cost of complexity. The web application framework Grails ships with an ORM layer that builds of top of Hibernate, but eliminates much of the complexity through clever use of convention and the dynamic features of the Groovy language. Known as GORM, it offers a convention-based mapping strategy that hooks into the Hibernate configuration model and provides an abstraction layer above Hibernate with powerful features like Groovy builders for Criteria, dynamic finders and transaction management through closures.

    This talk, by Grails project lead Graeme Rocher, will walk you through the features of GORM and demonstrate how to create different persistence mappings. Once the basics of mapping is understood you'll dive head first into persisting and reading data without ever accessing a Hibernate session!

    Session Topics:

    • GORM - An Introduction
    • Mapping Domain Models with GORM
    • Persisting and Reading data
    • Querying with Dynamic finders
    • Querying with Criteria"


    Annotation Hammer

    close
    Venkat Subramaniam

    By Venkat Subramaniam

    Annotation is an interesting feature in Java. However, like any features, there are good uses and bad uses. When should you use Annotation? This presentation will answer that question for you.

    In this presentation we will take a closer look at annotation. We will see how to write them, how to use them. Then we will take a look at examples of annotation in various Java applications/frameworks. We will discuss examples of good use and not so good use. We will then lay out some good practices to follow.



    Java 6 Features, what's in it for you?

    close
    Venkat Subramaniam

    By Venkat Subramaniam

    What benefit do new Java 6 features offer you. Are there issues with using these features. The objective of this presentation is not simply to introduce you to the features, but to the effective use of these as well.

    We will take a close look at a number of features that you will be expected to know well when you program using Java 6.



    Drooling with Groovy and Rules

    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 Drools and its evolution into JBoss Rules and how you can express rules including Groovy and other alternatives. We'll taken an example oriented approach to creating a sample application.



    FP for Java Programmers

    close
    Venkat Subramaniam

    By Venkat Subramaniam

    Most interest around Functional Programming (FP) has been academic until recently. Recent commercial languages are beginning to exploit FP features. Knowing more about FP will not only help us make better use of these features, but to exploit those. In this session we will take a close look at FP.

    What is FP? Strength and weakness of FP FP languages for Java programmers Examples that you can use today Thinking in FP



    OSGi: A Well Kept Secret

    close
    Venkat Subramaniam

    By Venkat Subramaniam

    In this presentation we will introduce OSGi and discuss how it can help modularize and version your enterprise Java applications.

    In this session we will delve into: What is OSGi? OSGi fundamentals Modularization and versioning Developing and deploying components OSGi implementations OSGi and Spring integration



    get Fit

    close
    Venkat Subramaniam

    By Venkat Subramaniam

    Unit testing tells you, the programmer, that your code (and the change) meets your expectations. How do you know if you are meeting your customers' expectations? Agile development is all about feedback and doing what's relevant to the customers, isn't it? Framework for Integration testing or Fit helps you to automate tests for customer expectations.

    In this presentation we will learn how to write Fit tests and how to automate their execution. We will also use FitNesse.

    Topics: Beyond Unit Testing Integration Testing Customer Expectations Writing Fit Tests Writing Fixtures Automating tests What is FitNesse Using FitNesse



    Spring into Groovy

    close
    Venkat Subramaniam

    By Venkat Subramaniam

    What do you get when you mix an agile, object-oriented, dynamic language with a lightweight, flexible, and extensible framework? You get a Groovier Spring. Spring allows you to develop using Groovy as much as Java. Groovy brings some neat concepts to the Java Platform that is hard to realize directly through the Java language. Using these capabilities can lead to elegant and easier Spring development.

    In this presentation we will cover topics including: Strengths of Groovy Using Groovy in Spring Configuration Bean Development Deployment How it fits in



    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.



    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.



    Exploring Terracotta : JVM clustering in the real world

    close
    Geert Bevin

    By Geert Bevin

    Terracotta provides open-source clustering for Java and removes the burden from the developer by providing you with Network Attached Memory. This is however so generic that it's sometimes difficult realize which use-cases can benefit from it. This presentation introduces the basic principles of Terracotta and explains how to configure and integrate it into your application. Afterwards, we'll go through a collection of real-world examples that all benefit from JVM-level clustering so that you can get a feel for the possibilities.

    Terracotta provides open-source clustering for Java and removes the burden from the developer. Instead of having to design and code against a specific API, the characteristics of the Java Memory Model (wait, lock, notify) are automatically translated towards a multiple node architecture. This clustering solution guarantees proper handling of concurrency, fail-over, distributed method invocation and efficient state propagation by simply instrumenting your Java bytecode and providing you with Network Attached Memory. This is however so generic that it's sometimes difficult realize which use-cases can benefit from it.

    This presentation introduces the basic principles of Terracotta and explains how to configure and integrate it into your application. Afterwards, we'll go through a collection of real-world examples that all benefit from JVM-level clustering. These include: serialization-less HTTP session clustering, fine-grained distributed caches, workload distribution through master-worker, shared state and events between server and desktop tiers, clustered Spring and other OSS frameworks ... and more.

    Garbage collection made the JVM responsible for memory management. Take the plunge and experience how Terracotta does the same for clustering.



    Cutting-edge productivity with RIFE and Web Continuations

    close
    Geert Bevin

    By Geert Bevin

    RIFE is a full-stack, open-source Java web application framework, offering fast results with the promise of maintainability and code clarity. This session will review the novel ideas in Java web application development that RIFE has introduced to the development community.

    Through a real-world demonstration of the development process with RIFE, learn how RIFE makes developing easier with features such as: instant reloads and centralized declarations, meta programming through constraints and meta data merging, run-time POJO-driven CRUD generation, bi-directional logic-less templates, automatic context-aware components, and the integration of a content management framework.

    The second part will focus on state management, which has always been a complex and tricky part of web application development. Native Java web continuations simplify this and automatically allow you to create a one-to-one conversation between users and a web application. State preservation and flow control no longer need to be handled manually, bringing you back to the simplicity of single user console applications. Remember 'scanf()'?

    Continuations will be introduced from general principles, followed by practical examples that explain how they benefit web application development and their frequent usage patterns. Finally, automatic and non-intrusive fail-over and scalability will be demonstrated through the integration with Open Terracotta.



    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).



    Groovy and Java: The Integration Story

    close
    Scott Davis

    By Scott Davis

    I'm attracted to Groovy because of its spirit of inclusiveness. Because it extends my platform of choice, not replaces it -- include a single JAR in your classpath and you are Groovy-enabled. Because it offers full bidirectional integration with Java. Because it offers a nearly flat learning curve for experienced Java developers. Come see how you can use Groovy to augment your existing Java codebase.

    We'll look at calling Groovy from Java. We'll look at calling Java from Groovy. We'll look at compiling Groovy code, JARring it up, and deploying it alongside Java.

    Groovy offers the same level of integration with Ant. We'll look at Ant tasks that allow you to include Groovy in your build process. Or maybe you'd prefer to use the Groovy AntBuilder and completely manage your build in code. The choice is yours. The important thing is Groovy works along side your familiar toolkit instead of forcing you to replace it.



    KEYNOTE: No, I Won't Tell You Which Web Framework to Use: or The Truth (with Jokes)

    close
    Scott Davis

    By Scott Davis

    "Which framework should I use?" is the question most often heard on the No Fluff, Just Stuff tour. It's well worth asking. Unfortunately, there is no simple answer. After years on the tour, most speakers have crafted a response that would make any Washington politician proud -- long on style, but essentially, "Well, it depends..."

    In this humorous keynote, Scott Davis turns to unconventional sources for enlightenment. Could best-sellers like Blink, Freakonomics, The Tipping Point, The Paradox of Choice, and The Wisdom of Crowds finally solve the puzzle? In this "Da Vinci Code"-like romp through the conventional wisdom of the day, will the Holy Grail of web frameworks be revealed? Probably not, but possible side effects may include nausea, dry mouth, and insight into the eternal question of our industry.



    Ajax development with the Yahoo! UI Library and Grails

    close
    Scott Davis

    By Scott Davis

    Yahoo! is a company that eats its own dog food. They open sourced the Ajax code that drives many of their own websites, including their eponymous homepage, Yahoo! Mail, and Yahoo! News. Come see first hand how the various pieces of the library work together as a seamless whole.

    We'll look at some of the everyday useful widgets like the onscreen JavaScript logger (which effectively brings Log4J-style logging to JavaScript) and the calendar components. We'll see how event handling is managed in a cross-brower fashion. We'll look at tabbed interfaces, multi-level menus, and panels and dialog boxes that end up making your website look more like a OS-level desktop than a traditional webpage.

    The YUI library is included with the Grails web framework. It certainly works in all of the major frameworks as well, but the easy bootstrapping of Grails combined with the power of YUI library makes for the quickest way to get started with a minimum of hassle. No previous Groovy or Grails experience is required, so come to learn a little about all of these. Any experience JEE developer will feel right at home since Grails uses Spring and Hibernate under the covers.



    GIS for Web Developers

    close
    Scott Davis

    By Scott Davis

    Based on the book GIS for Web Developers, this talk demonstrates how you can build your own Google Maps in-house using nothing but open source software. We also discuss integrating free, public domain data from sources like the US Census Bureau and the USGS. If you're looking for real-world examples of AJAX in use, you'll find it here. If you're looking for real-world examples of web services in use, you'll find it here.

    We'll start by exploring free datasets out there in the wild. They are stored in a myriad of file formats (some proprietary, some open) and projections. Free tools like GDAL and QGIS make it easy to convert them and visualize them. Once the data is normalized, we'll store it in a PostgreSQL/PostGIS database. Not only does the database centralize the mapping data, it opens up quite a few interesting querying capabilities.

    Serving up the data is the final piece of the puzzle. We'll look at web services based on the OGC (Open Geospatial Consortium) standards. We'll use Tomcat and the GeoServer WAR to expose our data via OGC interfaces. We'll look at a couple of Ajax-based mapping frameworks (MapBuilder and OpenLayers) that truly bring the power of a Google Maps-like website to your own in-house application.

    If you've had no previous mapping experience, this talk breaks the domain down into easy to understand concepts. You'll come out with a better understanding of the challenges and rewards of hosting your own web mapping infrastructure.



    Test Driven Development, Take 2

    close
    Erik Doernenburg

    By Erik Doernenburg

    More and more developers are being drawn to Test Driven Development (TDD). It doesn?t take much time or effort to get going, especially after you have passed that first hurdle of approaching development using the mantra of ?red-green-refactor? instead of ?code for days and then debug and test?. But after a while you discover that TDD has more to it than just basic state-based testing.

    In this session Erik will present in-depth discussions of topics such as interaction-based testing, dependency injection, classical vs mockist testing, test doubles, and the object mother pattern.



    Apache Axis2 for Developers

    close
    Paul Fremantle

    By Paul Fremantle

    Apache Axis2 is a framework for Web Services that supports SOAP and XML/HTTP interactions, as well as enhanced standards such as ReliableMessaging and Security.

    In this session, Paul will show how developers can get started with Axis2 and easily create and consume remotely-accessible services. Paul will show how to deploy and run POJOs as services, and how to simply create clients to services. Paul will look at common debug and trace approaches, as well as how to configure common aspects, such as the use of HTTP proxies. In addition, the session will look at how security and reliability can fit into the Axis2 framework to provide an enhance quality of service.



    Building a lightweight ESB with Apache Synapse

    close
    Paul Fremantle

    By Paul Fremantle

    Apache Synapse (http://ws.apache.org/synapse) is a lightweight mediation framework for XML and messaging. In this session, Paul Fremantle, a committer and release manager on the project, will show how Synapse works and what can you do with it. One of the main areas of interest in Apache Synapse is for users to build an Enterprise Service Bus (ESB). In this session, we will define the concept of an ESB and look at how to build a pragmatic ESB that allows you to manage, connect and transform service interactions.

    In particular, Paul will look at the most common patterns: virtualization, logging, transformation, fault-handling, and versioning. The session will be based on simple code examples and configuration models. Attendees should have some experience of XML.



    RAD JSF with Seam, Facelets, and Ajax4jsf, Part One

    close
    David Geary

    By David Geary

    In this session, see how you can get Ruby On Rails-like productivity on the Java side of the house with this compelling combination of technologies.

    JSF has been out for nearly three years now, and in many respects, the JSF specification has become a bit long in the tooth. Fortunately, the open source community has picked up the ball in a big way. In this 2-session presentation, we will explore three open source projects based on JSF--Seam, Facelets, and Ajax4jsf-- that will propel you into the stratosphere of productivity.

    Seam is a framework from JBoss that combines the JSF and EJB3.0/Hibernate 3.0 frameworks into one component model. That means you only have to learn one framework to build compelling web applications.

    This is the first of a two-part session, where we'll focus mostly on the Seam framework.



    RAD JSF with Seam, Facelets, and Ajax4jsf, Part Two

    close
    David Geary

    By David Geary

    A continuation of a 2-session presentation on Seam, Facelets, and Ajax4jsf.

    In the second part of this 2-session presentation, we'll turn our attention to Facelets and how you can use this compelling display technology with Seam.

    We will also discuss Ajax4jsf and demonstrate how you can use that framework to create rich, interactive user interfaces for your JSF-based web applications.



    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.



    The Google Web Toolkit, Part Two

    close
    David Geary

    By David Geary

    The second part of a 2-session presentation on the Google Web Toolkit.

    In this session, we'll dive deeper into the GWT and explore some of it's more advanced aspects, such as implementing custom widgets, deploying your application in a servlet container, and implementing drag and drop.



    Raising the game: Top ten techniques for secure design

    close
    Mark  Goodwin

    By Mark Goodwin

    Want your software to be secure but don't know where to start? You're not alone. Learn about black, grey and white box security testing.

    Review your code for broken access control, code injection, and other hacks; and integrate security considerations into the product development lifecycle.



    Flooring the flaws: The top ten bottomed out

    close
    Mark  Goodwin

    By Mark Goodwin

    Research shows that over 80% of web applications are at risk of attack due to serious security issues. This session takes a look at the ten most serious vulnerabilities (as defined by OWASP), the anatomy of common attacks and techniques for mitigation.

    If you're not into web stuff please don't be put off; all but three of the top ten are applicable to almost all software systems.



    Spring 2.0: New and Noteworthy

    close
    Ben Hale

    By Ben Hale

    Spring 2.0 has marked a major advance in the Spring Framework. While still maintaining backwards compatibility, this release adds quite a few new features. What are those features and how do they add value? Come by and see.

    In this session we'll provide a practical tour of what's new in Spring 2.0. Spring 1.x users who are looking to upgrade to Spring 2.0 will love this session. If you're not using Spring already, this talk will give a great overview of the things you're missing out by not using Spring 2.0.

    The talk will highlight new configuration strategies, Spring AOP, bean scoping, JPA support, JMS improvements, new Spring MVC features, VM languages, and much more.



    Spring and Hibernate in the Middle Tier

    close
    Ben Hale

    By Ben Hale

    To today's JEE developer, there are two indispensable tools for creating applications; Spring and Hibernate. Together these two frameworks comprise one of the most powerful and often used stacks in the industry. While it is possible to do amazing things it's not always obvious how best to use them to maximize value. This session aims to correct that.

    In this session, we'll start by addressing the basic design of an application using Spring and Hibernate. Once we've established some baseline best practices, we'll focus on how to best use Hibernate (both 2 and 3) in the persistence tier. We'll take a look at the use of Spring's HibernateTemplate and some new strategies in Spring 2.0. To finish with a look to the future, we'll explore use of JPA (Hibernate implementation) with Spring 2.0.



    AOP and JMX: A match made in heaven

    close
    Ben Hale

    By Ben Hale

    You're winding down a project and you get that dreaded email from your project manager, "How hard would it be to add some performance monitoring to the system?" Well, after this session, you'll be able to respond, "No problem at all!" It turns out that with a pinch of AOP and a dash of JMX, you can introduce amazing management and monitoring capabilities without changing your mainline code one bit.

    In this session, we explore the technologies of AOP and JMX and how they can be used together to transparently add management and monitoring in a completely non-invasive way. We'll explore some of the various AOP packages including Spring AOP and AspectJ and how they can be used to apply management and monitoring inline to an application. Once we've added this functionality we'll how to expose it using JMX using Spring's JMX support and consume it using JConsole or Spring.

    If you're tentative about introducing AOP or JMX into your application, come take a look at some of the cool things you can do with them and how easy it can be.



    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.



    Domain Driven Development using Naked Objects 3.0

    close
    Dan Haywood

    By Dan Haywood

    Are you using Hibernate or EJB3 in your application? If so then you probably believe that putting a domain object model in the center of your application is worthwhile. But just how good is that domain object model ... how well does it capture the complexity of the domain in question? A domain expert can tell us, of course, but to get their views we need a way to show the domain model to them.

    In this session I will show you how to build a domain-driven application using Naked Objects 3.0. With suggestions from the audience we'll use the (Eclipse-based) Naked Objects IDE to build it, test it and deploy it a domain application using either a rich client or web-based client. What we'll end up with a pojo-based domain model with well-defined semantics, that can be deployed using Naked Objects or any other framework, that's compliant with Hibernate and other pojo technologies. Should be good fun.



    JavaFX

    close
    Simon Ritter

    By Simon Ritter

    The demand continues to grow for secure, interactive content, applications, and services that run on a variety of clients. To simplify and speed the creation and deployment of high-impact content for a wide range of devices, Sun is introducing JavaFX, a new family of products based on Java technology designed to enable consistent user experiences, from desktop to mobile device to set-top box to Blu-ray Disc.

    JavaFX allows you to:- * Build and Run Interactive Content Quickly and Easily * Create Visually Compelling and Dynamic Application * Increase Speed Time-to-Market with Technology Independence and Enhanced Consistency * Reduce Costs, Expand your market * Develop openly under the GPL license

    In this presentation by Sun technology Evangelist, Simon Ritter, begin to understand the possibilities that JavaFX presents, and how it can help your applications and services can reach more customers on more devices than ever before.



    Advanced Web Application Security

    close
    Joe Walker

    By Joe Walker

    The security landscape has changed dramatically in the past 12 months. Unless you are aware of CSRF, Javascript Highjacking, and the many ways to fool an XSS filter, it's likely that your web application will not be secure. Attackers used to concentrate on ActiveX, but now Javascript, CSS and even simple HTML elements have are used against websites.

    This session will outline the challenges facing the inhabitants of this strange world called 'web 2.0' and the options for protection, both from the point of view of site owners, and web users.



    Hands On DWR

    close
    Joe Walker

    By Joe Walker

    This presentation digs into many advanced DWR features such as Reverse Ajax and the JavaScript proxy APIs. We start with a simple web-based multiplayer game, and illustrate how straightforward it is to create advanced effects with minimal coding. By demonstrating advanced page manipulation and server-based control of browsers, the game shows how to update any web application to react to server changes.

    We will look at how DWR integrates with other Ajax libraries like TIBCO GI, Scriptaculous, and the Open Ajax Hub.