Lone Star Software Symposium: Dallas

June 4 - 6, 2010 - Dallas, TX


Crowne Plaza Suites Dallas
7800 Alpha Road
Dallas, TX   75240
Map »

Session Schedule

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

About Sessions

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

Friday - June 4


  Windsor 2-4 Windsor 1 Warwick Canturbury Churchill
12:00 - 1:00 PM REGISTRATION
1:00 - 1:15 PM WELCOME
1:15 - 2:45 PM
2:45 - 3:15 PM BREAK
3:15 - 4:45 PM
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM
6:30 - 7:15 PM DINNER
7:15 - 8:00 PM Keynote: Smithing in the 21st Century by Neal Ford

Saturday - June 5


  Windsor 2-4 Windsor 1 Warwick Canturbury Churchill
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM
12:30 - 1:30 PM LUNCH
1:30 - 3:00 PM
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM
4:45 - 5:45 PM BOFs & Refactoring Workshop with Venkat Subramaniam

Sunday - June 6


  Windsor 2-4 Windsor 1 Warwick Canturbury Churchill
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM
10:30 - 11:00 AM MORNING BREAK
11:00 - 12:30 PM
12:30 - 1:15 PM LUNCH
1:15 - 2:15 PM EXPERT PANEL DISCUSSION
2:15 - 3:45 PM
3:45 - 4:00 PM BREAK
4:00 - 5:30 PM

Learning Open Source Business Intelligence

close
Tim Berglund

By Tim Berglund

Traditionally, business intelligence tools have been a high-cost part of any enterprise's software inventory. Recently, options have emerged that allow architects to build a credible business intelligence stack out of entirely open-source components. In this brief overview, we will demonstrate ETL, reporting, and analytics tool that can be deployed free or at low cost. Learn how to turn your company's transactional database into a rich data asset with a business-friendly user interface that integrates into your existing software infrastructure.

We begin this session talking about the differences between a transactional database and a data warehouse, describing the many benefits of creating the latter. Then we'll see how to take a transactional database and convert it into a warehouse star schema using the Eclipse-based Talend ETL. Next, we'll demonstrate how to enable business analysts to build reports with Jasper iReport, an open-source visual report designer. We'll talk about ways to integrate these report designs into your Java- or Groovy-based application. Finally, we'll look at more sophisticated options for analysis using tools from Pentaho.

This is a mile-wide, ankle deep view of an open-source business intelligence stack.



Open Source Business Intelligence Workshop

close
Tim Berglund

By Tim Berglund

Once you're familiar with the concepts of data warehousing, star schemas, cubes, and pivot tables, then it's time to dive in and look at how the tools really work. Continuing from the quick demos in Part I, this workshop session will have you building an actual ETL process with Talend Open Studio. This hands-on exercise will acquaint you with the tooling and solidify the concepts you've learned.

Be sure to bring a laptop (or pair with a friend who has one). You'll receive a VM image in "Learning Open Source Business Intelligence" if you attend it, or at the start of this workshop otherwise. This VM has all the tools we'll need pre-installed and ready to use.

Prerequisite: Learning Open Source Business Intelligence (or a solid grasp of BI concepts)



Practical Agile Database Development

close
Tim Berglund

By Tim Berglund

Do your team's agile practices extend to the database? Agile methods are fairly well-understood as they apply to code, but these principles are not commonly understood or practiced on the databases that typically accompany enterprise software projects. Learn the tools, techniques, and mindset your team needs to make incremental improvements to the database’s design over time with confidence.

We'll cover Scott Ambler and Pramod Sadalage's vision of database agility as described in their book Refactoring Databases. We'll discuss the five-pointed constellation of evolutionary design, refactoring, automated testing, source control, and developer sandboxes, and how each of these practices contributes to successful database development. In particular, we'll look at how these practices are enabled by the open-source tool, Liquibase. We'll study a database badly in need of reform, select some refactorings from Ambler's catalog, and implement them in real time in a way that can satisfy the development team and the maybe even the production DBAs! This tool and the practices that animate i



Decision Making in Software Teams

close
Tim Berglund

By Tim Berglund

Alistair Cockburn has described software development as a game in which we choose among three moves: invent, decide, and communicate. Most of our time at No Fluff is spent learning how to be better at inventing. Beyond that, we understand the importance of good communication, and take steps to improve in that capacity. Rarely, however, do we acknowledge the role of decision making in the life of software teams, what can cause it to go wrong, and how to improve it.

In this talk, we will explore decision making pathologies and their remedies in individual, team, and organizational dimensions. We'll consider how our own cognitive limitations can lead us to to make bad decisions as individuals, and what we might do to compensate for those personal weaknesses. We'll learn how a team can fall into decision-making dysfunction, and what techniques a leader might employ to healthy functioning to an afflicted group. We'll also look at how organizational structure and culture can discourage quality decision making, and what leaders to swim against the tide.

Software teams spend a great deal of time making decisions that place enormous amounts of capital on the



Cloud computing deep dive for Google App Engine and Amazon EC2

close
Rohit Bhardwaj

By Rohit Bhardwaj

In this session we will take a deep dive at few cloud computing examples from real world and participants will be able to know how to use cloud computing for Google App Engine, Amazon EC2 and few others.

Know about cloud computing companies. Google, Apple, and Microsoft are all working to take advantage of and implement cloud computer technology into their current and future product. As cloud computing leaders, these companies will be at the forefront of efforts to take computing 100 percent online, as opposed to your information being tied to a desktop trapped in one location, accessible only if you are physically there.

