Recommended Books for C/C++/JAVA

C
The C Programming Language by Brian W. Kernighan, Dennis Ritchie, Dennis M. Ritchie
This book is meant to help the reader learn how to program in C. It is the definitive reference guide, now in a second edition. Although the first edition was written in 1978, it continues to be a worldwide best-seller. This second edition brings the classic original up to date to include the ANSI standard.

C Answer Book, The (2nd Edition) by Clovis L. Tondo
This is an answer book that provides solutions to all the exercises in The C Programming Language, Second Edition, by Brian W. Kernigham and Dennis M. Ritchie. Careful study of the C Answer Book, Second Edition, used in conjuction with K&R, will help you understand C and teach you good C programming skills. You cannot learn a programming language by only reading the language constructs. 

C++
The C++ Programming Language by Bjarne Stroustrup
This classic work shows a care and understanding of C++ that only Bjarne Stroustrup, the designer of the language, can achieve. It also conveys the punctilious and sometimes suffocating detail that only Stroustrup would desire to communicate. The novice programmer will have difficulty distinguishing between the essential and the dispensable material. However, experienced C++ programmers will appreciate the reference manual portion of the book, which contains an exact definition of C++ that even numerous examples cannot express. Stroustrup's book has several chapters on classes and the reference manual component of the book contains the complete grammar of classes. This is a book that every experienced C++ programmer needs to own.


Thinking in C++ by Bruce Eckel
Fully revised and beefed up with plenty of new material on today's Standard C++, the new edition of Bruce Eckel's Thinking in C++: Volume I is an excellent tutorial to mastering this rich (and sometimes daunting) programming language, filled with expert advice and written in a patient, knowledgeable style.
The effective presentation, along with dozens of helpful code examples, make this book a standout. The text first sets the stage for using C++ with a tour of what object-oriented programming is all about, as well as the software design life cycle. 


Effective C++: 55 Specific Ways to Improve Your Programs and Designs
This exceptionally useful text offers Scott Myers's expertise in C++ class design and programming tips. 
The book opens with some hints for porting code from C to C++ and then moves on to the proper use of the new and delete operators in C++ for more robust memory management. The text then proceeds to class design, including the proper use of constructors, destructors, and overloaded operator functions for assignment within classes. (These guidelines ensure that you will create custom C++ classes that are fully functional data types, which can be copied and assigned just like built-in C++ classes.)



Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
C++ expert Scott Meyers provides essential techniques for getting more out of the Standard Template Library inEffective STL, a tutorial for doing more with this powerful library.
The book is organized into 50 tips that explore different areas of the STL. Besides providing a list of dos and don'ts, Meyers presents a lot of background on what works and what doesn't with STL. Each tip is demonstrated with in-depth coding samples, many of which make use of two-color printing to highlight the most important lines of code.


Inside the C++ Object Model By Stanley B. Lippman 
Inside the C++ Object Model focuses on the underlying mechanisms that support object-oriented programming within C++: constructor semantics, temporary generation, support for encapsulation, inheritance and "the virtuals" - virtual functions and virtual inheritance. This book shows how your understanding the underlying implementation models can help you code more efficiently and with greater confidence.  He covers the semantic implications of the C++ object model and how that model affects you programs.


Accelerated C++: Practical Programming by Example
After a tour of basic C++, the book looks at more advanced C++ features, such as templates, including built-in support for containers. Besides tapping the strength of Standard C++, you also will learn to design with your own templates. The authors have tested the approach in the book in their own teaching, and honed a set of worthwhile examples that will help anyone get familiar with these powerful language features. All examples make use of the command line and console (without GUI programs), but the advantage is that this code should run on any of today's operating systems and compilers. 

The C++ Standard Library: A Tutorial and Reference by Nicolai M. Josuttis 
Programming with the C++ Standard Library can certainly be difficult, but Nicolai Josuttis's The C++ Standard Library provides one of the best available guides to using the built-in features of C++ effectively.
The C++ Standard Library provides plenty of default functionality in the form of the Standard Template Library (STL) for containers (like vectors and linked lists), as well as generic algorithms (which allow you to sort, search, and manipulate elements inside containers). The best thing about The C++ Standard Library is that it gives the reader a concise guide to working with these basic containers


JAVA
Java™ Programming Language, The, 4th Edition by James Gosling, Ken Arnold and David Holmes
Written by several of Java's inventors, The Java Programming Language, Third Edition provides a nearly indispensable guide to basic and advanced features in today's hottest programming language. Perfect for the intermediate or advanced developer, this book delivers a wealth of information on how to do more with Java. The first sections provide a nicely compact tour of Java basics. Subsequent chapters delve into basic and advanced language features of what can be done with classes, interfaces, and other design features in Java. The authors' explanations are notably clear and never pedantic. 


Effective Java Programming Language Guide by Joshua Bloch
Written for the working Java developer, Joshua Bloch's Effective Java Programming Language Guide provides a truly useful set of over 50 best practices and tips for writing better Java code. As a veteran developer at Sun, the author shares his considerable insight into the design choices made over the years in Sun's own Java libraries (which the author acknowledges haven't always been perfect). Based on his experience working with Sun's best minds, the author provides a compilation of 57 tips for better Java code organized by category. Many of these ideas will let you write more robust classes that better cooperate with built-in Java APIs. 

Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer
Threads are a fundamental part of the Java platform. As multicore processors become the norm, using concurrency effectively becomes essential forbuilding high-performance applications. Java SE 5 and 6 are a huge step forward for the development of concurrent applications, with improvements to the Java Virtual Machine to support high-performance, highly scalable concurrent classes and a rich set of new concurrency building blocks. In "Java Concurrency in Practice," the creators of these new facilities explain not only how they work and how to use them, but also the motivation and design patterns behind them.


Head First Java by Kathy Sierra, Bert Bates
Head First Java the introductory Java book category has finally come of age. This is an excellent book, far more capable than any of the scores of Java-for-novices books that have come before it. Kathy Sierra and Bert Bates deserve rich kudos--and big sales--for developing this book's new way of teaching the Java programming language, because any reader with even a little bit of discipline will come away with true understanding of how the language works. Perhaps best of all, this is no protracted "Hello, World" introductory guide. Readers get substantial exposure to object-oriented design and implementation, serialization, neatwork programming, threads, and Remote Method Invocation (RMI)

SCJP 1.5 Book - Kathy Sierra and Bert Bates
Kathy Sierra is a co-developer of the SCJP exam and Sun's practice exam. She is also a Sun Certified Java Instructor and the founder of the world's largest Java certification website, Javaranch.com.
Bert Bates is a Sun Certified Programmer for Java and has participated in the development of the SCJP exam and Sun's practice exam.
With hundreds of practice questions and hands-on exercises, SCJP Sun Certified Programmer for Java 6 Study Guide covers what you need to know--and shows you how to prepare--for this challenging exam.