NFJS eXchange 2007
August 29 - 31, 2007 - London, England
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.
Wednesday - August 29
Thursday - August 30
Friday - August 31
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:
- TDD
- Static Analysis
- Good Citizenship
- getters and setters
- Constructors
- Static State
- YAGNI
- Occam and His Razor
- Question Authority
- DSLs
- JavaBean Specification
- SLAP
- New Languages
- Every Nuance
- Anti-objects
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
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.
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:
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
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.
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
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
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
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)
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.
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.
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.
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.
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".
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.
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.
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.
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.
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.
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.
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
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
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"
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.
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.
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.
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
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
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
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
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