This session we will take a deep dive at few cloud computing examples from real world and participants will be able to know how to use cloud computing.



Enterprise testing to make your application foolproof

close
Rohit Bhardwaj

By Rohit Bhardwaj

Enterprise software solutions are an essential part of many large enterprises. Given the critical role enterprise software solutions play, it is imperative that they are tested effectively and efficiently all the time. It is as important, if not the most important, as any other phase of the Software Development Lifecycle (SDLC). But testing an enterprise application is easier said than done. This presentation targets seasoned software developers, testers and project managers who are looking for guidance in implementing an effective application testing strategy. We will discuss the rationale behind application enterprise testing and explore building blocks of effective testing and explain their importance. Then we will explore how to do effective root-cause analysis. We will discuss the typical output of a performance test and how to perform effective analysis. We will learn the effects of particular software environments on testing. The approach is generic; so many details regarding your applications will depend on the characteristics of the technologies you use. Later on we will explore at two tools PushToTest and CloudTest to automatically test web applications. Attendees will learn different test strategies for testing.

Enterprise software solutions are an essential part of many large enterprises. Given the critical role enterprise software solutions play, it is imperative that they are tested effectively and efficiently all the time. It is as important, if not the most important, as any other phase of the Software Development Lifecycle (SDLC). But testing an enterprise application is easier said than done.

This presentation targets seasoned software developers, testers and project managers who are looking for guidance in implementing an effective application testing strategy. We will discuss the rationale behind application enterprise testing and explore building blocks of effective testing and explain t



Enterprise Security, Privacy and Data compliance

close
Rohit Bhardwaj

By Rohit Bhardwaj

Data integrity, security, recovery, privacy and regulatory compliance are most important attributes for enterprise implementation. Enterprise customers ask for transparency in how the vendors will provide security programs. Many question need to be asked for any cloud implementation to policy makers, architects, coders and testers.

In this presentation we will explore data security and storage, privacy and data compliance issues. We will explore the security management in cloud. Presentation is useful for anyone starting from Executives to developers who are going to implement the enterprise Applications in both private and public cloud.

Data integrity, security, recovery, privacy and regulatory compliance are most important attributes for enterprise cloud implementation. Enterprise customers ask for transparency in how the vendors will provide security programs. Many question need to be asked for any cloud implementation to policy makers, architects, coders and testers.

In this presentation we will explore data security and storage, privacy and data compliance issues. We will explore the security management in cloud. Presentation is useful for anyone starting from Executives to developers who are going to implement the enterprise Applications in both private and public cloud.



SoapUI for testing SOAP and Restful web services

close
Rohit Bhardwaj

By Rohit Bhardwaj

SoapUI is an Open Source Web Service Testing Tool for Service Oriented Architecture made for the Software Developers and Testers. Its functionality mainly covers Web Service Inspection, Invoking, Development, Simulation and Mocking, Functional testing, Load and Compliance testing. Productivity enhancement features can be found in the soapUI pro version.

SoapUI is the premiere open-source web service testing tool with over 50000 users worldwide. We will explore few online services like Amazon Web Services. This presentation will show you how to supercharge your web service development and testing efforts:

• fast inspection and invocation of web services • validation of contracts, messages and message-exchanges • tool-integrations for all major web service frameworks • powerful functional testing with extensive groovy support • instant simulation/mocking of any web service with groovy support • requirements-driven load-testing

SoapUI is an Open Source Web Service Testing Tool for Service Oriented Architecture made for the Software Developers and testers. Its functionality mainly covers Web Service Inspection, Invoking, Development, Simulation and Mocking, Functional testing, Load and Compliance testing. Productivity enhancement features can be found in the soapUI pro version.

SoapUI is the premiere open-source web service testing tool with over 50000 users worldwide. We will explore few online services like Amazon Web Services. This presentation will show you how to supercharge your web service development and testing efforts:

• fast inspection and invocation of web services

• validation of contr

Prerequisite: none



Grails - How to Build Enterprise Apps

close
Jeff Brown

By Jeff Brown

Grails represents technology that offers great flexibility and power without the complexity introduced by other Java web application frameworks. Custom tag libraries are a snap. GSP Templates provide a simple mechanism for reusing UI elements. Sitemesh is integrated to help provide a consistent presentation across the entire application. GORM is super powerful ORM. Grails provides simple mechanisms for leveraging the power of Ajax.

This session will cover all of these topics to demonstrate how powerful the Grails framework is and show how little effort it takes to build not just a simple toy application but also to build real enterprise web apps.



GORM Inside And Out

close
Jeff Brown

By Jeff Brown

GORM is a super powerful ORM tool that makes ORM simple by leveraging the flexibility and expressiveness of a dynamic language like Groovy. With GORM developers get access to all of the power and flexibility of an ORM tool like Hibernate without any of the complexity.

This session will cover a lot of the GORM API from the developer's perspective as well as diving into some of the implementation details. Knowing how some of this works under the covers will give developers an opportunity to not only improve their productivity with GORM but also open up possibilities of using dynamic metaprogramming in other aspects of their application development efforts.

Prerequisite: Advanced Grails



Polyglot Web Programming With Grails

close
Jeff Brown

By Jeff Brown

