Original link:
To become a top Java programmer, read these 11 books

“The best way to learn is to read”, this is my first experience after learning and having a certain amount of accumulation. Personally, reading has two advantages:

1. A good book is professionally worth far more than any other source material because it has been thought through, polished, and vetted over and over again to be published. 2. It’s easy to type in code from a book.

“After watching the book again, the best way to improve yourself is to look at some of the relevant post”, I personally think that this is the second step to learn, because often have hundreds of pages of a book, a good post is his book after learning some of the summary and refining, to comb the contents of the study is very good, of course, that is not to say that his method of study, will no longer be torn down.

Most programmers have the urge to read books, but don’t know which books to read. Here are some books I recommend to Java programmers (the author of each book will be highlighted in bold red). Most of them are books I read at ordinary times.

Understanding the Java Virtual Machine in Depth: Advanced JVM Features and Best Practices

If you’re not content to be an if… The else… Java programmers who want to go one step further, let me just name a few examples: 1. Understand the underlying operating mechanism of Java code; 2. Locate performance problems; 3. Deep Understanding of Java Virtual Machines: Advanced JVM Features and Best Practices by Zhiming Zhou is the best book on Java virtual machines in China. In the past six months, I have read this book at least five times. In addition to this book, there are some other books on virtual machines in China, but I have also bought, but a cursory look, many of the content is also “In-depth Understanding of The Java Virtual Machine: JVM advanced features and best practices” inside the book. It is also worth noting that the book “Understanding the Java Virtual Machine in Depth: Advanced JVM Features and Best Practices” is available in electronic form and can be downloaded by searching the Web. However, if you are interested, you are advised to buy the book. The electronic version of the book is usually the older version, and there are many new knowledge points that are not included in the latest revision of Understanding the Java Virtual Machine: Advanced JVM Features and Best Practices.

HotSpot In Action

All Java virtual machines follow the Java VIRTUAL Machine specification. There are dozens of Java virtual machines on the market. Understanding The Java Virtual Machine: Advanced JVM Features and Best Practices is not about a specific virtual machine, but about the Java virtual machine from the perspective of the Java Virtual machine specification. Most of the Java virtual machines we usually use or even commercial use are Sun HotSpot, you can enter the command line CMD, use the “java-version” command to see. If you want to get a more in-depth understanding of how virtual machines are implemented based on the Java virtual Machine specification, take a look at the book HotSpot In Action by Tao Chen. However, since HotSpot source code is written in C/C++, so readers are required to have a very good C/C++ foundation, if the two languages are not very familiar with friends, reading this book may not help you very much. Last but not least, if you are interested, you may as well download an openJDK from the Internet and HotSpot source code is in it.

Java Concurrent Programming

This book is often listed among the top 10 must-read books for Java programmers, but I personally don’t recommend it. Java Concurrent Programming By Brian Goetz. I read this book twice, and my personal feelings are: I think this may be the characteristics of foreigners writing books, because Java is developed and maintained by North American countries (Canada, the United States), so foreigners have a very clear and thorough grasp of the theoretical knowledge system in all aspects of Java. Open this book, what is the use of multithreading, what is deadlock, what is competition, what is thread safety and so on, all aspects of the knowledge point with a large number of text length, unavoidably let a person feel very boring, also difficult to let readers have substantial progress. I read this book twice, also belongs to the meaning of ten lines, have interest in the place to focus on reading. In any case, as a book that is often near the top of Jva’s list of 10 must-read books for programmers, it must be recommended.

Java Multithreaded Programming Core Technology

