For courses in introductory software engineering, Java programming, Java software engineering, and software development methodology with Java, offered in departments of computer science, computer and information sciences, software engineering, information systems, and information technology. Today's programmers need more than just programming prowess - they need to understand object-oriented design, software quality assurance, and software project management. This unique text teaches the fundamentals of Java programming in the context of object-oriented software engineering and a Unified-Process-based software development methodology. Written with the understanding that the introduction to software engineering and Java can be daunting, this text uses illustrative examples and real-life applications to make learning easier.