Grails is one of the most flexible and most powerful frameworks on The Java Platform. Grails leverages the flexibility offered by the platform in a way that other web frameworks do not. Grails is a fantastic platform for polglot web programming.

Part of what makes Grails so compelling is its really powerful plugin system. The Grails plugin system allows capabilities to be bolted on to applications, including adding support for a variety of programming languages. All of the major programming languages available on the JVM are supported by The Grails Framework. These include Java, Groovy, Scala, Clojure and others. This session will dive in to that aspect of the framework with a focus on Scala and Clojure and will demonstrate what is involved in adding support for new languages.

Prerequisite: Advanced Grails



Aspect Oriented Programming With Spring AOP

close
Jeff Brown

By Jeff Brown

Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Aspects enable the modularization of concerns such as transaction management that cut across multiple types and objects. (Such concerns are often termed crosscutting concerns in AOP literature.)

This session will cover Spring AOP in detail to demonstrate how easy it can be to leverage the awesome power of Aspect-Oriented Programming.



Compile Time and Runtime Metaprogramming With Groovy

close
Jeff Brown

By Jeff Brown

The dynamic nature of Groovy makes it a fantastic language for building dynamic applications for the Java Platform. The metaprogramming capabilities offered by the language provide everything that an application development team needs to build systems that are far more capable than their all Java counterparts. Taking advantage of Groovy's metaprogramming capabilities brings great new possibilities that would be very difficult or just plain impossible to write with Java alone. Building Domain Specific Languages in Groovy is easy to do once a team has a good understanding of the Metaobject-Protocol (MOP) and the method dispatch mechanisms used by the Groovy runtime environment.

This session will cover in detail a number of advanced metaprogramming concepts in Groovy. The discussion will cover using dynamic method interception, meta-class manipulation, AST transformations and Groovy's Metaobject-Protocol (MP) to build flexible applications in Groovy including implementing a Domain Specific Language (DSL).



Evolving towards REST-based Enterprise Integration

close
Neal Ford

By Neal Ford

This talk describes an agile approach to architecture, and merges the current state-of-the-art thinking in both service oriented architectures(SOA) and web-based architectures like HTTP, REST, and hypermedia.

We're drowning in needless complexity in the enterprise architecture space: heavy, bloated tools, complex middleware, just-in-case architectural decisions, and vendor-itus. The side effect of all that complexity drives us further from our goals: architecture that is simple, free, supports business goals, loosely coupled, and evolvable. This session describes how to use web technologies (HTTP, REST, hypermedia, etc.) to implement robust, scalable enterprise architecture. This session shows a variety of different ways to attack this problem, with advantages and disadvantages for each, evolving towards the current state-of-the-art of REST-based architectures. This talk is based on original rese



Emergent Design

close
Neal Ford

By Neal Ford

Emergent design is a big topic in the agile architecture and design community. This session covers the theory behind emergent design and shows examples of how you can implement this important concept.

This session describes the current thinking about emergent design, discovering design in code. The hazard of Big Design Up Front in software is that you don't yet know what you don't know, and design decisions made too early are just speculations without facts. Emergent design techniques allow you to wait until the last responsible moment to make design decisions. This talk covers four areas: emergent design enablers, battling things that make emergent design hard, finding idiomatic patterns, and how to leverage the patterns you find. It includes both proactive (test-driven development) and reactive (refactoring, metrics, visualizations, tests) approaches to discovering design, and discusses

Prerequisite: understanding of architectural and design concepts



Testing the Entire Stack

close
Neal Ford

By Neal Ford

This talk covers testing the entire stack: unit, integration, functional, behavior-driven, databases, user acceptance, mocking & stubbing, and other topics and strategies.

Most talks you see about testing cover one particular tool, and rarely delve into the strategies around when you should use a particular tool for a particular kind of testing. This talk differs because it covers testing the entire stack: unit, integration, functional, behavior-driven, databases, user acceptance, mocking & stubbing, and other topics and strategies. I discuss the merits of "known good state" vs. "nuke & pave" for databases, discuss the differences between ClassicTDDers vs. Mockists and how they approach testing. Throughout, I provide strategies and heuristics to help guide you when making decisions about how, when, and why you are testing some part of your infrastructu

Prerequisite: Confusion about what to test when and where



Keynote: Smithing in the 21st Century

close
Neal Ford

By Neal Ford

Blacksmiths in 1900 and PowerBuilder developers in 1996 have something in common: they thought their job was safe forever. Yet circumstances proved them wrong. One of the nagging concerns for developers is how do you predict the Next Big Thing, preferably before you find yourself dinosaurized. This keynote discusses why people are bad at predicting the future, and why picking the Next Big Thing is hard. Then, it foolishly does just that: tries to predict the future. I also provide some guidelines on how to polish your crystal ball, giving you tools to help ferret out upcoming trends. Don't get caught by the rising tide of the next major coolness: nothing's sadder than an unemployed farrier watching cars drive by.

Blacksmiths in 1900 and PowerBuilder developers in 1996 have something in common: they thought their job was safe forever. Yet circumstances proved them wrong. One of the nagging concerns for developers is how do you predict the Next Big Thing, preferably before you find yourself dinosaurized. This keynote discusses why people are bad at predicting the future, and why picking the Next Big Thing is hard. Then, it foolishly does just that: tries to predict the future. I also provide some guidelines on how to polish your crystal ball, giving you tools to help ferret out upcoming trends. Don't get caught by the rising tide of the next major coolness: nothing's sadder than an unemployed farrier w



