Desert Southwest Software Symposium

July 29 - 31, 2005 - Phoenix, AZ


Sheraton Phoenix Sky Harbor Airport Hotel
1600 South 52nd Street
Tempe, AZ   85281
Map »

Ramnivas Laddad

Author of AspectJ in Action, Principal at SpringSource

Ramnivas Laddad is a SpringSource Principal Enginner. He has over a decade of experience in applying his enterprise Java and aspect-oriented programming (AOP) expertise to middleware, design automation, networking, web application, user interface, and security projects.

Ramnivas Laddad is a well-known expert in enterprise Java, especially in the area of AOP and Spring. He is the author of AspectJ in Action, the best-selling book on AOP and AspectJ that has been lauded by industry experts for its presentation of practical and innovative AOP applications to solve real-world problems. Ramnivas, a Spring framework committer, is also an active presenter at leading industry events such as JavaOne, JavaPolis, No Fluff Just Stuff, SpringOne, Software Development, and has been an active member of both the AspectJ and Spring communities from their beginnings.



Presentations

Performance Monitoring in J2EE Applications

J2EE has become the main new platform for enterprise application deployment. Good performance is an important business requirement. Supporting this requirement needs application profiling during the development phases and performance monitoring after application deployment. Come to this session to understand challenges and choices in monitoring J2EE applications.

Performance monitoring solutions must work under constraints imposed by the environment. Further, they must balance conflicting requirements such as overhead vs. richness of information. All of these need careful understanding of both requirements and solutions as well as the costs of any tradeoff decisions.

This session presents various tools and techniques available for monitoring J2EE applications. We will consider requirements of performance monitoring solutions in different scenarios. We will also discuss underlying enabling technologies such as Java Virtual Machine Profiling Interface (JVMPI), Java Virtual Machine Tool Interface (JVMTI), JFluid, JMX, design patterns, and aspect-oriented programming (AOP). During the session, we will demonstrate many of the tools and technologies discussed.

Introduction to Aspect-oriented Programming with AspectJ

Aspect Oriented Programming (AOP) enables modularizing implementation of crosscutting concerns that abound in practice: logging, tracing, dynamic profiling, error handling, service-level agreement, policy enforcement, pooling, caching, concurrency control, security, transaction management, business rules, and so forth. Traditional implementation of these concerns requires you to fuse their implementation with the core concern of a module. With AOP, you can implement each of the concerns in a separate module called aspect. The result of such modular implementation is simplified design, improved understandability, improved quality, reduced time to market, and expedited response to system requirement changes. Come to this session and learn all about how AOP can help you simplify developing complex systems.

