Code quality : the open source perspective / Diomidis Spinellis, Addison-Wesley, 2006
Here is an excellent book for Java and C++ programmers. It is the sequel to ‘Code Reading’. 500 pages. “It’s a very dense book, with something to think about in every sentence. If you carefully absorb everything it has to say and manage to implement it, you will be a programming wizard.” — Elizabeth Zwicky
Java : how to program / Paul Deitel, Harvey Deitel, Pearson Prentice Hall, 2010
“A comprehensive introduction to programming in Java that covers all major areas of the platform. To me, the best way to understand programming is by example, and this book contains copious, well-described sample code.” – Simon Ritter, Sun Microsystems
The typesetting and print quality is excellent. The code is easier to read due to the use of colour, with literals in blue, comments in green, highlighting in yellow. It is a heavy book, at 1500 pages. The CD contains Sun’s JDK, MySQL, NetBeans, and Eclipse.
Java Web services : up and running / Martin Kalin, O’Reilly, 2009
“This quick, practical, and thorough introduction to Java web services — the JAX-WS and JAX-RS APIs — offers a mix of architectural overview, complete working code examples, and short yet precise instructions for compiling, deploying, and executing a sample application. You’ll not only learn how to write web services from scratch, but also how to integrate existing services into your Java applications. ” — from O’Reilly site.
The art of debugging with GDB, DDD, and Eclipse / by Norman Matloff, No Starch Press, 2008
This book is important reading for anyone programming on Linux in C++, Java, Perl, or Python. It is very readable with 250 pages.
How to think about algorithms / Jeff Edmonds, Cambridge University Press, 2008
Here is a CS textbook for advanced undergraduate courses which is more readable than most. Apply its concepts to make your programs correct and fast. 450 pages.
Struts 2 in action / Donald Brown, Manning, 2008
This is about the framework for Java web applications. It has lots of code examples, and good explanations in 400 pages.
Building Spring 2 Enterprise applications / Interface 21 ; with Bram Smeets, Apress, 2007
This is about the framework for Java web applications, and is intended for the intermediate programmer. There are lots of code examples, and good explanations in 300 pages.
Professional multicore programming : design and implementation for C++ developers / Cameron Hughes, Tracey Hughes, Wiley, 2008
Concurrent programming has become important for a greater proportion of all programmers since commodity PC’s went multicore. Good books on this have been in OPL for years (click on the 5-star tag to see some of them). This book is useful because it gathers all the important topics into one place. It starts with a good introduction, then outlines machine architecture for Intel, AMD, Sparc and Cell. Then it gets into programming structure for thread synchronization, with code examples in C++. It has good reference information on Posix threads (pthreads). It is intended for C++ programmers, but Java programmers will gain from reading it too. It is not the most readable book in the library.
Test driven : practical TDD and acceptance TDD for Java developers / Lasse Koskela, Manning, 2008
TDD (Test Driven Development) takes a surprising amount of thought to do it right. Here are the techniques that lead to better software faster. 500 pages.
A programmer’s guide to Java SCJP certification : a comprehensive primer / Khalid A. Mughal, Rolf W. Rasmussen, Addison-Wesley, 2009
Here is a primer on Java that will be useful if you are getting certified. It includes material on recent improvements to Java such as generics. At 1000 pages, it is a bit long.