Visualizations for Code Metrics

close
Neal Ford

By Neal Ford

Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? And what does it tell me about the health of the project overall? This sessions shows how to produce visualizations for software metrics, making them easier to understand and more valuable. It covers metrics at the individual method level all the way up to the overall architecture of the application. This isn't just a talk about how some tools produce visualizations: this session shows you how to generate your own visualizations, allowing you to customize it to the level in information density that shows real value on your project. I show how to produce projected graphs from dependencies, heat-maps for cyclomatic complexity and code coverage, using XSLT to extract visual information from XML configuration documents, and others. Metrics can't help you if you can't understand them. By creating visualizations, it helps leverage metrics to make your code better.

Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? And what does it tell me about the health of the project overall? This sessions shows how to produce visualizations for software metrics, making them easier to understand and more valuable. It covers metrics at the individual method level all the way up to the overall architecture of the application. This isn't just a talk about how some tools produce visualizations: this session shows you how to generate your own visualizations, allowing you to customize it to the level in information density that shows real value on your pr



Agile Engineering Practices

close
Neal Ford

By Neal Ford

Most of the time when people talk about agile software development, they talk about project and planning practices and never mention actual development practices. This talk delves into best development practices for agile projects, covering all of its aspects.

Most of the time when people talk about agile software development, they talk about project and planning practices but never mention actual development, as if development where an afterthought when writing software. This talk bills into the real details of how to do agile development. I discuss best practices like continuous integration, pair programming, how developers should interact with story cards, how to handle enterprise concerns like integration with other software packages, and a slew of other topics related to agile software development.

Prerequisite: Having worked in an organization that values bureaucracy more than individuals



The Busy Java Developer's Guide to Collections

close
Ted Neward

By Ted Neward

For so many Java developers, the java.util.* package consists of List, ArrayList, and maybe Map and HashMap. But the Collections classes are so much more powerful than many of us are led to believe, and all it requires is a small amount of digging and some simple exploration to begin to "get" the real power of the Collection classes.

In this presentation, Java developers will see the basic breakdown of the Collection API designs, the relationship of the interfaces to the implementations, how to create a new Collection implementation, and how the new Collections introduced as part of JSR-166 (the concurrency JSR) and Java6 make their programming lives easier.



The Busy Java Developer's Guide to Functional Java

close
Ted Neward

By Ted Neward

Much noise has been made in recent years about functional languages, like Scala or Haskell, and their benefits relative to object-oriented languages, most notably Java. Unfortunately, as wonderful as many of those benefits are, the fact remains that most Java developers will either not want or not be able to adopt those languages for writing day-to-day code. Which leaves us with a basic question: if I can't use these functional languages to write production code, is there any advantage to learning about them? The short answer is yes, for the fundamental premise--"I can't use functional code on my Java project"--is flawed. Java developers can, in fact, make use of functional ideas, and what's better, they don't even have to reinvent them for Java--thanks to the FunctionalJava library, many of the core primitives--interfaces that serve as base types for creating function values, for example--already exist, ready to be used.

In this presentation, we'll go over some basic functional concepts, then start seeing how they apply in the FJ library, and show how to use FJ and functional ideas on common Java programming tasks. Let the excuse "I can only use Java" finally be consigned to the rubbish bin, once and for all.



Busy Java Developer's Guide to Advanced Collections

close
Ted Neward

By Ted Neward

Once you've learned the core Collections clases, you're done, right? You know everything there is to know about Collections, and you can "check that off" your list of Java packages you have to learn and know, right?

In this presentation, we'll go over what's missing from the Java Collections library, what is provided via other sources (Google and Apache, among others), and what you can provide for yourself, including a brief foray into the world of functional programing, and how it can make your Java code more elegant.

Prerequisite: Busy Java Developer's Guide to Collections



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



Pragmatic Architecture

close
Ted Neward

By Ted Neward

Building an application is not the straightforward exercise it used to be. Decisions regarding which architectural approaches to take (n-tier, client/server), which user interface approaches to take (Smart/rich client, thin client, Ajax), even how to communicate between processes (Web services, distributed objects, REST)... it's enough to drive the most dedicated designer nuts. This talk discusses the goals of an application architecture and why developers should concern themselves with architecture in the first place. Then, it dives into the meat of the various architectural considerations available; the pros and cons of JavaWebStart, ClickOnce, SWT, Swing, JavaFX, GWT, Ajax, RMI, JAX-WS, , JMS, MSMQ, transactional processing, and more.

After that, the basic architectural discussion from the first part is, with the aid of the audience in a more interactive workshop style, applied to a real-world problem, discussing the performance and scalability ramifications of the various communication options, user interface options, and more.



The Busy Java Developer's Guide to Scala: Basics

close
Ted Neward

By Ted Neward

Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files. Sporting the usual object-oriented concepts as classes and inheritance, Scala also offers a number of powerful functional features, such as algebraic data types, immutable objects by default, pattern matching, closures, anonymous functions and currying, and more. Combined with some deep support for XML generation and consumption, Scala offers Java programmers an opportunity to write powerful programs with concise syntax for a new decade of Java programming.

In this presentation, we begin by looking at the Scala type system and flow-control primitives, such as if/else, pattern-matching, tuples, lists, and more. Despite the name, "basics" in Scala can get the newcomer Scala developer quite some distance.



Automated Software Quality Control Tools

