Java is either a very small programming language, if you count just the syntax, or a very large one, if you include the standard class libraries. For example, concurrent programming is supported in the syntax by the single keyword synchronized, and is implemented by the Thread class. This structure makes it difficult for a newcomer to the language (like me) to know what's important, and what's peripheral.
That is why I think this well-written book is ideal. It provides a road map of the language, an overall organisation that shows how the whole language fits together, how it is intended to be used, and the kind of applications you can easily write with it, with the emphasis on network programing and security support. Yet it also manages to cover the features in sufficient depth to get a feel for how to use them, by providing clear example code-fragments. Read it to get an understanding of the language, then read one of the language definition books for the details.