A practical, code-intensive approach for readers who need to use Java for professional software development. This book teaches Java programming concepts and techniques within the context of professional, object-oriented, software analysis and design. These concepts, idioms and real-world applications can be applied to the user's own programs to help them become a more efficient Java developer. In addition to the basic Java language, this book covers JFC, AWT, security, threads, sockets, JARs, JavaBeans, developing packages, and testing and debugging.