AspectJ (http://eclipse.org/aspectj) is the leading implementation of AOP for the Java programming language. AspectJ is a new language as well as its implementation. The output produced by the AspectJ compiler is compatible with the Java byte code specification. Further, AspectJ is well integrated with the most commonly used IDEs, which makes the Java developer more productive.

This session is targeted at the developer with no or little familiarity with AOP and AspectJ. It will introduce AOP’s concepts and the AspectJ programming language, along with many examples and live coding to solidify the concepts learned. After attending the session, you will have a clear idea about AOP's value and its practical applications.

Introduction to Aspect-oriented Programming with AspectJ

Aspect Oriented Programming (AOP) enables modularizing implementation of crosscutting concerns that abound in practice: logging, tracing, dynamic profiling, error handling, service-level agreement, policy enforcement, pooling, caching, concurrency control, security, transaction management, business rules, and so forth. Traditional implementation of these concerns requires you to fuse their implementation with the core concern of a module. With AOP, you can implement each of the concerns in a separate module called aspect. The result of such modular implementation is simplified design, improved understandability, improved quality, reduced time to market, and expedited response to system requirement changes. Come to this session and learn all about how AOP can help you simplify developing complex systems.

AspectJ (http://eclipse.org/aspectj) is the leading implementation of AOP for the Java programming language. AspectJ is a new language as well as its implementation. The output produced by the AspectJ compiler is compatible with the Java byte code specification. Further, AspectJ is well integrated with the most commonly used IDEs, which makes the Java developer more productive.

This session is targeted at the developer with no or little familiarity with AOP and AspectJ. It will introduce AOP’s concepts and the AspectJ programming language, along with many examples and live coding to solidify the concepts learned. After attending the session, you will have a clear idea about AOP's value and its practical applications.

Aspect-oriented Refactoring: Taking Refactoring to a New Level

Refactoring allows reorganizing code while preserving the external behavior, while AOP facilitates modularizing crosscutting concerns in a system through use of a new unit of modularity called aspect. Aspect-oriented refactoring synergistically combines these two techniques to refactor crosscutting elements. Individually, refactoring and AOP both share the high-level goal of creating systems that are easier to understand and maintain without requiring huge upfront design effort. A combination of the two -- aspect-oriented refactoring -- helps in reorganizing code corresponding to crosscutting concerns to further improve modularization that is easy to understand, highly consistent, and simple to change.

Aspect-oriented refactoring provides means beyond conventional refactoring techniques. While steps in conventional refactoring modularize code to a certain point, the use of AOP squeezes out the code that cannot be further refactored. Aspect-oriented refactoring offers substantial improvement to the code in a variety of situations: exception handling policies, local contract enforcements, resource management and optimization schemes, concurrency control, worker object creation, and so forth.

This presentation will examine fundamentals of aspect-oriented refactoring, a few common patterns, and a few examples in J2EE space. The presentation features live coding to illustrate the ideas learned.

Java Generics in Depth

The Java generics facility in Java 5.0, similar in spirit to C++ templates, enables implementing parameterized types. Using this facility, you can get more help from the compiler to write type-safe code and avoid many ugly casts. While Java generic facility is simpler than C++, make no mistake; it brings its own set of intricacies! Find out all about this important feature in Java 5.0.

This talk will present Java generics in depth -- from language constructs including the wildcard syntax to “under the hood” handling of generic types in the Java VM. This session features live coding to reinforce the concepts presented.

Design Pattern Modularization with AOP

Design patterns -- object oriented, concurrency control, and J2EE -- all have certain crosscutting elements present. The obvious result of conventional implementation is unclear implementation that is tedious to implement and tough to change. Aspect-oriented programming (AOP) offers a way to simplify implementation of these design patterns. Further, AOP offers new design patterns of its own that allow for new ways of implementing functionalities. This session shows how the use of AOP can simplify implementation of design pattern.

Implementing design patterns using AOP offers multiple benefits. First, like other applications of AOP, it modularizes the implementation of the design patterns. The modularization localizes any changes, such as introducing optimization and switching from one concurrency control scheme to another without system-wide re-implementation. Second, new design patterns can be introduced in systems without invasive changes. Third, use of AOP to implement design patterns results in reusable code components. In effect, AOP transforms the reusable concepts in design patterns into reusable code. Further, use of AOP does not modify the intent and philosophy of the target design patterns, thus preserving the investment in understanding the value and consequences of those design patterns.

In this session, we will discuss how fundamentally AOP transforms the pattern implementation. We will look at examples from all the kinds of design patterns mentioned -- object-oriented (GoF), concurrency control, J2EE, as well as aspect-oriented design patterns.

Books

by Ramnivas Laddad

Aspectj in Action: Enterprise AOP with Spring Applications Buy from Amazon
List Price: $49.99
Price: $29.32
You Save: $20.67 (41%)
  • To allow the creation of truly modular software, OOP has evolved into aspect-oriented programming. AspectJ is a mature AOP implementation for Java, now integrated with Spring.

    AspectJ in Action, Second Edition is a fully updated, major revision of Ramnivas Laddad's best-selling first edition. It's a hands-on guide for Java developers. After introducing the core principles of AOP, it shows you how to create reusable solutions using AspectJ 6 and Spring 3. You'll master key features including annotation-based syntax, load-time weaver, annotation-based crosscutting, and Spring-AspectJ integration. Building on familiar technologies such as JDBC, Hibernate, JPA, Spring Security, Spring MVC, and Swing, you'll apply AOP to common problems encountered in enterprise applications.

    This book requires no previous experience in AOP and AspectJ, but it assumes you're familiar with OOP, Java, and the basics of Spring.

    "Clear, concisely worded, well-organized ... a pleasure to read."

    -From the Foreword by Rod Johnson, Creator of the Spring Framework

    "This book teaches you how to think in aspects. It is essential reading for both beginners who know nothing about AOP and experts who think they know it all."

    -Andrew Eisenberg, AspectJ Development Tools Project Committer

    "Ramnivas showcases how to get the best out of AspectJ and Spring."

-Andy Clement, AspectJ Project Lead

"One of the best Java books in years."

-Andrew Rhine, Software Engineer, eSecLending

"By far the best reference for Spring AOP and AspectJ."

-Paul Benedict, Software Engineer, Argus Health Systems

"Ramnivas expertly demystifies the awesome power of aspect-oriented programming."

-Craig Walls, author of Spring in Action


by Ramnivas Laddad

Aspect Oriented Refactoring Buy from Amazon
Price: $49.99

by Ramnivas Laddad

Aspectj in Action: Practical Aspect-Oriented Programming Buy from Amazon
List Price: $44.95
Price: $40.45
You Save: $4.50 (10%)
  • A guide to aspect-oriented programming and the AspectJ language, this book provides code examples that enable quick implementation of functionality in a system. Thorough introductions to AOP and AspectJ will help developers learn or advance their knowledge of AspectJ. Examples of everyday situations in which AspectJ solutions can be applied, such as logging, policy enforcement, resource pooling, business logic, thread-safety, authentication and authorization, and transaction management are provided. In addition, design patterns and idioms are covered, as is business rule implementation. The latest technologies, such as JEES, JAAS, and log4j, are explained and connected with AspectJ.

by Kal Ahmed, Sudhir Ancha, Andrei Cioroianu, Jay Cousins, Jeremy Crosbie, John Davies, Kyle Gabhart, Steve Gould, Ramnivas Laddad, Sing Li, Brendan Macmillan, Daniel Rivers-Moore, Judy Skubal, Karli Watson, Scott Williams, and James Hart

Professional Java XML Buy from Amazon
Price: $59.99
  • Java is a powerful and fast maturing development platform used to create client/server applications on any platform. XML is the most recent markup language, a standard format for the universal sharing of data and an intrinsic part of all major development both on the Web, and in the wider business community. Enterprise web applications are increasingly combining Java and XML technologies to provide more efficient ways to integrate Internet presence with business systems in the world of e-commerce.

    This core professional compendium breaks down into three main sections. The first presents the basic XML standards, Java APIs and programming tools for handling XML. The second part presents a selection of Java techniques which make up the building blocks for XML-based applications. The section is Java-centric, and presents the common scenarios for XML data I/O, building on the basic tools presented in part one. The final and largest section of the book shows how XML applications can be built on top of the techniques shown in part two, and demonstrates how XML can be used to solve real programming problems.

    If you want a hefty box of XML manipulation tools at your disposal and would like to discover how the language could be used in your Java applications, then this book is for you.