Yet Another 10 Books For Java Learners - Part I

Honestly speaking, there is no need to post an article on the topic “Top 10 Books For Java Learners”, which is possibly older than your age. I do this for the 12 students I’m teaching Java programming language recently, I’d like to summarize a book list of 10 for their reference. I don’t want to recommend books said to be great but I never read, so some of the books listed here maybe not that famous or popular, but at least they are good to me and helped me a lot in the past.

No.1 MOOC By University of Helsinki

Yes, I’m joking and I’m not joking. From my own experience, I don’t think it’s the most efficient way to read a book systematically when you are pure beginners - especially if you never write code before. What you need to do is to understand the basic concepts quickly first, then JUST DO IT! Keep practicing, keep practicing and keep practicing.

Object-Oriented Programming with Java Part I and Part II. Register an account at Test My Code. Finish all the exercises there. Post a screenshot to prove you really did it. That’s all.

Most of the students give positive feedback regarding the exercises. There is one Easter Egg in one of the test cases waiting for you to find there. Trust me, stick to the end and you won’t miss it.

Wait…but this is obviously not a book, right?

Yeah, right, but so what? For beginners, this would be the best resource for a quick start and get your hands dirty. Talk is cheap, show me the code!

No.2 Refactoring: Improving the Design of Existing Code

After you get your hands dirty for a long time and write enough code like shit, this book written by Martin Fowler is worthy to read thoroughly and practice the methods introduced one by one. Refactoring: Improving the Design of Existing Code has two editions, though the 2nd Edition is available with many updates, I would personally suggest you read the 1st Edition since you are a Java learner.

I always recommend this book to other programmers, as it had a great impact on my career. I was promoted to Team Leader in my first company because I finished refactoring against a module nobody wants to do - too painful and too brain-hurt. I found this book by chance in the bookshelf one afternoon, and I’m addicted to it and I just finished reading this book very quickly and used several methods there, and from that time on I began to write fully covered unit tests for my code, which made my life and our colleagues’ life much easier.

No.3 Effective Java

Joshua Bloch, the guy who designed and implemented Java Collection Framework(of course not himself alone), released the 3rd Edition of this book. For me, I actually read the Chinese translation of the 2nd Edition, which is very impressive. This is a book more like a master telling his experience, insights, best practices to you, rather than a textbook. This book, like its title, is really “Effective”.

No.4 Head First Design Patterns

“Design Patterns: Elements of Reusable Object-Oriented Software” by GoF is said to be “Classic, Awesome…” and blahblah. However, I didn’t read this legendary book, because I am too low to enjoy another funny book: Head First Design Patterns. All the source code of this book can be accessed at GitHub.

Life is short and I don’t want to waste too much time arguing which book is better or not. What I know is if you just want to read one book about Design Patterns in Java, then choose this one and you won’t regret.

No.5 Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code by Uncle Bob, IMHO, is not that practical and useful to me compared to the books listed above. But it’s a good summary and provides more information which can enhance you still, besides that, this book is very interesting and it’s a joyful read. When Uncle Bob said that he “turned on his old TV and tried to watch some scaring movies, but there is not even one ghost there. Sh.t!”, I just laughed to the ground. Anyway, for those who really care about quality, cleanness of your code, this book is a must-read.

PS: “Best Way to Learn Java Programming Online” is a great article from Lefteris Karageorgiou of Java Code Geeks. I put it here for your reference and hope you guys enjoy it.

-To Be Continued-