I don't know why people are recommending books and websites. It's not what being asked.There is, in fact, an easy way to learn any language. Even Java Language. Just change the approach towards the language. Learn how to program. Don't just learn how to use a particular language.If I go on dissecting a learning process, the very first barrier is the syntax. But if you have some prior programming experience, this becomes easy. What I do is simply refer a cheat sheet. Refer Java cheat sheet for the syntax. Syntax is almost similar to C.Next barrier is OOP. Java is strictly OOP. You can not/should not do stray coding in JAVA. Grasp the fundamentals of OOP. Understand why we do so much hassle for this abstraction. Try to understand the ease it brings. Orient your brain to think in OOP style, rather than writing just procedures. How the object creations, reference to object and garbage collections work. Once you get he essence of OOP, you can use that fundamental in any language. Generic Programming is quite daunting. But, trust me, it brings lot more flexibility.Then move on to design pattern, which is again ubiquitous. Get a list of design patterns. Study the implementation, advantage and pitfalls of each of them. Learn the trade offs.Once you reach this far, then go for GUI, Multithreading, File/Network IO, RPC, etc. Java has got packages and libraries for all of them. Again, the concept of Multithreading and IO are language in dependent. Java has got so many inbuilt classes and interfacing. It's quite daunting to remember their usage. But, you don't have to remember them all. You can always refer the docs. The libraries used often get absorbed naturally, with lots of practice. Do refer GUI programming through Swing and Applets. It will help you with the android programming too.In a nutshell, once you understand the art and craft, you can pick any language and manage to live with it.Note: Refer different sources to comprehend each topic. Sticking to a book or web site, never gonna help.