Java Engineer book list (elementary, intermediate, advanced)
brief introduction
How to learn to grow from a Java junior programmer to a qualified architect, or what kind of technical knowledge system a qualified architect should have, is a question often asked not only by a junior programmer who has just entered the workplace, but also by programmers who have been confused after working for a year or two
Starting from my own self-study experience, the author selects the following books from the perspective of beginners.
Elementary book list
Writing high quality code -- 151 suggestions for improving Java programs
This is a book worthy of introduction to Java that people put at the head of the bed. The book is extensive and informative. Most excellent programming books need to be written by foreigners, but this book about improving Java programming level is still good. It is suitable for people with basic Java programming ability.
For program apes, after working for a long time, they feel that programming habits are very important to a person. Good habits, not only work efficiency, but also fewer bugs. This book is very helpful to improve one's good programming habits.
The way of java programmer cultivation
This book covers the new features of java7 and the key technologies of java development. It makes an incisive analysis of the challenges brought to Java development by the coexistence of a large number of open source technologies, multi-core processors, concurrency and massive data, and provides profound insights into the practice frontier, involving the analysis of underlying concepts such as dependency injection, modern concurrency, class and bytecode, and performance tuning.
The truth in the book is very simple, but it is a wise saying for rookies. It basically outlines all the features you need for a mature software programmer expert. I consciously benefited a lot, many of which were either unexpected at that time, or happened, and I didn't pay attention to it, and so on. It has a great impact on me.
Java8 practice
This book comprehensively introduces the new features of the milestone version of Java 8, including Lambdas, stream and functional programming. With the functional programming feature, the code can be more concise, and the multi-core hardware can be used automatically. The book is divided into four parts: basic knowledge, functional data processing, efficient Java 8 programming and beyond Java 8. It clearly shows readers a modern picture of Java keeping pace with the times.
This is the best introductory book to understand lambda expressions. I also learned the lambda expression on the Internet. I feel I can use it. I just don't know the principle. I won't use it if I change the scene a little. This book is definitely the best book to learn the new features of Java 8.
Effective unit testing
Written by agile technology practice experts, this book systematically and deeply explains the tools, methods, principles and good practices of unit testing for software design; In depth analysis of various common test problems, including a large number of practice cases, strong operability, and can provide users with system practice guide for efficient test writing.
This paper introduces all aspects of unit testing, TDD, test double, bad taste of testing, testable design, etc. if each topic needs to be in-depth, it also needs to cooperate with other books and practices, which is very suitable for introductory unit testing. The examples in the book are very comprehensive. After reading, you will make great progress in unit testing using JUnit, and it is written in Java language. The content is very new.
Java core technology: Volume 2 advanced features
This book systematically and comprehensively explains the core concepts, syntax, important features and development methods of Java language. This book comprehensively covers advanced topics of Java technology, including stream and file, XML, network, database programming, internationalization, etc. it describes graphics and GUI programming in detail, as well as security, remote methods, annotation processing, local methods, etc. The description of Java technology in this book is accurate and in place, the description is in simple terms, and contains a large number of example code, which can help readers fully understand the Java language and apply it flexibly.
Although Volume 2 is an advanced feature, IO, file system, regular expression, network and JDBC are also very common components in daily programming. This book is a very easy Java technology book. Not only the original text is well written, but also the translator's translation is very smooth. When I was absolutely hopeless of the translated book, it turned the tide and told me that things had not been so bad.
Code neatness
Code quality is directly proportional to its cleanliness. Clean code is not only reliable in quality, but also lays a good foundation for later maintenance and upgrading. As a leader in the field of programming, the author of this book gives a series of effective clean code operation practices. These practices are embodied as rules (or "Enlightenment") in this book, supplemented by positive and negative examples from real projects. As long as these rules are followed, clean code can be written, so as to effectively improve code quality.
If every routine makes you feel comfortable, it's clean code. If code makes the programming language seem to exist to solve that problem, it can be called beautiful code.
Data structure and algorithm analysis - Java language description
This book is one of the three treasures of Java data structure and algorithm. Except these three books, the others are meaningless. The three treasures are:
*Black book "data structure and algorithm analysis Java language description" Mark Allen Weiss
*Blue Book Java data structures and algorithms Robert lafore
*Red Treasure Book "algorithm" Robert Sedgewick
The black book is better than formula reasoning and proof, as well as the simplicity and refinement of the algorithm. In addition, there are many exercises. The blue book is better than the simple explanation, demonstration and examples of the algorithm, which makes the difficult theory easy to understand. Hongbao Book wins in Stanford, a famous school in the Department. The demonstration is easy to understand and rich in content. With these three treasures, there is no need to worry about the algorithm. It will be much easier to read the introduction to algorithm after learning.
This book starts from explaining what data structure is, extends to advanced data structure and algorithm analysis, and emphasizes data structure and problem solving technology. The purpose of this book is to provide a practical introduction to data structure from the perspective of abstract thinking and problem solving, and try to include all important details about data structure, algorithm analysis and Java implementation
Intermediate book list
Refactoring: improving the design of existing code
Refactoring is definitely one of the most important things in the process of writing programs. Before writing the program, we can't understand all the requirements in advance. The design will certainly be poorly considered. Moreover, with the modification of the project requirements, the original design may have been changed beyond recognition. Moreover, we rarely have the opportunity to complete a project from beginning to end. We basically take over other people's code. What we need to do is refactoring, starting from small-scale refactoring.
Refactoring is design, design is art, and refactoring is art Three lines of a function is just a constant saying, which is an over correction of hundreds of lines of code. A more general view is that a function should be written on a page.
《Effective Java》
Such a book should have been read long ago, but it has only been read recently. After reading, I feel that I have some understanding of the deep principles of some programming rules. Before, I just knew the rules handed down by word of mouth, but I didn't know why. I found some answers in this book. The book covers all aspects of Java programming rules, including classes, interfaces, creation objects, functions in classes, function parameters and exceptions.
If you use the Java you just learned to make a small application, you can start reading this book selectively. The book gives the author's own suggestions on different features of Java in chapters. If you haven't used one of these features, there's no need to read the relevant chapters and jump over. Only when you have experienced, fallen, or been troubled will you resonate with the suggestions in the book
Java Concurrent Programming Practice
This book introduces Java threads and concurrency in simple terms. It is a perfect Java concurrency reference manual. Starting from the basic concepts of concurrency and thread safety, the book introduces how to use the basic concurrency building blocks provided by the class library to avoid concurrency danger, construct thread safe classes and verify thread safety rules, how to combine small thread safe classes into larger thread safe classes, and how to use threads to improve the throughput of concurrent applications.
Java advanced must see, the best book of multithreading.
Practical Java high concurrency programming
This book mainly introduces the basis, ideas, methods and practice of parallel programming based on Java. Firstly, based on the basis of concurrent program, this paper introduces the basic methods of parallel program design in Java in detail. Secondly, the powerful support for parallel programs in JDK is further introduced in detail to help readers develop parallel programs quickly and steadily. Thirdly, the methods and ideas of optimizing "lock" and improving the performance level of parallel programs are discussed in detail. Fourth, it introduces the basic design pattern of parallel and the support and improvement of Java 8 for parallel programs. Fifthly, it introduces the use of high concurrency framework akka. Finally, the debugging method of parallel program is introduced in detail.
In the cluster and distributed environment, Java built-in lock has gradually lost its use, but the idea of lock and concurrency is still common and worth learning. Read this book after reading the actual combat of Java Concurrent Programming. Each knowledge point is relatively refined, and the code examples are simple and easy to understand. There are no obscure translation words, and the hand-painted drawings also have a sense of intimacy. The disadvantage is that there is no source code attached. You need to find it on GitHub yourself.
Algorithm
Personally, I think it is the simplest and easy to understand algorithm introduction book I have ever seen. I have searched several algorithm contest books before, but it is too difficult. This book uses the Java language to realize the algorithm, with a large number of diagrams, no difficult words, and all modular implementations. It's all about practical algorithms. There are no things that people are afraid of when they listen to the name. Personally, I think it's more practical than CLRs and more suitable for entry-level learning.
This book tries to study the most important computer algorithms today and impart some of the most basic skills to the majority of knowledge seekers. It is suitable for advanced teaching materials of computer science. It is for students who are familiar with computer systems and master basic programming skills. This book can also be used for self-study or as a reference manual for developers, because it implements many practical algorithms and analyzes their performance characteristics and uses in detail. This book has a wide range of materials and is very suitable as an introductory textbook in this field.
Head first design pattern
This is the most humorous, funny and cordial technical book I have ever read, which makes me gain a lot at the same time! Worship Freeman (s)! Amen! Speak in simple terms. Some places can laugh you to death! It's very interesting and illustrated. It's easier to understand than the book of the gang of four. I don't know how many times. The computer world's head first series are basically classic. However, it is impossible to understand the design pattern only by reading. These are just the summary of predecessors. We have to practice again.
Reading this book is not only learning knowledge, but also learning a way of thinking, a cognitive skill and a ladder of growth. In short, reading this book in your spare time is no less than your focused work or study. The author strongly recommends this book. To grow into a senior programmer, design pattern is already a necessary skill.
Java programming ideas
Is a classic book that allows Java programmers to easily face challenges and finally win. This book introduces us to the world of Java in simple terms and step by step, and makes us unconsciously learn to think and solve problems with Java ideas. This book is not suitable for java beginners, but more suitable for experienced Java programmers, which is the charm of this book. However, the book does not cover all Java classes, interfaces and methods, so if you want to use it as a Java dictionary, you will obviously be disappointed.
If you start to feel that you need some programming internal skills, this book will begin to work as a basic book for practicing internal skills. Calm down and lay a solid foundation of internal skills. You will find that you will be different. Of course, the most direct embodiment is the change in salary.. Starting from this book, the road will be much smoother whether it is towards architecture, multithreading or virtual machine.
Advanced book list
Deep understanding of Java virtual machine
This book is the only monograph related to Java virtual machine published in China in recent years. It is also the only book to explore Java virtual machine from the perspectives of core theory and practical application. Not only the theoretical analysis is thorough, but also the typical cases and best practices contained in the book are of great practical guiding significance.
My biggest feeling about this book is: comprehensive. As a newcomer to JVM, I feel that this book basically covers the concepts involved in JVM. There is also a feeling in the reading process: if the author does not introduce a certain content, I may not consider such factors when referring to the documents of Java virtual machine, or it will not be so easy to understand. As a comprehensive introductory book, this book is really great.
Authoritative guide to Java performance
There are many books on Java on the market, but few focus on Java performance. Few can easily show the difficulties of Java performance optimization. This book is one of them. By using the JVM and Java platform, as well as the Java language and application program interface, this book explains the relevant knowledge of Java performance tuning in detail to help readers deeply understand all aspects of the performance of the Java platform and make the program even stronger.
In order to understand the GC part, CMS personally feels that it is very good. It complements the garbage collection part of in-depth understanding of Java virtual machine. I think it's very good: the translation is better, there is no such translation cavity!
In depth analysis of Java Web Technology
The overall feeling of this book is good. It basically starts from the introduction of basic principles. It is suitable for Internet technology lovers to read, and can also be used as a reference book for technical architecture. This book not only introduces the basic knowledge and principles, but also many things. The author starts from the principle of system architecture, so it is very helpful to readers who love system architecture. The main feature of this book is "both pictures and texts, pictures, facts and truth". It is not boring and obscure to read.
I have been in Java for two or three years, but I still know a little about the bottom layer. I still don't know how to solve system level problems, so I need to read an in-depth book. This book is.
Practice of large website system and Java Middleware
This book focuses on the practice of large websites and Java middleware supporting the architecture of large websites. Starting from the knowledge of distributed system, let readers have a basic understanding of distributed system; Then it introduces the architecture changes of large websites with the growth of data and visits; Then it describes the relevant knowledge of building Java middleware; The following chapters introduce the design and practice of Java middleware system supporting large-scale website architecture according to the author's experience
Through this book, you can learn a lot of core technologies for building large-scale website systems and the necessary knowledge of Java middleware supporting large-scale websites. The author's many years of practical experience in super large e-commerce websites makes the content of this book very valuable. If your technical team is struggling with large websites, maybe you can get inspiration from this book. In addition, if you want to be a Java technology architect, you should not miss this book.
Technical architecture of large websites: core principles and case analysis
By combing the technological development process of large websites, analyzing the technical architecture mode of large websites, this book deeply describes the core principles of large-scale Internet architecture design, and presents a picture for readers through a group of typical website technical architecture design cases, including technology selection, architecture design, performance optimization, web security, system release Panoramic view of large website development including operation and maintenance monitoring.
This book explains how to build a website system with high availability, high performance and high scalability from multiple levels, and makes a case analysis based on the advanced architecture practice experience of Alibaba and other Internet enterprises. The description is very comprehensive and instructive. This book describes the key points of architecture design from the perspectives of website architecture design, rapid development, efficient deployment, business monitoring, service governance and operation and maintenance management. The core technologies involved include front-end optimization, CDN, reverse proxy, cache, message queue, distributed storage, distributed services, NoSQL storage, search, monitoring Security and a series of key technical points to ensure the safe and reliable operation of large websites. This book also provides the idea of how websites can gradually expand from small websites to large websites with the growth of users. It is a rare technical reference book for Internet architects.
Enterprise application architecture model
The routine of moves can be varied, but the solid and profound "internal skill" is consistent! Although the software technologies involved in enterprise applications are constantly renovated, the basic architecture and design ideas have not changed much. It is the most efficient way to properly adjust the previously effective design ideas and methods and apply them to the current problems. With the help of a group of expert collaborators, Martin transformed more than 40 common solutions into patterns and finally integrated them into this "internal mind skill". After carefully studying and carefully pondering this book, I hope it can help you deal with any kind of enterprise application platform and control any kind of enterprise application technology, whether it is current technology or future technology.
When I first read this book, I thought it was too abstract. I turned it over hastily. There was only a shallow impression of many things. Later, when using hibernate, I occasionally reopened the book. Many things in the book are reflected in hibernate. In particular, the chapter on relationship mapping only talks about how to do it in the hibernate document, not why. It is very clear in the book and very rewarding.
《Expert One-on-One J2EE Development without EJB》
What is the basis for selecting an architecture and a technology? Rod Johnson believes that it should be based on practical evidence, experience from historical projects or personal experiments, rather than any form of idolatry or door-to-door views. The book talks about problems and solutions in all aspects of enterprise application, and none of these solutions is the product of this "evidence-based approach". In addition to giving these solutions to readers, the more important message rod Johnson hopes to convey through this book is the "evidence-based" way of working - which should be the way programmers work.
For spring engineers who are familiar with or want to learn more about the essence of spring framework, this book must be read because it is the cornerstone of the development of spring framework.