close
Pratik Patel

By Pratik Patel

This session is aimed at helping developers get started with automating the collection of software quality metrics. We'll cover continuous integration, automated code metrics gathering, and analysis of these metrics. The ability to be able to detect problems early, and also to write higher quality code early, helps avoid bugs and headache down the line. We'll cover some best practices around using and putting in tools to help achieve higher quality.

This course centers around two freely available tools for maintaining high quality codebases. The first is Hudson, a continuous integration server. The second is Sonar, a code metrics server. In this session, we'll discuss best practices and then put them into use by setting up and running these tools. We'll also talk about tips for getting the most out of these tools. If you aren't using these tools in development, you absolutely need to come to this session - it will help make your life easier and impress your boss too!



Enterprise JPA & Spring 3.0 - Tips and Tricks for JEE Persistence

close
Pratik Patel

By Pratik Patel

As with many technologies, the basics are easy. The hard part comes when the developer needs to do sophisticated integration, development, and testing as part of an enterprise application. A large enterprise application requires the developer to think of issues that affect the development, scalability and robustness of the application. This presentation will cover the advanced topics described below with a focus on the new persistence features in Spring 3.0 and JPA 2.0.

A large enterprise application often will have several sub-projects that each contain their own JPA persistence unit. This opens up a number of questions around how to organize the persistence units and how the code between sub-projects should interoperate. Developers will gain insight into these issues and will see a couple of solutions using live code examples.

Many enterprise applications require integration with an application server's JTA mechanism. JTA integration allows for JPA components to work with container managed transactions and distributed transactions. A typical usage scenario for JPA & JTA is this: read from a database using JPA, perform some business logic, put a mess



Real-world JEE performance troubleshooting & tuning: Tips n' Tricks

close
Pratik Patel

By Pratik Patel

Performance tuning any application is a black art that can consume much time. Fortunately, Java has many tools that can aid in this effort. There also are a number of basic tips that can help to analyze and fix performance problems. The Java memory model is usually something that you don't need to tune, but for high performance applications it is necessary to tweak. While there are a number of advanced things that can be done to performance tune an application, we'll discover that the simple, basic things are all that are usually needed to make your apps fly.

This session looks at how to setup and run an application with profiling tools and monitoring tools. We'll setup an application to run and put it under heavy load. While running, we'll interactively monitor it and look for problems and how to go about finding and fixing them. We'll also cover the basic issues you should look for when performance tuning.

We'll look at memory management and how to tune it appropriately. We'll also look at some of the Java 6 tools available to monitor performance and look at the JVM internals. We'll focus on the simple things that can be done right away and then look at some more advanced tweaks to identify and fix performance issues. Along the way, you'll lear



Virtualization for development

close
Pratik Patel

By Pratik Patel

We've all heard about virtualization for deploying applications. How about leveraging virtualization for development? In this session, we'll look at some time saving tips and build a virtual VM for development and testing.

Developer can make creative use of virtualization software like VMWare for development. In this session, we'll discuss how to create a virtual development environment and the benefits of doing so. We'll also look at several great ways to use virtualization for other development and testing tasks. Driven by demos and live usage of virtualization, the attendee will gain insight into virtualization and how it can be applied to make development tasks easier.



Easy mobile development (IPhone, Android, Palm Pre, Blackberry) without native code

close
Pratik Patel

By Pratik Patel

So you have a great idea for an IPhone app, you've tried learning Objective-C, but it's just too hard. What about those other new platforms like Palm Pre and Android? Who wants to write the same app three times? Four times if you count Blackberry! Fear not, there is a much easier way for you to develop on the IPhone. Using a development style called "hybrid mobile applications" you can write apps for IPhone and other platforms using stuff you already know: HTML, CSS and Javascript. In this course, we'll go over the basics for hybrid development

This course outlines the basics of hybrid development. We'll cover the pro's and con's of this approach over writing native code for each specific mobile phone platform. Then we'll build an app and deploy it to an IPhone, all in the course of 90 mins - using simple technologies you already know: HTML, CSS, Javascript and JQuery. This isn't a webapp per se - it looks and feels and deploys just like a native app. You publish it to the App Store and people have to download & install it just like any other app.



jQuery: Ajax Made Easy

close
Nathaniel Schutta

By Nathaniel Schutta

Sure, Ajax might not be the hardest thing you'll have to do on your current project, but that doesn't mean we can't use a little help here and there. While there are a plethora of excellent choices in the Ajax library space, jQuery is fast becoming one of the most popular. In this talk, we'll see why. In addition to it's outstanding support for CSS selectors, dirt simple DOM manipulation, event handling and animations, jQuery also supports a rich ecosystem of plugins that provide an abundance of top notch widgets. Using various examples, this talk will help you understand what jQuery can do so you can see if it's right for your next project.

Sure, Ajax might not be the hardest thing you'll have to do on your current project, but that doesn't mean we can't use a little help here and there. While there are a plethora of excellent choices in the Ajax library space, jQuery is fast becoming one of the most popular. In this talk, we'll see why. In addition to it's outstanding support for CSS selectors, dirt simple DOM manipulation, event handling and animations, jQuery also supports a rich ecosystem of plugins that provide an abundance of top notch widgets. Using various examples, this talk will help you understand what jQuery can do so you can see if it's right for your next project.



Testing the Web Layer

close
Nathaniel Schutta

By Nathaniel Schutta

