Intro to Java Programming by Liang is an excellent introduction to programming in Java. It covers topics such as basic concepts, types, functions, and Java's overall structure. It takes a simple view of Java and shows how to get started quickly and easily. I like that there is a Download button for the text so I do not have to read the whole book. It is also well organized with clearly defined sections.
One thing I thought the book lacked was a detailed look at using the Java code generator. I found that while it was easy to use, I didn't spend enough time really using it to write real programs. There were many examples in the book that used the code generator, but were not very readable or effective. I think a similar manual should be provided with the software so that programmers have a starting point.
Overall, this is a good intro to Java programming book. It provides the basics and a quick look at the language but does not go into depth on the topic. If you are just looking to learn the basics to create simple programs, this book will get you started quickly and easily. For more detailed information on Java programming, or for a book-by-book guide to Java programming, I recommend looking at "The Pragmatist" by Bruce Eckell.