A must-have book broadcast for Java professionals :
Every programmer has some books that are often worn out because they are often referred to as professional materials. The following books should be a must-have on the bookshelf of Java language programmers. Books are expensive, so I intentionally make this list short and limited to important books.
Thinking in Java (Bruce Eckel)
Thinking in Java, 3rd edition (Bruce Eckel; Prentice Hall PTR, 2002)
Java Programming Thoughts : 3rd Edition (translated by Chen Haopeng et al.; Machinery Industry Press, 2005)
Eckel 's book is very useful for learning how to use object-oriented technology in a Java locale. A large number of code examples in the book explain the concept he introduced. The text comes from someone who doesn't think Java technology is always the right answer, so it's quite practical. Eckel has a lot of experience in multiple languages and solid skills to think in an object-oriented way. This book puts these skills into a practical Java locale. He is also writing a new book called Thinking in Enterprise Java.
Effective Java (Joshua Bloch)
Effective Java: Programming Language Guide (Joshua Bloch; Addison-Wesley, 2001)
Effective Java Chinese version (translated by Pan Aimin; Machinery Industry Press, 2003)
This book is the best book to understand the principles of excellent Java programming. Most of the materials are simply not found in other books about "Learning Java". For example, the chapter on overwriting equals() in Bloch's book is one of the best references I've ever read. He also included very practical suggestions in the book: replace abstract classes with interfaces and use exceptions flexibly. Bloch is the architect of Sun's Java platform library, so he has a thorough understanding of the language. In fact, he wrote a large number of useful libraries in the language. Must read this book!
The Java Programming Language (Ken Arnold, James Gosling, David Holmes)
The Java Programming Language (Ken Arnold, James Gosling, David Holmes; Addison-Wesley, 2000)
Java Programming Language (3rd Edition) (Translated by Yu Wanrong et al., China Electric Power Press, 2003)
This is perhaps the best Java introduction to you. It is not a standard specification, but a readable book that introduces the characteristics of each language. The book weighs rigorously and educationally well, allowing programmers to quickly be attracted to the Java language (and its rich library).
Concurrent Programming in Java: Design Principles and Patterns (Doug Lea)
Concurrent Programming in Java: Design Principles and Patterns, 2nd edition (Doug Lea; Addison-Wesley, 1999)
Java Concurrent Programming - Design Principles and Patterns (Second Edition) (Translated by Zhao Yong et al., China Electric Power Press, 2004)
Not every developer needs to have such a meticulous understanding of concurrency, and not every engineer can reach the level of this book, but there is no better overview of concurrency programming than this book. If you are interested in this, start here. Lea is a professional programmer at SUNY, and his works and ideas related to concurrency are included in the JDK 5.0 specification (cited from JSR166), so you can rest assured that his advice on using Java effectively is worth listening to. He is a very good at communicating person.
Expert One-On-One J2EE Design and Development (Rod Johnson)
Expert One-On-One J2EE Design and Development (Rod Johnson)
WROX: J2EE Design and Development Programming Guide (translated by Wei Haiping, Electronics Industry Press, 2003)
For those new to J2EE, this is the only book that truly reflects this technology. This book contains years of success and failure experience. Unlike many other authors, Johnson is happy to make the failure experience public. J2EE is often overused. Johnson’s book can help you avoid this.
Refactoring (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts)
Refactoring: Improving the Design of Existing Code (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts;
Addison-Wesley, 1999)
Refactoring: Improving the design of existing code (Chinese version) (translated by Hou Jie et al., China Electric Power Press, 2003)
Fowler has written several of the most popular programming books that have been published now, including Analysis Patterns. His book on reconstruction is the basic book on this subject. Refactoring code is a training that is ignored by programmers, but it is the most intuitive idea for programmers. Refactoring is to improve the design of existing code without changing the code results. This is the best way to keep your code tidy, and code designed in this way is always easy to modify. When will it be refactored? When the code "feels a taste". Fowler's book is full of examples of Java language code. Many Java language integrated development environments (IDEs) (including IBM's Eclipse) include Fowler's reconstruction, and each is named with its reconstruction name, so it is worth being familiar with reconstruction methods such as extract method.
Design Patterns (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)
Design Patterns: Elements of Reusable Object Oriented Software (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides; Addison-Wesley, 1997)
Design Pattern: The Basics of Reusable Object-Oriented Software (Translated by Li Yingjun et al., Machinery Industry Press, 2005)
This is a book that is more famous in the circle of professional programmers. Based on the author's common nickname, this book is considered the "Gang of Four (GOF) Book". Patterns are a way to reuse when thinking about and solving ordinary programming problems. Learning model is a subject. Using good modes (or knowing when not to use them) is a skill. Ignoring the pattern is wrong. All the examples in the book are represented in C++, but the Java language was born from there, so it is relatively simple to connect Java language programmers to how to implement these patterns in the Java language. Be familiar with patterns and understand how to use good patterns to make programming easier. This makes communicating with other programmers also easier because in a general solution to common problems, patterns are shortcuts to describe a large number of related programming concepts in the solution that collaborates with each other. Some more general methods, such as factory methods, exist in general, and even exist in the Java language itself. For the topic of using patterns with wise use, you can also read Joshua Kerievsky's Refactoring to Patterns, which says that you can let code tell you when to implement patterns.
Patterns of Enterprise Application Architecture (Martin Fowler)
Patterns of Enterprise Application Architecture (Martin Fowler; Addison-Wesley, 2002)
Enterprise application architecture model (translated by Wang Huainin et al., Machinery Industry Press, 2004)
Compared with small and one-time projects, corporate development certainly represents a greater challenge. That doesn't mean that all the challenges brought by enterprise development are new challenges. In fact, sometimes, this development has been completed before. Fowler has done many such projects. His book mentions some general solutions and provides guidance on usage, compromises and options. Fowler includes familiar patterns in the book, such as Model View Controller (MVC), and it also provides patterns that you may not understand, such as Page Controller mode that handles specific page requests or behavior requests on a Web site. As you treat most modes, once you read many modes, you think "I already know that mode." Maybe that's the case, but it's helpful to have a common expression for reference patterns. This class of references is a great help in large projects with multiple components (developed by different people).
UML Distilled (Martin Fowler)
UML Distilled: A Brief Guide to the Standard Object Modeling Language (Martin Fowler; Addison-Wesley 2003)
UML essence: A brief guide to standard object language (3rd edition) (Translated by Xu Jiafu, Tsinghua University Press, 2005)
For professional programmers, UML is an important universal visual communication language, but it is overused and hasty. You don't need to know much about using UML communication. Martin's refinement of UML provides you with the most core stuff. In fact, front and back cover pages provide everything you might use on a regular basis. The code for UML examples in this book is Java code.
Test-Driven Development: By Example (Kent Beck)
Test-Driven Development: By Example (Kent Beck; Addison-Wesley 2002)
Test-driven development (Chinese version) (Translated by Cui Kai, China Electric Power Press, 2004)
Test-first programming will revolutionize programming and help you become a better programmer. Writing a test before writing code is hard to start with, but it is a powerful skill. By prioritizing tests, the code can be made simpler and ensure it works from the beginning (Beck practiced his advocated test priority, co-written JUnit, the most popular test framework for Java). Beck's book is an authoritative reference, and the extended Money examples are also written in Java. Beck details how to think with test priority (which may be the first obstacle that many programmers encounter).
The Pragmatic Programmer: From Journeyman to Master (Andy Hunt and Dave Thomas)
The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt and David Thomas; Addison-Wesley 1999)
The way to practice programmers - from small workers to experts (translated by Mavida, Electronics Industry Press, 2004)
Being a pure object-oriented developer has its advantages . In today's complex society, as a Java language developer, you often have to compromise to complete your tasks. Hunt and
Thomas explores how to complete tasks without compromising what really matters. This is not a book about the Java language, but an important thought reading for Java language developers. For example, I don't think programmers who benefit from the honest advice of "to solve problems, not to shirk responsibility" cannot sign a famous name on his masterpiece like a proud artist.
Peopleware: Productive Projects and Teams (Tom DeMarco and Timothy Lister)
Peopleware: Productive Projects and Teams (Tom DeMarco, Timothy Lister; Dorset House, 1999)
Personal documents (2nd edition) (UMLChina Translation Group, Tsinghua University Press, 2003)
All other books on this list are at least somewhat related to technology. This book is not. In the ocean of all technical jargon and acronyms, sometimes software developers and managers forget: it’s people who made the software. DeMarco and Lister remind us of this fact and also of the reasons for this difference. This is not a book about a specific programming language, but it is a book that every Java language programmer should read. There are many other good books on “How to Exhausted Programmers Make Managers Backfire”, but this is the best one.
Learning Java language well starts with reading!