While your project might have nearly 100% code coverage on the server tier, many projects ignore testing the web layer. With more and more code being pushed to the browser, a lack of tests for the client code begs for trouble.

This talk will explore several testing options including Selenium, JsUnit, Crosscheck, JSCoverage, Watir, JSLint, JSSpec and others.



JavaScript Beyond the Basics

close
Nathaniel Schutta

By Nathaniel Schutta

JavaScript is one of the most widely used languages around and yet its also one of the most misunderstood. With Ajaxified UIs becoming the norm, this humble language is once again at the forefront.

In this talk, we'll go beyond the basics of JavaScript delving into the mysteries of prototype inheritance, objects, language edge cases and the importance of testing.



Hacking Your Brain for Fun and Profit

close
Nathaniel Schutta

By Nathaniel Schutta

The single most important tool in any developers toolbox isn't a fancy IDE or some spiffy new language - it's our brain. Despite ever faster processors with multiple cores and expanding amounts of RAM, we haven't yet created a computer to rival the ultra lightweight one we carry around in our skulls - in this session we'll learn how to make the most of it. We'll talk about why multitasking is a myth, the difference between the left and the right side of your brain, the importance of flow and why exercise is good for more than just your waist line.

The single most important tool in any developers toolbox isn't a fancy IDE or some spiffy new language - it's our brain. Despite ever faster processors with multiple cores and expanding amounts of RAM, we haven't yet created a computer to rival the ultra lightweight one we carry around in our skulls - in this session we'll learn how to make the most of it. We'll talk about why multitasking is a myth, the difference between the left and the right side of your brain, the importance of flow and why exercise is good for more than just your waist line.



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



RDFA : Weaving Richness and Meaning in the Web

close
Brian Sletten

By Brian Sletten

The human web is reasonably well in hand by now. We are getting pretty good at building systems that people find valuable and entertaining. We have not spent as much time concerned about our software friends. There is a ton a rich content available on the web that is too difficult to extract in automated ways using just XHTML, the meta tag and microformats. This talk will introduce you to some emerging technologies from the Semantic Web camp to enrich your web pages with useful information for both automated extraction and improved browsing experiences.

Meta tags and microformats are useful but will only get us so far. The Resource Description Framework (RDF) is the metadata substrate of the Semantic Web that will take us to the next level of machine-processability and the Web. It allows you to express fairly arbitrary relationships about people, places, things, and content in an open world way. It is trivial to mix and match terms, vocabularies, etc. and to have a rich expressive capability not bound by the limitations of the relational data model and XML schemas. GRDDL is a technology for generating RDF metadata from content on demand. This can include XML documents, XML-RPC requests, XHTML pages, etc. The content could include authorship



SPARQL : Querying the Web of Data

close
Brian Sletten

By Brian Sletten

The human-friendly Web is about nicely-formatted, accessible content for users to browse. There are emerging Data Webs (both public and private) that rely on technologies from the Semantic Web stack to link increasingly rich connections between various data sources. SPARQL and RDF are the main tools for expressing and using this connectivity. This talk will introduce you to one of these topics and the practical and accessible aspects of employing them on the Web and in the Enterprise.

Getting people to come to consensus on common models and schemas is usually the hardest part of any data integration strategies. These technologies help lower the bar on both the technical and social costs of stepping up your integration strategies.

We will explore:

an introduction to RDF and the SPARQL query language

the fantastically successful Linked Data project that connections billions of interrelated content

how to include relational data in the mix

how to include enriched Web pages in the mix

how to build client-friendly applications on top of this information



HTML 5 ... and the Kitchen Sink

close
Brian Sletten

By Brian Sletten

HTML 5 is an adventurous and confusing prospect that will help change the Web as we know it. It is being finalized as a standard but won't be fully supported by most browsers for quite some time. Companies like Apple and Google have already committed to it as the future of Web application development, however. There are a huge number of new features, updates and gotchas coming at us (including the proverbial kitchen sink!) so it is time to get prepared. This talk will walk you through the new bits and try to put it all into perspective.

Attendees will learn about HTML 5 and related specs including:

New and deprecated elements

Immediate mode 2D drawing w/ the canvas element

Timed media playback

Local storage and offline mode

Bi-directional communication sockets to servers

Messaging between documents

Drag and drop support

And much more!

There will be a lot covered but this should be accessible to anyone interested in Web development.



Semantic SOA : Meaningful Service Strategies

close
Brian Sletten

By Brian Sletten

The goal for web services was always to reduce our burden by increasing the potential for reuse of business functionality. Somehow, we got lost along the way in a morass of confusing, unfulfilling and downright broken technologies.

While we are interested in pursuing REST-based systems for managing information, we need some strategies for tying it all together sensibly. If we abandon WSDL, SOAP and UDDI, what do we replace them with? This talk will walk you through combining resource-oriented strategies with technologies from the Semantic Web to describe, find, and bind to services in dynamic, flexible and extensible ways.

We will start to blur the distinction between data, documents, services and focus on information and how it is connected to what we already know.

This talk will introduce you to strategies for building on individual REST services to produce a well-described, dynamic, discoverable fabric of services that can be used in a variety of scenarios including:

finding data sources

finding transformation services

orchestrating these sources and services in reusable ways

publishing discoverable services

Prerequisite: The Semantic Web: The Future Now, Give it a REST and SPARQL : Querying the Data Web would all be helpful talks to have attended



