I learned Java after mastering C++, thus making Java easy to learn. The trick to learning java though is not the language, it is the library. So much of working with Java is knowing what tools are already built for you in the library classes. There are many things that I like and dislike about Java, mostly based on what is the differences between Java and C++. One pro, is the interface. It is a much cleaner way of handing multiple inheritance. One con is the lack of destructors. C++ destructors were a good place to release resources, both memory, locks, hardware, etc.. C++ is very explicit on when a destructor is called. The equivalent in Java is invoked during garbage collection and may never get called. I am still on the fence about pointers. In C++ you worked with them explicitly while pointers are hidden from you in Java. You are less likely to have a memory leak in Java because of this, less likely though not impossible. I was always careful with dealing with pointers so it was rare that I had memory leaks due to pointers. Again, I can go both ways. I do like the concept of smart pointers that are automatically part of Java and have to be explicitly coded into C++.
Cay Horstmann's Home Page
Java 8 API
The JavaDoc documentation of Java 8, the Java Platform, Standard Edition 8 API Specification.
Java Reference Guide
Oracle Technology Network for Java Developers
This was formerly a site run by SUN until Oracle acquired Sun.
Java Tutorial -- from tutorialspoint
Here is another site that teaches Java programming. I have not had time to fully research the quality of this site. From my quick tour, it looks good. Any feedback on this site would be appreciated.
Learn Java - Free Interactive Java Tutorial
Interactive learning of Java from the LearnJavaOnline.org website.
The Java Tutorial -- from ORACLE
The Java Tutorials are provided by ORACLE as part of their Java Documentation website.