11

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.

1
  • 2
    depend on is it still obsolete the return time invested to read it should also be compared with time use to read up-to-date book. Jul 18, 2011 at 1:40

7 Answers 7

27

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.

3
  • 12
    One can argue that K&R is about C itself and it's the best C book you're going to find.
    – Vitor Py
    Jul 17, 2011 at 20:35
  • 7
    I agree with @Victor Braga. It's not about when the book was written, but it's about how much the language has changed. Java has changed a lot in the last 5-10 years. However, C has not. Your 5 year old Java books are pretty much worthless. However, your first edition of the K&R C book from 1978 is far more up-to-date (although it's not 100% accurate, and neither is the second edition from 1988). The main factor is how much the language and supporting tools have changed between the publication of the book and when you want to use the book.
    – Thomas Owens
    Jul 17, 2011 at 20:40
  • 1
    +1 smalltalk books are 30 years old and still invaluable. Jul 18, 2011 at 7:00
8

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.

0
4

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).

6
  • 6
    It depends on how you define fundamentals. 5-10 years ago, things like generics, autoboxing, enumerations, varargs, and the for-each loop were new or didn't exist yet. I believe that those features fundamentally changed how you write good, high quality, readable, and maintainable software in Java. Not to mention, a number of standard functions wouldn't be covered because people would have to roll their own. Why learn 5-10 year old practices and habits that you'll just have to break and learn new techniques?
    – Thomas Owens
    Jul 17, 2011 at 20:45
  • 5
    @World Engineer - That's scary. 12 years ago was 1999, which means Java 1.2 was out. After that, changes were made to RMI, JNDI became core, the assert keyword was added, changes were made to regex, and the NIO and logging APIs, generics, Scanner class, autoboxing, enums, varargs, and the for-each loop were added. Not to mention changes to AWT, Swing, JDBC, and the compiler and JIT compiler. That university is teaching bad habits to anyone who reads that book. I would have to question the value of anyone who graduates from that program if they can't use adequate resources for the first courses
    – Thomas Owens
    Jul 17, 2011 at 22:16
  • 3
    @Thomas He did say "opening course". Nothing you listed is taught in any introductory course except for maybe a foreach.
    – Pete
    Jul 17, 2011 at 23:16
  • 2
    @Pete We used or discussed generics, Scanner, enums, autoboxing, and Swing in the first two quarters (about a semester and a half) of my first-year CS sequence.
    – Thomas Owens
    Jul 17, 2011 at 23:30
  • 1
    The text was more of a reference, Swing and Scanners showed up in the first week.
    – user28988
    Jul 18, 2011 at 0:50
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.

1
  • 1
    The first part is true, but I don't agree with the second part. A book on Java is typically going to teach you how to build with Java, not design a system that is going to eventually be implemented in Java. And also, comparing a relatively unchanging language (like C) to a fast-changing language (like Java) is flawed.
    – Thomas Owens
    Jul 18, 2011 at 1:24
2

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.

0

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.

0
-1

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.