What's Brewing in Java

close
Venkat Subramaniam

By Venkat Subramaniam

Java has come a long way, and yet there is so much that's happening in this space. In this presentation we will take a look at the exciting additions and changes coming up in the next version of Java.

Status of the Java language and the libraries

Features that are around the corner

JVM capability enhancements

Benefits of these imminent changes

Prerequisite: Good programming knowledge of Java



How to Approach Refactoring

close
Venkat Subramaniam

By Venkat Subramaniam

You can't be agile if your code sucks. You know that you have to constantly refactor your code and design. But the questions is how? In this presentation, instead of looking at a laundry list of refactoring techniques, we will instead look at how to effectively approach refactoring and along the way discuss some core principles to look for.

We will take some sample code and refactor it. As we refactor, we will measure the quality of code using continuous integration. You can pick up a list of refactoring techniques from tools. However, in this section you will learn how and when to drive those tools, and more important why.



Scala Tricks

close
Venkat Subramaniam

By Venkat Subramaniam

Scala is a very powerful hybrid functional pure object oriented language on the JVM. Scala is known for its conciseness and expressiveness. In this presentation we will look at some common tasks you do everyday in developing applications and see how they manifest in Scala.

We will look at the strengths of Scala from application development point of view. Rather than focusing on the syntax of Scala, we will focus here on Scala idioms and powerful Scala libraries to perform routine tasks.



Tackling Concurrency on the JVM

close
Venkat Subramaniam

By Venkat Subramaniam

In this presentation we will take a quick walk though the issues with concurrency and how the solutions provided in Scala and Clojure help address those.

The gaining popularity of multi-core processors has rekindled the

concurrency question: How do you effectively implement multithreaded

applications on the Java platform? The familiar approach in Java is to

create threads and to manage access to shared mutable state using

synchronized locks. This approach to concurrency is fraught with hard work

and uncertainties. Have you marked the appropriate methods synchronized,

did you decorate the relevant fields volatile, did you properly construct

the mutually exclusive regions of code, and is there a potential for

deadlock lurking in the code.

In this talk you'll learn about alternate ways to tackling concurrency on

the JVM. One approach i



Testing with dependencies

close
Venkat Subramaniam

By Venkat Subramaniam

Testing is a key ingredient to the success of a project. However, testing becomes awfully hard when your application deals with dependencies and that is often the reality.

In this presentation we will discuss how to approach testing when the code has dependencies. We will discuss tools, techniques, languages, and principles that can help decouple, mock, and help us effectively test your application code.



Transforming to Groovy

close
Venkat Subramaniam

By Venkat Subramaniam

Groovy is a elegant, dynamic, agile, OO language. I like to program in Groovy because it is fun and the code is concise and highly expressive. Writing code in a language is hardly about using its syntax, however. It is about using the right idioms. Come to this section to pick up some nice Groovy idioms.

In this presentation you will take some Java code that does common operations and transform it to idiomatic Groovy. You will participate in exploring various options as you help transform several examples. Each example is intended to hone a particular idiom or Groovy facility.

Prerequisite: Some knowledge of Groovy is helpful but not required.



What's new in Spring

close
Craig Walls

By Craig Walls

In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for nearly everyone.

It's been 8 years since Spring 1.0 was released. In that time it has gone from a modest open-source project to being a de facto standard Java application framework. Now, as Spring enters its 8th year, it continues its attack on Java complexity, packed with many new features such as:

First-class REST support

A new expression language

More options for annotation-driven bean wiring

Bean profiles

Declarative caching abstraction

Enhanced Java-based configuration

A new "c:" namespace

Unified property management

And much more

In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for n



Introducing Spring Roo: From Zero to Working Spring Application in Record Time

close
Craig Walls

By Craig Walls

In this example-driven session we'll see how to swiftly develop Spring applications using Spring Roo. We'll start with an empty directory and quickly work our way up to a fully functioning web application. You'll see how Roo handles a lot of heavy-lifting that you'd normally have to do yourself when working with Spring. And we'll stop at a few scenic points along the way to see how Roo accomplishes some of its magic.

In recent years, rapid application development frameworks such as Rails and Grails have earned a lot of attending. By employing code generation, convention-over-configuration, and the dynamic capabilities of their core languages (Ruby and Groovy) to offer unparalleled productivity, helping get projects off the ground quickly.

As awesome as these frameworks are, they do have one negative mark against them. Although developers love working with them, convincing the "boss" to build mission-critical applications in a relatively new development style based can be difficult. The mere mention of a word like "Groovy" conjures up images of tie-dye shirts and VW vans. Risk-averse project managers oft



Beyond JUnit: Powertools for Test-Driven Development

close
Craig Walls

By Craig Walls

Writing tests is more than just writing JUnit test cases and hoping that they'll pass when your project is built. If you want assurance that your code is sound and provides the desired functionality, then you'll want to test it from every angle and run those tests as frequently as possible.

In this session, we'll look at a few testing tools that you may not be all that familiar with, including:

Infinitest : A continuous testing tool that reports test failures almost as quickly as you can break them.

Mockito : A relatively new tool for mocking objects in tests.

Concordion : A framework for writing FIT-like functional specifications, without the hassles of FIT.

jqUnit and JSTester : A xUnit-like framework for testing JavaScript.

Selenium : A framework for in-container testing of web applications.

If you're ready to elevate your testing prowess to the next level, come see how these tools can help.



