During my first year of the Bachelor of Network Computing, I had two units on object-oriented programming in Java. The lecturer - an excitable Buffy fanatic - and the textbook were the same for both units. Unfortunately, both the lecturer and the textbook were subpar.
Last column, I spoke about how in such situations, it's up to you to use your initiative to find a better book. Hit up the bookshop or the library and find a book that suits your learning style, a book that answers the questions that the assigned textbook doesn't. The 'recommended reading' section of your course outline booklet is probably a good place to start.
Good websites are just as invaluable as books for the information technology student. In some instances, the official site of a language is just brilliant. In other instances, knowledgeable members of the coding community have set up superior websites.
Trail: Learning the Java Language
Sun Microsystems' Java 'trail' is brilliant. Back when I was studying Java, the tutor encouraged us to use this as our first port of call for solutions to all of our Java problems and misunderstandings.
The 'trail' starts, oddly enough, at the very beginning - it provides logical, coherent explanations of fundamental concepts like objects, classes, inheritances, interfaces and packages. It then moves on, explaining the mechanics of each of these concepts in a reasonable - but not great - level of detail. Easy-to-understand examples are provided.
Java Beans is another website I can recall my tutor making frequent reference to. It has a solid library of tutorials that, it should be noted, are relevant not only to Java programmers - there's some C++ and PHP stuff here too. Too, Java Beans provides the opportunity for members of the Java programming community to contribute content to the website. There is a reasonable collection of tutorials that have been uploaded by members of the community, most of which are quite specialist.
Looking at this website, I wish I'd known about it back when I was actually working on in-class tasks and assignments all those years ago. Java Lessons provides, yes, tutorials, but has a unique focus on examples. It teaches you the mechanics of the language and the purpose of each statement by providing you with a library of examples of varying complexity. Click on an example and it'll fire up the 'lesson viewer', which shows the source code in one window and an explanation for each line of code in another window. Move the cursor over a line of code and the viewer will highlight the relevant explanation. Visually, this website is ugly as all hell, but functionally it's great.
Java World Community
Java World's main page has some great articles that are probably most beneficial to those who already have a decent understanding of the language but want to expand their knowledge. Why we've included Java World in our list is its community section, which brings together the Java Q&A forum and some relevant blogs.
Java Coffee Break
I remember using this one during my university days. Java Coffee Break's library of tutorials is quite old - the author started his work back in 1996 - but is nonetheless very good if you're a newcomer to the language in search of tutorials that appeal to your learning style and specific needs.