Northern Virginia Software Symposium

November 7 - 9, 2008 - Reston, VA


Sheraton Reston
11810 Sunrise Valley Drive
Reston, VA   20191
Map »

NOTE: You are viewing details about a past event. We will be back in RestonNovember 1 - 3, 2013.
View the event details here ».

Alex Miller

Sr. Engineer with Terracotta Inc.

Alex Miller is a Sr. Engineer with Terracotta Inc, the makers of the open-source Java clustering product Terracotta. Prior to Terracotta, Alex worked at BEA Systems on the AquaLogic product line and was Chief Architect at MetaMatrix. His interests include Java, concurrency, distributed systems, query languages, and software design. Alex enjoys writing his blog at http://tech.puredanger.com and has spoken at a number of Java user group meetings and conferences.

In St. Louis, Alex is responsible for founding the Lambda Lounge, a user group for the study of functional and dynamic languages.



Presentations

Java 7 Preview

Possible library and language changes for Java 7 have been in discussion since early 2007 and many things have been proposed. This talk will focus on those items that are most likely to be included and some of the more controversial language changes that might be included in a future release. For a comprehensive list of almost everything being considered, see http://tech.puredanger.com/java7.

Some examples of topics that will be discussed include: * Java Module System * NIO 2 (new NEW IO) * Swing Application Framework, Bean Binding, and Bean Validation * Date and Time API * Fork/Join framework * JMX 2.0

Design Patterns Reconsidered

The Design Patterns book launched a revolution in object-oriented design and provided a vocabulary for OO developers to communicate their ideas. However, in some cases, patterns used blindly can lead to awkward, confusing, or hard to maintain code. It is time for some common patterns used in Java to be reconsidered so that we can derive the benefits from patterns while minimizing their concerns.

This talk will re-evaluate key patterns like Singleton, Template Method, Visitor, and Proxy. These patterns have downsides and in some cases, do more harm than good. Examples of each pattern will be give in Java and examined for clarity, testability, and flexibility. Important problems will be discussed and examples of alternate solutions will be given.

In the Singleton pattern, we'll look at problems like hidden coupling, testability, and extensibility and examine ways to use interfaces and dependency injection to avoid the need for the classic Singleton pattern. We'll also re-examine the double checked locking idiom and update it with current advice.

In the Template Method pattern will look at problems with communicating intent, composition, and API evolution and examine ways to refactor your code to use composition instead by way of interfaces, factories, and strategies.

In the Visitor pattern we'll look at how changes in data structures break existing visitors, problems with intermingling navigation and behavior, return values, exception handling, performance, and more. We'll look at alternative implementations that alleviate some of these problems.

In the Proxy pattern, we'll look at problems with maintaining proxies in the face of interface changes, loss of identity and type precision, and coupling. We'll examine some alternatives like static and dynamic code generation and composition.

Exploring Terracotta

Terracotta is an open-source Java clustering technology. It creates a virtual, durable Java heap that is shared across a cluster of Java Virtual Machines. This is done by dynamically instrumenting bytecode at load time to intercept calls to read and write fields, and also to enter and exit monitor locks. Information about these calls is then transmitted to the Terracotta Server (which can also be clustered) and out to other nodes in the cluster as needed. The advantage of this approach is that many Java programs can be clustered without code changes by providing just external Terracotta configuration. Many performance optimizations are performed to minimize communication and locking costs. Terracotta is commonly used for session sharing in web applications, distributed caching, and distributed workflow processing.

This presentation will give an overview of the Terracotta technology, how it's implemented, and common use cases that can benefit from the technology. We will look at some code and cluster some Java applications during the presentation.

Some topics that will be covered include: * Terracotta architecture * Heap replication without serialization * Distributed synchronized and wait/notify, cluster locking * Use cases * Example programs

Books

by Terracotta Inc.

The Definitive Guide to Terracotta: Cluster the JVM for Spring, Hibernate and POJO Scalability (Expert's Voice in Open Source) Buy from Amazon
List Price: $44.99
Price: $27.12
You Save: $17.87 (40%)
  • Get the definitive guide on all the fundamentals of Terracotta as well as user secrets, recipes, and prepackaged frameworks.

    Written by Terracotta's chief technology officer Ari Zilka and his team, The Definitive Guide to Terracotta: Cluster the JVM for Spring, Hibernate and POJO Scalability covers the following:

    • High Availability (HA) nth degree scaling and clustering for traditional J2EE and Java EE 5 applications (using Seam or other application) as well as Spring–based enterprise applications
    • Everyday Terracotta using its prepackaged frameworks and integration recipes, including configuration and customization for your application tuning, no matter the scale
    • Power user secrets available, including config modules, customized advanced performance tuning, SDLC, Maven, and more

    What you’ll learn

    • See how Terracotta works fundamentally, and the user pieces and parts necessary for using Terracotta and its open source options
    • Learn and apply case studies involving distributed cache, Hibernate, Master/Worker, and HTTP Session
    • Understand thread coordination and advanced performance tuning
    • Use more advanced case studies involving Spring, POJOs, FOO, and more
    • Configure and create your own modules using the software development and deployment life cycle

    Who this book is for

    This definitive book from the Terracotta team is for both developers and architects who want to learn the “whats, wheres, whens, and whys” of the Terracotta scaling engine.

    Table of Contents

    1. Theory and Foundation: Forming a Common Understanding
    2. History of Terracotta
    3. Jumping Into Terracotta
    4. POJO Clustering
    5. Caching
    6. Hibernate with Terracotta
    7. Extending HTTP Sessions with Terracotta
    8. Clustering Spring
    9. Integration Modules
    10. Thread Coordination
    11. Grid Computing Using Terracotta
    12. Visualizing Applications