Weekend Benefit a Must Read Book List for Java Engineers

Weekend Benefit - A must-read book list for Java engineers #

Hello, I’m Yang Xiaofeng. In this issue of Weekend Welfare, I have compiled a list of reference books that I have used in my study and use of Java, and I would like to share them with you. In the column, many students have asked me to recommend some reference books. Also, I believe that books are a good source of systematic knowledge, but the real improvement comes from practical reading of source code, technical exchanges, etc. After all, books are difficult to keep up with the changes in technology and architecture. In addition, I have also tried to shorten the length of the book list.

For strengthening the foundation of Java programming, I recommend Bruce Eckel’s “Thinking in Java”. This book is a very famous classic. Its characteristic is that it not only introduces the basic knowledge points of Java programming, but also considers various choices and judgments in programming. It also includes the use of design patterns. The author discusses the theory and practical significance from different angles, building a solid knowledge system of Java programming.

Of course, this book also has its shortcomings. After all, everyone’s foundation is different. If you have absolutely no foundation in Java programming, you can also consider other reference books, such as “Java: The Complete Reference”.

In addition, some parts of these two books are somewhat outdated, especially “Thinking in Java”. For example, there is currently little need to learn Java desktop graphics libraries, and of course, they do not include the latest syntax and APIs. My suggestion is to ignore outdated content and supplement your learning with the study of new Java technologies.

Speaking of classics, “Effective Java” is naturally indispensable. The English third edition of this book has been released in China, covering various new features from Java 7 to Java 9. Strictly speaking, this book is not a basic book, but it is highly recommended to read it after you have a certain foundation. Regarding the reading of this book, my suggestion is to review it while learning. While absorbing the experiences in the book, think about how you handled them in practical applications. Although the specific chapters of “Effective Java” may start from a certain point, they can be considered as the comprehensive application of various knowledge about Java, JVM, object-oriented programming, etc. It is helpful for designing and implementing high-quality code.

Effective Java

“Head First Design Patterns” does not need me to introduce it again. It is already not easy to present design patterns in such a relaxed form. The connections between chapters allow you to deepen your impression repeatedly. With vivid expression and rich exercises, it is easier to immerse yourself in it.

Head First Design Patterns

This book is very suitable for students with limited foundation in object-oriented programming and design patterns. Design patterns are not silver bullets, and in practice, don’t use them just for the sake of using them. Mastering typical patterns and being able to apply them to different situations is good enough. Treat them as a “dialect” for communication between programmers.

Talking about concurrency and virtual machines, let’s talk about the reference books.

“Java Concurrency in Practice”, the authors are all reputable figures, such as Brian Goetz. I have quoted his views multiple times in the column, and the many powerful authors have also ensured the quality of the book. Apart from the aura of the authors, the content of this book is built on theories. It explains the principles before discussing practices, which enables you to truly understand the reasons behind them. This book focuses more on the problems in concurrent programming, how to deeply understand and define the problems, guide engineering practices with reliable methods, and does not overly focus on the source code level of concurrent libraries.

Java Concurrency in Practice

My study advice for this book is to make full use of the provided example code and combine it with your own business practice for in-depth learning. After all, the content of this book is somewhat theoretical and may not be suitable for quickly mastering the so-called “core” technologies of concurrency.

As for learning JVM, I don’t need to say much, right? Students who have read the column definitely know that I often recommend “Understanding the Java Virtual Machine” by Zhou Zhiming, which can be said to be one of the best JVM books in China.

Understanding the Java Virtual Machine

Here, I didn’t recommend books specifically about GC algorithms, etc. They may have limited value for most Java engineers.

For performance optimization, I recommend “Java Performance: The Definitive Guide” by Charlie Hunt and Binu John, which I recommended in the live broadcast last time. James Gosling, the father of Java, also highly recommends this reference book.

Java Performance: The Definitive Guide

However, this book also has its shortcomings. It focuses too much on commercial operating systems and related tools such as Solaris. I suggest that when reading it, try to understand its ideas and principles and focus more on mainstream open platforms such as Linux. There are also some books related to open source software and internet architecture that can be used as additional reading. You can refer to the following:

“Spring in Action”

It can be said that frameworks like Spring have become the de facto standard for business development. It is necessary to systematically master the design and practice of the Spring framework.

“Netty in Action”

Netty has been widely used in various internet architectures and games due to its outstanding performance and scalability. It is even possible to say that without a careful analysis of Netty, understanding of NIO and related aspects may still be superficial.

“Cloud Native Java”

The architecture of Java applications is evolving rapidly, and new architectural applications such as microservices are becoming more and more widely used. Even if you don’t necessarily use frameworks like Spring Boot and Spring Cloud, it is necessary to study their design concepts and practical technologies. Of course, if you use frameworks like Dubbo in practice, you can also choose relevant books.

The changes in cutting-edge fields are very fast, and many once-popular open source software has gradually been proven to have various drawbacks or has been discontinued by vendors. Therefore, for this part of learning, I suggest not blindly following the latest trends, but focusing on the problems and solutions in distributed design, achieving generalization, and paying attention to learning channels outside of books.

The next two books are not Java books, but for Java programmers to advance, it is necessary to learn mainstream internet architectures, understand distributed architecture, caching, message middleware, and other dazzling technologies. They are very helpful for Java engineers who aspire to become architects.

“Large-Scale Distributed Website Architecture Design and Practice”

This book summarizes the author’s experience in building secure, stable, scalable, and highly concurrent distributed websites.

“In-depth Distributed Caching: From Principles to Practice”

This book combines principles, architecture, and case studies from leading internet companies, and is worth referring to.

Please accept a 15 RMB learning reward voucher for those selected comments. The column is coming to an end, and I hope all subscribing students can persist until the end. I also welcome everyone to leave comments and share their learning or interview experiences.