Technology is changing pretty quickly, especially Java. Do you think that the programming style in general is also evolving ? Or do you consider that the things that you teach in your book were already pertinent in the past, are recommended nowadays, and will always be adequate in the future ?
Software development is still a relatively new (and immature?) field, and so is clearly constantly evolving. New languages are sprinnging up all the time providing new facilities and idioms to help us write better code.
Existing languages are also growing rapdily (for example, Java, C++, and C# are all NOT standing still!). Each revision of these languages provides more facilities to express your code's intent more clearly, so yes - programming style, even in a given language, naturally changes over time.
An example from C++ - the "boost" library (www.boost.org) has provided a number of well known almost "foundational" classes, many of which are being adopted in the next revision of the C++ standard. Modern C++ style favours using these classes, where a few years ago their use was "specialist" and not at all commonplace. They now form a common vocabulary in standard C++ code designs. They are pretty much now the definition of the modern C++ idiom.
Many things discussed in Code Craft are "timeless" techniques that have been around a while but are still pertinent today. I'm sure in the future new useful techniques and idioms will evolve that the book does not describe. It's inevitable - and I'd need a time machine to do anything about that (or a second revision of the book).
But the core theme of Code Craft - that good programmers are set appart by their attitude to the task of programming is definitely universal and timeless. Well, until we manage to create machines that will write code for us :-)