I'm a big fan of learning from your coworkers and peers, as they probably possess knowledge you won't find in any book. Said that, I wouldn't count on learning everything from them, but only the extras, during discussions, during code reviews, design reviews, etc. I believe that most theoretic knowledge should come from books / web, while practical experience, well - move your giant a** and start coding! 🙂
So let's list several open source books I read from top to bottom and I believe are very helpful to get you bootstrapped with all Java capabilities, including the newcomers in Java 8.
"This book is directed mainly towards beginning programmers, although it might also be useful for experienced programmers who want to learn something about Java. It is certainly not meant to provide complete coverage of the Java language. The seventh edition requires Java 7, with just a couple brief mentions of Java 8.".
#2 - What’s New in Java 8
If you're new to Java, you should read other more basic books first. Once you feel you have good control of the basic language features, you can move forward to reading this one. This book is for more advanced users that are familiar with the Java programming language and would like to get acquainted with the new Java 8 features.
"Java 8 is a giant step forward for the Java language. Writing this book has forced me to learn a lot more about it. In Project Lambda, Java gets a new closure syntax, method-references, and default methods on interfaces. It manages to add many of the features of functional languages without losing the clarity and simplicity Java developers have come to expect."
#3 - Think Java
"Think Java is an introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters."
"Java: A Beginner’s Guide checks in at a short 30 pages, but it gives beginner programmers, or just beginners to the Java language, the basic history of the language as well as introduces them to the syntax."
"If you are an experienced Java programmer, but quite new to Linux, and you have been looking for information on the tools available to develop and deploy Java applications on Linux systems, this book will provide a lot of useful information. If you are an experienced Linux user or developer, and you are interested in using the Java language on that platform, this book will guide you through some advanced Java development topics and will present, we hope, some novel uses for familiar Linux and GNU tools."