Many of my Java books are 5 - 10 years old. Does it still help to read them, or should I use something within 2 years.
If the books is about the language itself, lose it and get a new one.
If the book is about programming as a subject (art, subject, discipline, techniques, whatever), then it definitely is worth reading. The best programming books I have were written over 10 years ago.
It depends on the book and on what you want to learn from them and on you.
There are goods reasons to read old books:
- If they teach concepts better than their new equivalents.
- If they teach general principles rather than specific technologies.
- If the technology they teach hasn't changed very much.
Personally, I do keep SOME of my old programming books:
- I know where to find what I'm looking for.
- They have my annotations in them.
- They jog my memory better than new books.
- It is (obviosuly) cheaper than buying new.
For example, the user manual for the ZX81 (from around 1981) has a great description of a straight line drawing algorithm. It still makes more sense to me than anything I've read since. I've used it as the basis of an implementation numerous times over the years.
All that said, I read new books too. I certainly don't want to get stuck in the dark ages.
If they were good then and the language features they teach haven't changed - then why not!
I don't think the fundementals of Java have changed very much since 1.2 (or Java 2).
One of the best electrical engineering books (the art of electronics) was written over 20 years ago and even though the electrical engineering field has grown in leaps and bounds, possibly the largest growth of any industry, the book is still known to many as the single, authoritative text.
While many of the examples in the book are outdated and replaced by newer designs the book is not about teaching you how to build a digital clock but how you should design one. The fundamental rules still apply and if it was a good book then then its a good book now.
Obviously if its a book about some old and obscure API it may not be useful today or in the near future and you can probably do without. but again a book like that is only telling you how to build something and therefor its life span is limited, keep with generalized books.
Keep the books that teach you how to design a solution not the ones that tell you how to build it. It may be clear what methods have changed and you can simply ignore those parts but a good book on C is still worth its weight in gold.
It may be helpful to keep old books around as a reference if you work on any legacy systems based on outdated technology, especially old J2EE systems. I used to keep an old J2EE book around because I would occasionally come across some old code that used EJB 2.1 or old Swing code.
The last version of Java to introduce big changes to the language was Java 5 in 2004. Any books written after that time should incorporate those language changes and should be ok to read in general (and may not even have had a newer edition published). Note however that a lot has changed in the Java ecosystem since that time; the Spring framework and Maven for example are now widely used technologies that weren't so prevalent then.
Go to amazon.com and look for java books. Usually books are about the same but you can figure out which one is better by reading reviews. I always pick the books like that - read the reviews and then decide which one I'm going to read.
For Java language and how to program in java, it good to have latest editions of these books, for example WeakReference class is from Java 1.2 and there aren't a lot of programmers that don't know that this class even exists in Java SE, which means that reading the latest books for Java it's best thing, this is only good for some frameworks, but in order to understand this latest books you need to have basics, which you aren't going to get with the latest books, but the with most recommended books. I think Thinking in Java latest edition it's a good book to start with Java