This book is written for Java developers who want to use UML effectively in the context of Java software development. The author focuses on the aspects of UML that are most useful for Java programmers, and intentionally ignores many UML features that are not relevant to Java environments.