Here are few books that are recommended for learning Java:
Thinking in Java - Bruce Eckel's renowned book
Advanced Programming for the Java 2 Platform - As an experienced developer on the Java platform, you undoubtedly know how fast moving and comprehensive the platform is. Its many application programming interfaces (APIs) provide a wealth of functionality for all aspects of application and system-level programming. Real-world developers never use one or two APIs to solve a problem, but bring together key functionality spanning a number of APIs. Knowing which APIs you need, which parts of which APIs you need, and how the APIs work together to create the best solution can be a daunting task. To help you navigate the Java APIs and fast-track your project development time, this book includes the design, development, test, and deployment phases for an enterprise-worthy auction application. While the example application does not cover every possible programming scenario, it explores many common situations and the discussions leave you with a solid methodology for designing and building your own solutions. This book is for developers with more than a beginning level of understanding of writing programs in the Java programming language.
A Java GUI Programmer's Primer - This book contains an introduction to the systematic development of Graphical User Interfaces (GUIs) using the Java environment. It does not attempt to introduce the Java language and it is assumed that the reader has some familiarity with Object Oriented Development (OOD) and its practical expression in Java. Suitable resources to assist with obtaining this knowledge are given in Appendix A. However, a brief explanation of some aspects of Java will be presented where appropriate, particularly where the aspect differs significantly from C++.
Java Thin-Client Programming - This redbook focuses primarily on topics such as threading, from a Java thin client programming perspective. Also, because these applications are in a multi-user environment, security issues will be covered. The use of CORBA on the network-computing environment is also introduced. Java programming issues, such as object recycling and serialization, are necessary topics to consider when dealing with client/server applications. When an application is developed under the object-oriented paradigm, an introduction to simple concepts of model/view programming techniques will help the reader. Last, but not least, the basics techniques and tools required for profile applications are presented.
Java Thin-Client Programming for a Network Computing Environment - IBM RedBook published in 1998, so not the latest stuff