Java multi-threaded programming core technology author Gao Hongyan. Want to learn multithreading friends, this book is strongly recommended by me, my personal blog inside more than 20 multithreading blog are based on this book, and on the basis of this book to extract and summarize and write. This book and “Java concurrent programming Actual Combat” in contrast, this book is characterized by large length of code + small length of fine explanation, which may be related to the more pragmatic style of books written by Chinese. In this book, thread safety, synchronized, Reentrant, Timer and so on are explained in detail code, and many small knowledge points under each big knowledge point will be explained in detail, which is very practical value. Interested friends, I believe that as long as you follow the code inside this book to knock, run, think, three steps, for the use of multithreading and understanding will certainly enter a few strides. The disadvantage of this book is that it does not mention some classes under Java packages, such as CountDownLatch, Semphore, CyclicBarrier, Future, Callable, etc., nor does it touch on key CAS and AQS, nor does it mention the implementation principle of key classes. Of course, this is very in-depth, after learning this book if you can go to some of the knowledge of learning, research, you will slowly grow into a very powerful master of multithreading.

Effective Java Chinese edition

This is the only book I haven’t bought. I first came to know this book in my blog Java Code optimization (long-term update), and a friend mentioned this book in the comments below. At that time, I said I would buy this book, but I have no time to go to bookstores in the past two months, which is a pity, and I will definitely find time to buy this book later. Effective Java Chinese is written by Joshua Bloch, the chief architect of Google. I can’t comment on the book because I haven’t read it, but given the popularity of the book and the authorship of the book (and, by the way, the father of Java, Dr. James Gosling), I’m sure it’s a good read. Good code is something that every Java programmer should strive for. It’s not that writing good code today will improve performance much more than writing bad code, but it will improve the readability of the code and avoid many potential and unknown problems. Avoiding code that goes live and takes time to maintain — in terms of time cost, labor cost, and risk cost — can be very high.

An Inside Look at Java Web Technology

In-depth Analysis of Java Web Technology, by Xu Lingbo, taobao engineer. I can sum up this book in one word: all. HTTP, DNS, CDN, static, Jetty, Tomcat, Servlet, Spring, MyBatis and so on. It covers a wide range of knowledge, but it is not as in-depth as a book that focuses on a specific knowledge point. I feel that this book is to try to explain the inside of some Java Web technologies in a short space, so that readers have a rational understanding of the inside of these knowledge points. However, although the length of each knowledge point is not much, but the key points are basically covered, it is a really rewarding book. If you want to further understand the technical insider of these technologies, you have to buy relevant books or look up information on the Internet. There is a kind of throwing bricks to attract jade, or master led the door, practice in the personal feeling.

Core Principles and Case Analysis of Technical Architecture of Large Websites

Evaluate the book in one word, cock; Two words to evaluate this book, very cool; Three words on this book. It’s awesome. Ha ha, good, go on again possibly other people think I am water army. The author of “Core principles and Case analysis of large website technical architecture” is Li Zhihui, the former Alibaba technical expert. Most Java applications are used on the Web, now as long as a slightly larger Web application, must be a distributed system, then a distributed system with what technology? How does a large site grow from a small site? How to keep your website secure? Distributed systems use caches. What caches are there? What are the considerations of using caching? Related to distributed knowledge points, are reflected in this book, only you can not think, no he can not write, and write very easy to understand, basic belong to read once or twice, and then write down some notes to know how a thing. Read it a few times and your understanding of distribution will be deepened. And it is not only distributed knowledge, but also very grounding gas wrote how to be a good architect, in fact, I think this is not to want to do the readers of the architect to see, is to give the readers some advice, how to better to present an opinion, how to let others pay attention to your voice, how to see the good in people, astute, let a person benefit.

“Large Web System and Java Middleware Practice”

“Large website system and Java middleware practice” author Zeng Xianjie, is the technical director of Taobao, calculate should have at least P8 level in Ali bar. Part of the book and a rocket power above the large site technical architecture Core principles and the case analysis “coincidence, as the evolution of distributed systems, CDN, CAP and BASE theory, and so on, it shows that these are distributed system or a large website focus on content, again as a learning is also good. Middleware is the focus of the book to highlight three words, middleware is a very important thing in a distributed system, its most important role should be decoupled, reduce the strong dependence between the module and module, the dependence between different modules is reduced, can independently develop their own features, it also can saying is the goal of software engineering development and driving force. Therefore, part of the book is based on middleware, detailed interpretation of the various knowledge of middleware and JMS, suitable for distributed systems more familiar with and want to have a certain study of middleware readers.

