Does anybody know of any good reference book that covers the following topics in K&B SCJP book style?
1. Basic Stream I/O.
2. Serialization Versioning Problems and solutions.
3. Basics of externalizable interface.
4. Basic things to know about the Reflection API
5. Object class methods - clone() specifically, covering practical examples.
6. Observable , observer interface/class ( don't know which one is an interface and in which package these classes/interfaces are present )- basic stuff and some practical examples.
7. Basics of socket programming.
8. java.util.concurrent package and examples.
9. Semaphores, mutex, and locking.
10. Sort of getting started stuff about tcp/ip programming.
Also has anybody got any review for the data structures book 'data Structures and Algorithms in Java' by Michael T. Goodrich and Roberto Tamassia? I have been reading it for about a week or so. But it seems like it does not have enough examples that use the collections framework. Or may be it is too early to say this. But does anybody know of a better book?
The range of topics mentioned by you is so vast that I seriously doubt even a single book contains this variety of topics (let alone containing enough examples).
However, few books come to my mind are:
1) Java Network Programming by Harold (covers streams, I/O, serialization, TCP/IP programming etc.)
2) Java Reflection in Action by Foreman et.al. (an in-depth treatment to reflection)
3) Java Threads by Oaks, Wong (nice intro to Java threads)
4) Java Concurrency in Practice by Goetz (THE reference book if you are writing production-ready mulch-threaded Java code)
5) Java Generics and Collections by Naftalin et. al. (very good if you want to be serious with generics and collections)
I know this is too much to read, so the best approach I would suggest is, pick up a general Java book (e.g. Thinking in Java by Eckel etc.) along with Effective Java (by Bloch), and also go through Oracle's online tutorials.
This way, you'll understand which area you need to (and want to) focus on. And then you can refer necessary books from above mentioned list.
Also, don't forget that writing small programs (and debugging those) is much more helpful than reading a big book.
Thanks for your suggestions. I've started with Effective Java and I've been greatly impressed by whatever little I've read. What a wonderful book it is. I'm also simultaneous studying java threads ( it has all the topics I'm looking for to cover in an easy to understand language ). As I read and program sample applications from these books, I get references to other topics and for those I've been referring to Oracle docs.
Yea too many books make my study table look scary. :-) So I will rather look for these topics in Oracle docs to gain some basic knowledge.
I will look for Java Generics and Collections by Naftalin et. al. in our library - this topic interests me the most.