Building Web Applications with Spring MVC

close
Craig Walls

By Craig Walls

In this session, we'll start with the basics of Spring MVC development, focusing on how to leverage the new annotation-driven model. With that foundation set, we'll continue by exploring the new features in Spring 3.0 and 3.1 to build RESTful web applications that can serve both human-facing content as well as resources that are consumed by machine clients.

From the very beginning, Spring has included Spring MVC, a web framework built around the Spring Framework. Originally based on a rich hierarchy of controller classes, Spring MVC served developers well, but began to look a little long in the tooth compared to other web frameworks.

Starting with Spring 2.5, Spring MVC took a major evolutionary step, breaking away from the rigid controller class hierarchy model to embrace a more flexible annotation-driven model. Often referred to as Spring @MVC, this new model has continued to improve with Spring 3.0 and Spring 3.1.



Modular Java: An Introduction to OSGi

close
Craig Walls

By Craig Walls

Contrary to what you may have heard, OSGi is neither complex, nor heavyweight. In this session, I'll show you how OSGi can actually simplify application development rather than complicate it. We'll look at the benefits of modularity, the fundamentals of OSGi, and see how to develop basic OSGi bundles. We'll also see how a few gadgets in the OSGi toolbox can ease the development of OSGi bundles.

The secret weapon for attacking complexity in any project is to break it down into smaller, cohesive, and more easily digestible pieces. Unfortunately, Java lacks critical ingredients necessary to achieve true modularity.

Enter OSGi. OSGi is a mature and established framework for dynamic modularity in Java. With OSGi, you'll be able to realize true modularity in your Java projects, making them more flexible, comprehensible, and testable.



Modular Java: Declarative OSGi with Spring Dynamic Modules

close
Craig Walls

By Craig Walls

This session will introduce you to Spring-DM. You'll learn how working with OSGi services can be as easy and as natural as declaring a in Spring. In addition, we'll look at how to use Spring-DM's web extender to develop modular web applications in OSGi. And we'll see how Spring-DM became part of the OSGi specification as Blueprint Services.

OSGi is a great framework for realizing true modularity in your Java applications. Unfortunately, however, working with OSGi services requires coding directly to the OSGi API and getting to know some new patterns for dealing with service availability.

If having to work with the OSGi API makes you feel uneasy, then have a look at Spring Dynamic Modules (aka, Spring-DM). Spring-DM brings a declarative service model to OSGi, relieving you from programatically servicing and consuming services. What's more, because Spring-DM is based on the popular Spring Framework, it brings all of the power of Spring to OSGi development.

Prerequisite: Modular Java: An introduction to OSGi



The Modern Enterprise Java Development Environment

close
Brian Sam-Bodden

By Brian Sam-Bodden

In this session we'll look at what a modern Java/Java EE environment could and should look like. This session is a survey of the software infrastructure that needs to be in place to create a productive and successful development environment. Version control, continuous integration, metrics and static code analysis and more.

Learn what needs to be setup early, what can wait, and what can be sourced out and how to deal with privacy and security issues.

In this session we'll look at what a modern Java/Java EE environment could and should look like. This session is a survey of the software infrastructure that needs to be in place to create a productive and successful development environment. Version control, continuous integration, metrics and static code analysis and more.

Learn what needs to be setup early, what can wait, and what can be sourced out and how to deal with privacy and security issues.



Tools and Techniques to build Smart Java Applications

close
Brian Sam-Bodden

By Brian Sam-Bodden

In this session we will explore the Java tools, techniques and algorithms that enable us to filter, classify, relate and discover patterns in our data that might not immediately obvious. With the emergence of social networking applications a great deal of data and hidden connections that can be leveraged to build better and smarter applications.

In this session we will explore the Java tools, techniques and algorithms that enable us to filter, classify, relate and discover patterns in our data that might not immediately obvious. With the emergence of social networking applications a great deal of data and hidden connections that can be leveraged to build better and smarter applications.

The session will explore:

- Data Mining

- Text Classification

- Semantic Searching

- Weka



Groovy on the Cloud

close
Brian Sam-Bodden

By Brian Sam-Bodden

In this session we'll talk about how the combination of cloud computing a flexible, lightweight dynamic language like Groovy and a few architectural and design principles can be used to create highly scalable and maintainable web applications.

In this session we'll look into EC2 and other cloud offerings and what Groovy offers to tap into the power of commodity cloud computing platforms.

In this session we'll talk about how the combination of cloud computing a flexible, lightweight dynamic language like Groovy and a few architectural and design principles can be used to create highly scalable and maintainable web applications.

In this session we'll look into EC2 and other cloud offerings and what Groovy offers to tap into the power of commodity cloud computing platforms.



Relational Database Alternatives

close
Brian Sam-Bodden

By Brian Sam-Bodden

In our industry the database is king and we we say database, more often than not we mean "relational database". This talk is a survey of the many alternatives to a relational database and the situations in which they can (and sometimes must) be used.

In this talk we'll discuss systems like MongoDB, CouchDB, Neo4J, Cassandra and others and how can they be used with your existing Java infrastructure

In our industry the database is king and we we say database, more often than not we mean "relational database". This talk is a survey of the many alternatives to a relational database and the situations in which they can (and sometimes must) be used.

In this talk we'll discuss systems like MongoDB, CouchDB, Neo4J, Cassandra and others and how can they be used with your existing Java infrastructure