Principles and Practices of Distributed Consistency from Paxos to ZooKeeper

Principle and Practice of Distributed Consistency from Paxos to ZooKeeper, by Ni Chao, engineer of Alibaba. This is a book I’ve been reading recently. Like the big Web Systems and Java Middleware Practices above, this book is in the category of distributed components. It is a bit of in-depth content, and of course it is also my own personal interest. Of course, this knowledge is a must if you want to become a great website architect, cTO of a company, etc. This book starts from the basic theory of distributed system, talks about Paxos algorithm, and finally introduces Zookeeper gradually. Of course, I am not in a position to comment on the second Paxos algorithm in this book, because I have not yet understood the Paxos algorithm (indeed, Paxos algorithm is somewhat difficult to understand and not easy to understand), and the following chapters have not been read. If you work for a company that uses Zookeeper, and you’re interested in learning how it works, this is the book for you.

MySQL5.6 Learning from Scratch

MySQL5.6 Learning from Scratch, by Liu Zengjie and Li Kun. As a Java programmer, I think we must not think database is a DBA thing, database is also a Java programmer must master a knowledge, rich experience in database performance optimization is a top programmer necessary skills. At present, the mainstream databases are Oracle and MySQL. Of course, MySQL is recommended for the main reasons I think there are two points: MySQL is lighter, smaller, easier to install and uninstall than Oracle. SQL is almost the same. If you want to learn database, you can learn MySQL, you can easily study at home. 2. With the movement of Alibaba to remove IOE in 2009, many Domestic Internet companies will choose MySQL as their database, because MySQL is free. So not only save money and do not need to rely on oracle MySQL to learn the problem I recommend this is my own learning to see “MySQL5.6 learn from scratch”, I feel very good this book, the knowledge point inside the book is very detailed, very comprehensive, readers choose the standard of books are mostly not these two points?

Deep Parsing of Spring source code

Deep analysis of Spring source code, by Hao Jia. The Spring framework is so well done and so powerful that many developers only know Spring and don’t know what a factory, singleton, or broker is (I’ve interviewed people for real experience). There’s a lot of complexity in implementing this kind of powerful framework, and that leads to a lot of confusion when your program uses Spring and something goes wrong, like an Error, like an Exception, like an application that’s not running as you expected, There seems to be no better solution than to search the Internet or ask someone. Reading Spring’s source code is a good way to learn, and I personally think it has many benefits: 1, understanding within the framework of implementation, can actively to solve problems, and don’t need to rely on others, 2 within the Spring framework USES a lot of design patterns, a good code design thinking, this will write code to you, for you to understand design patterns have greatly improved 3, research the Spring framework will greatly enhance your ability to read the code, I believe that as long as you can study is how to realize the clear Spring inside, other any framework source code won’t you All in all, I think that the ability to read the code is a common programmer and one of the biggest difference between a good programmer, the former can only write good things for others to use, the latter can not only use good, You also have a clear understanding of how the underlying implementation of what others have written is implemented, and you can easily fix it when problems arise. The author tries to explain how Spring source code is implemented in nearly 400 pages, but it is not easy to explain it completely, although it cannot be explained completely. However, I believe that the author’s explanation combined with the readers’ own research will surely give them a deeper understanding of the implementation of Spring.

Afterword.

These are some of the best books I recommend to Java developers. However, there are no Java basics and Java tutorials in these books. It is not that I do not recommend them, but it has been several years since I learned the basic Java technology myself, and I have forgotten what I read during the study. Therefore, I have to recommend some books that I have not read myself.

Finally, to everyone who has read this, thank you for your patience. I hope we can learn and progress together on our way to becoming a better Java programmer.

I have a wechat official account and often share some Java technology-related dry goods. If you like my share, you can follow me by searching “Java leader” or “Javatuanzhang” on wechat.