Speakers
- Dan Allen
- Aaron Bedra
- Tim Berglund
- Rohit Bhardwaj
- David Bock
- Stevie Borne
- Jeff Brown
- James Carr
- Scott Davis
- Jeremy Deane
- Keith Donald
- Michael Easter
- Robert Fischer
- Neal Ford
- Brian Gilstrap
- Andrew Glover
- Brian Goetz
- Stuart Halloway
- David Hussman
- Mark Johnson
- Dave Klein
- Scott Leberknight
- Tiffany Lentz
- Howard Lewis Ship
- Chris Maki
- Matthew McCullough
- Alex Miller
- Ted Neward
- Michael Nygard
- Pratik Patel
- Mark Richards
- Brian Sam-Bodden
- Srivaths Sankaran
- Nathaniel Schutta
- Aleksandar Seovic
- Ken Sipe
- Brian Sletten
- Matt Stine
- Venkat Subramaniam
- Burr Sutter
- Vladimir Vivien
- Mark Volkmann
- Craig Walls
- Richard Worth
Mark Richards
SOA and Integration Architect, Author of Java Message Service
Video
Presentations
Common AntiPatterns and How To Avoid Them
In the book "97 Things Every Software Architect Should Know" (O'Reilly, 2009) I wrote about the importance of design patterns as a useful means of communication between architects and developers. Equally important to patterns is an understanding of AntiPatterns - things that we repeatably do that produce negative results. AntiPatterns are used by developers, architects, and managers every day and are one of the main factors that prevent progress and success. In this session we will look at some of the more common and significant development and architecture antipatterns. Through coding and design examples, you will see how these antipatterns emerge, how to recognize when the antipattern is being used, and most importantly, how to avoid them. By attending this session, you will be part of a movement to reduce the AntiPattern catalog from hundreds of entries to only a few.
Agenda - What are anti-patterns? - Factors that cause anti-patterns - Common software and architecture anti-patterns
I have selected 7 of the most common anti-patterns I see continually in the industry and in my travels. We will be going into the details of each of these anti-patterns.
Using Apache Camel
Apache Camel is a robust open source integration framework that handles routing and mediation tasks associated with enterprise integration. Camel allows you to quickly and easily route messages and integrate components in a distributed, decoupled manner. For example, using the Camel Java DSL, you can send and receive JMS messages in just a couple of lines of Java code. In this live coding session I will describe what Camel is, describe the overall architecture, show why it is useful, and demonstrate through live coding examples how to use the Camel Java DSL to write simple (and complex) routing logic. By attending this session you will learn Camel well enough to use it at work the next day.
Agenda - What is Apache Camel? - Understanding Camel's basic architecture - Configuring and Running Camel - Input Endpoints and Triggers - Message Enhancement and Transformation - Message Processing - Comparable Technologies and Future Direction
The Art of Messaging
Messaging is both a science and an art. Messaging is a science with respect to the mechanics of the JMS API and the syntax for sending and receiving messages. However, messaging is also an art when it comes to applying the JMS API to solve real-world problems. In this session I will review some of the more common use cases for messaging and show techniques for significantly increasing both the performance and scalability of messaging-based applications. Using ActiveMQ, you will see how to create embedded brokers, solve internal application bottleneck issues, how to use asynchronous logging with Log4J and JMS, and how to significantly speed up your messaging applications. In this session I will also describe and demonstrate some emerging trends in RESTful JMS (that is, JMS over HTTP). Come to this session to find out how much fun messaging can really be!
Agenda - Messaging Topologies (Internal, External, and Embedded) - Using Messaging to Remove Internal Application Bottlenecks - Using Messaging with Log4J for Asynchronous Logging - Messaging Performance Techniques - RESTful JMS (JMS over HTTP)
Intro to Messaging Using JMS and ActiveMQ
More and more companies are using messaging as a means for heterogeneous communication, scalability, performance, and load balancing. Why? Because messaging provides asynchronous requests, guaranteed delivery, load balancing, and ease of development. In this session I will introduce some basic messaging fundamentals, then show how easy it is to send and receive messages using the JMS API. During this session I will also show how to setup and configure ActiveMQ, an open source enterprise-wide messaging provider. By attending this session you will see how easy messaging using JMS really is!
Agenda - Messaging Models - JMS Message Types - The JMS API - A Brief Tour - Installing and Configuring ActiveMQ - Sending and Receiving Messages using Point-to-Point - Sending and Receiving Messages using Publish-Subscribe
Transaction Processing in Spring
The Spring Framework offers many options for handling database transactions. However, how do you know which options to choose from? Should you use the Spring Framework DataSourceTransactionManager, JDBCTransactionManager, or the EntityTransactionManager? When should you use global transactions? Should you use declarative transactions with annotations or use programmatic transactions? How can you improve the performance and scalability of your application through the use of transactions? As you can guess, there is a right way and a wrong way of using transactions with Spring. In this session I will discuss transaction processing within the Spring Framework and through live coding show you how to effectively use transactions within Spring.
Agenda - Spring transaction processing basis - Understanding the different transaction managers in Spring and when to use each - Spring transaction tuning and optimization techniques - How to avoid the common Spring-related transaction pitfalls
Mark's NFJS Schedule
Books
by Mark Richards, Richard Monson-Haefel, and David A Chappell
-
The Java Message Service (JMS) provides a way for the components of a distributed application to talk asynchronously, or for welding together legacy enterprise systems. Think of it as application-to-application e-mail. Unlike COM, JMS uses one or more JMS servers to handle the messages on a store-and-forward basis, so that the loss of one or more components doesn't bring the whole distributed application to a halt.
JMS consists of a set of messaging APIs that enable two types of messaging, publish-and-subscribe (one-to-many) and point-to-point (one-to-one). The highly lucid explanation of the ways in which these work makes the technical content a lot more approachable. In practice, however, Java Message Service is still a book for Java programmers who have some business programming experience. You need the background.
After a simple JMS demonstration in which you create a chat application using both messaging types, the authors dissect JMS message structures, explore both types in detail, and then move on to real-world considerations. These include reliability, security, deployment, and a rundown of various JMS server providers. The appendices list and describe the JMS API, and provide message reference material.
Considering the complexity and reach of the subject matter, Java Message Service does a great job of covering both theory and practice in a surprisingly efficient manner. It's easy to see why JMS has become so popular so quickly. Recommended. --Steve Patient, Amazon.co.uk
by Richard Monson-Haefel
-
In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as:
- Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)
- Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)
- Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)
- Simplicity Before Generality, Use Before Reuse (Kevlin Henney)
- For the End User, the Interface Is the System (Vinayak Hegde)
- It's Never Too Early to Think About Performance (Rebecca Parsons)
To be successful as a software architect, you need to master both business and technology. This book tells you what top software architects think is important and how they approach a project. If you want to enhance your career, 97 Things Every Software Architect Should Know is essential reading.
by Neal Ford
-
Twenty-seven weekends a year, the No Fluff, Just Stuff conference rolls into another town, featuring the world's best technical speakers and writers. Up until now, you had to go to one of the shows to soak up their collective wisdom. Now, you can hold it in the palm of your hand. The No Fluff, Just Stuff Anthology represents topics presented on the tour, written by the speakers who created it. This book allows the authors the chance to go more in depth on the subjects for which they are passionate. It is guaranteed to surprise, enlighten, and broaden your understanding of the technical world in which you live.
The No Fluff, Just Stuff Symposium Series is a traveling conference series for software developers visiting 27 cities a year. No Fluff has put on over 75 symposia throughout the U.S. and Canada, with more than 12,000 attendees so far. Its success has been a result of focusing on high quality technical presentations, great speakers, and no marketing hype. Now this world-class material is available to you in print for the first time.
by Mark Richards
- Understanding how transaction management works in Java and developing an effective transaction design strategy can help to avoid data integrity problems in your applications and databases and ease the pain of inevitable system failures. This book is about how to design an effective transaction management strategy using the transaction models provided by Java-based frameworks such as EJB and Spring. Techniques, best practices, and pitfalls with each transaction model will be described. In addition, transaction design patterns will bring all these concepts and techniques together and describe how to use these models to effectively manage transactions within your EJB or Spring-based Java applications. The book covers: - The local transaction model - The programmatic transaction model - The declarative transaction model - XA Transaction Processing - Transaction Design Patterns