As a Java programmer, the most painful thing is to choose too wide, can read too many books, often easily confused. I would like to choose some of the technical books I have read, according to the Order of study, recommend to everyone, especially those who want to constantly improve their technical level of Java programmers. In addition, you can join 457036818 Exchange groups and share your knowledge about Java.
One, Java programming into the category
For programmers who do not have the experience of Java programming to get started, casually read any entry books are the same, this stage requires you to quickly grasp the Java Basic grammar and basic usage, the purpose is "swallowed superficial understanding", first familiar with Java to say. In a short time to quickly over the Java syntax, even the confused with a guess more write code, to "Know it."
1. "Java Programming thought"
With a certain amount of Java programming experience, you need to "know why". This time, "Java programming thought" is a good book to let you know why, it has a relatively clear understanding of basic object-oriented knowledge, Java Basic Grammar, Basic class library has a relatively clear explanation, can help you to play a good Java programming Foundation. The shortcomings of this book is really too thick, but also more wordy, not suitable for modern fast-paced learning, so read this book to understand the choice, not each chapter is worth a look, the focus of the deep look on it can be.
2, "Agile Java" Chinese version
This book is sent to me by the publishing house, I got on the shelf, placed in the bookcase a page did not turn over, but the first two days to tidy up the bookcase, take out a turn, unexpectedly found this is definitely a good book! This book is a major feature of unit testing and TDD to run through the books, teaching you a variety of important basic knowledge of Java in the process, imperceptible influence of your programming thinking to agile, to TDD. In addition, the book is very new, based on the JDK5.0 grammar, to learn JDK5.0 's new grammar is also good. And this book is also very appropriate for the content choice, the Java language after all, the library is huge, can talk about too much content, the content of the book selection and content are very appropriate, you can take the least time to master the most important knowledge of Java, by the way to cultivate excellent programming ideas, is a rare good book.
Although the author himself has positioned the book at the entry level, I'm not sure if the book is a little bit deeper to get started, and I'm prepared to turn over the book when I'm Free and learn.
Second, Java Programming Advanced class
Lay a good Java foundation, but also need more practical experience to accumulate, I think there is no shortcut. Two books are worth reading at this stage of your programming career, developing good programming habits and improving your code quality.
1, "Refactoring to improve the design of existing code"
This book is very famous, do not introduce more, you can in the leisure time more turn over, and their practice to prove each other. The book has a subtle effect on it.
2, "test-driven development by Example"
The book's biggest feature is its thin, seemingly no burden. Can find a weekend afternoon, while watching, while doing, one afternoon to read the book, all the examples of this book run out. The role of this book is to make you develop TDD ideas through combat.
Third, the path of the Java architects
At this stage, you should have been very skilled in the use of Java programming, and have a good programming ideas and habits, but may also lack of the overall application software architecture, now is the first step towards the architect.
1, "Expert one-on-one-ee Design and development"
This book is a masterpiece of Rod Johnson's fame, a classic, from which the code in this book was born springframework. But it seems that the book does not have a Chinese translation.
2, "Expert one-on-one Java development without EJB"
This book by Gigix organization translation, a number of industry experts involved, although the name of the translator is Javaeye, in fact, Javaeye does not contribute much, is tianjiang in the names of translators.
Both of these books are the classic works of Rod Johnson, a must-read book for the Java Architect. In the recommended these books, is the most careful, the most serious book, at that time read this book is almost sleepless in the midnight Oil reading, there was a child in the night to read the momentum of Jin Yong martial arts novels, the contents of the book and their own experience of knowledge one by one confirmed, and was extremely incisive summed up, after reading this book, a kind of was opened , the feeling of the explosive increase of skill.
But after seeing some other people's comments, it seems that the reading experience is not so high, perhaps because of the accumulation of knowledge and experience of each person. At that time, the accumulation of experience knowledge is sufficient, but there is no systematic finishing, let this book a comb, immediately form a complete knowledge system.
3. "Enterprise Application Architecture Model"
Martin's another masterpiece, but the book was only a general look, and did not look closely. This book seems to be more suitable for a frame person to look at, for example, if you intend to write an ORM yourself, this book must be read. But the application of the people, do not look like it does not matter, but if there is time, or recommend a serious look, will let you know why the framework to design, such a level can be promoted to the framework of the designer's perspective to think about the problem. Martin's books have always been admired, but they have never been looked at as seriously as Rod Johnson's books.
4, "Agile Software development principles, patterns and practices"
Uncle Bob's masterpiece, Agile Classics, this book is more special, rather than the software development process of the book, rather talk about software architecture book, the book with a lot of object-oriented software development of various models, the individual thought read this book, you do not have to see the Gof "design mode".
Iv. Software Development process
Understanding the software development process is not simply to improve the programmer's personal good programming habits, but also to enhance the basis of team collaboration.
1, "UML Essence"
UML actually and the software development process has no inevitable connection, but is the software team cooperates the communication, writes the software document needs the tool. But UML really does not have a lot of practical, look at this book is enough, there is no need to chew on the UML User Guide and other things. To remind you that the Chinese translation of this book is very bad, it is recommended to see the English version of the original condition.
2, "Analytic limit programming embrace change" XP
This is the second edition of Kent Beck's masterpiece, in Chinese and English. There is nothing to say, must read books.
3, "Unified software development process" up
In fact, up and agile do not necessarily conflict, up is also very emphasis on iteration, testing, but the up emphasis on the document and process driven is not taken by agile. Anyway, up is worth reading, after all, there are few companies in China that really accept agile, or need to use up to arm their own, even if it is wearing up XP.
4, "Agile Modeling" AM
Scott Ambler's masterpiece, the book is very progmatic, tell how agile and up, the agile and up unified, but also put forward a lot of progmatic suggestions and practices. Can be "analytic limit programming embrace change", "Unified software development process" and "agile Modeling" the three books to read together, look at the difference between XP and up, and then see how AM is Unified XP and up, the three theory into a furnace, the formation of their own theoretical system, then can also go to write books.
V. Software project Management
If the leader is suddenly promoted to the project manager, and there is no project management experience, there will be no end in mind, if you feel that you manage the project is not good, want to improve project management ability, then go to test PMP must be far water puzzled near thirsty.
1, "Rapid software development"
This is also a famous book. It can be said that there is a book in hand, there is a senior staff of project management to advise you, no longer have to worry about their inability to do the problem. This book is not about management theory, in the actual project management, said these theories are not solve the problem, this book is a bit similar to "software project ideas Daquan" Such things, listed the various software projects are faced with a variety of problems, and how to solve the problem of ideas, only need a little flexibility, find square prescription on the line.
Vi. Summary
In the list of recommended reading books, there is no listing of popular software framework learning books, such as Struts,hibernate,spring, or Ajax books. Because this kind of books is easy to be outdated, and most of the above books have a long life cycle, which is worth buying and collecting.
"Two. Java Book top 10"
Here are 10 good Java books recommended on Java inside.
1) Java Language specification,Third Edition(by James Gosling)
Written by the inventor of Java technology, this book is the authoritative technical guide for the Java TM programming language. If you want to know the exact meaning of the language structure, this book is the best resource.
2) effective Java,Second Edition(by Joshua Bloch)
This book introduces 78 useful rules of thumb in Java programming that cover the solutions that most developers face on a daily basis. A comprehensive description of the technologies used by the Java platform design experts reveals what should be done and what should not be done to produce clear, robust, and efficient code.
Each of the rules in this book appears as a short, separate, small article, and is further explained by the example code. The book is comprehensive, clear structure, detailed explanation. Can be used as a reference book for technical staff. ...
3) Java Concurrency in practice (by Brian Goetz)
With the popularity of multicore processors, using concurrency becomes the key to building high-performance applications. Java 5 and 6 have made significant progress in developing concurrent programs, improving the performance of Java virtual machines, increasing the scalability of concurrency classes, and adding a rich set of new concurrent building blocks. In this book, the creators of these handy tools not only explain how they work and how they are used, but also explain the reasons for creating them and the design patterns behind them. This book can be both a theoretical support for readers and a technical support for building reliable, scalable, maintainable concurrent programs. This book does not just provide a list of concurrent APIs and their mechanisms, but it also provides design principles, patterns, and thought models that allow us to better build the right, well-performing concurrent programs.
Readers of this book are programmers with some experience in Java programming, programmers who want to understand the improvements and new features of Java SE 5,6 on-line technology, and enthusiasts of Java and concurrent programming.
4) Java Puzzles:traps, pitfalls and Corner Cases (by Joshua Bloch)
Java Godfather's another classic masterpiece –java Puzzlers,amazon five-star book. Think you know more about Java? Are you a code God Scout? Have you ever spent several days tracking down a bug caused by Java or its class library pitfalls and flaws? Do you like intelligence tests? Then this book is just right for you!
5) Thinking in Java (by Bruce Eckel)
This book has won wide acclaim from the world's programmers, and even the most obscure concepts will be dissolved in the face of Bruce Eckel's text affinity and small, straightforward programming examples. From the basic syntax of Java to the most advanced features (in-depth object-oriented concepts, multithreading, automated project building, unit testing and debugging, etc.), this book is designed to guide you easily.
It is not hard to see that this is a classic, as well as the awards from the book and comments from readers around the world. The author of the book has many years of teaching experience, the C, C + + and the Java language have a unique, in-depth insight, easy to understand and small and direct examples to explain the obscure abstract concept. This book contains 22 chapters, including operators, control execution processes, access control, multiplexing classes, polymorphism, interfaces, exception handling errors, strings, generics, arrays, container drill-down, Java I/O systems, enumeration types, concurrency, and graphical user interfaces. These rich content, including the Java language basic syntax and advanced features, suitable for all levels of Java programmers to read, but also the University of the teaching of object-oriented programming language and the Java language of the excellent teaching materials and reference books.
6) Better, faster, lighter Java (by Justin Gehtland, Bruce A. Tate)
Java developers are stuck in the mire of complexity and unable to extricate themselves. Our experience and capabilities are approaching the limit, and programmers spend more time writing programs that support the chosen framework than they do to solve real problems. We can't help but ask, is it necessary to make Java so complicated?
The answer is in the negative. This book gives you a way out. Whether you're maintaining your application or designing from scratch, you'll be able to move beyond the rut and drastically streamline the basic framework, development process, and final code. You can regain control of a once-runaway Java EE application ...
In this book, the original author Bruce A. Tate and Justin Gehtland will be a gradual and orderly way. First, they listed five basic rules. They show you how to build simple, decoupled code and show you how to choose technology. They also analyze how two widely used open source programs cater to these concepts. Finally, the authors will use these basic concepts to build a simple but rich application to solve problems in the real world.
7) Core Java (vol. 1, 2) (by Cay S. Horstmann, Gary Cornell)
"Java Core technology" has been popular since its publication, favored by readers, each new version as fast as possible to keep up with the development of the Java Development Toolbox, and each version has rewritten some of the content in order to adapt to the latest Java features. This version is no exception, it reflects the new features of Java SE 6. A total of 14 chapters, including basic Java program structure, objects and classes, inheritance, interface and internal classes, graphics programming, event processing, swing user interface components, deployment applications and applets, Exception Log assertion and debugging, generic programming, collections and multithreading and other content.
The book's description of Java technology is accurate, descriptive, and contains a number of examples to help readers fully understand the Java language and Java class Library related features.
8) The Java Virtual Machine specification (by Tim Linholm, Frank Yellin)
If you need to know the byte code of a Java virtual machine, or something that is compiled, this book will definitely make you want it. It contains not only the specification of the machine code, but also the Java compiler and operating environment specification.
9) Robust java:exception handling, testing, and debugging (by Stephen stelting)
Handling exceptions involves knowledge of development, design, and architecture. This book is divided into 3 parts.
Section Ⅰ describes the generation mechanism and usage of Java exceptions, introduces some best practices, and describes the general APIs and techniques used by various types of exception handling.
Section Ⅱ describes testability design, introduces failure mode analysis, discusses the anomalies and causes of common APIs, and analyzes the Java EE Architecture and the anomaly patterns of distributed APIs.
Section Ⅲ discusses the implementation of exception and error handling during the software development cycle, analyzes the software architecture, design patterns, testing and debugging, enumerates the mature design patterns, describes the impact of the processing strategy on the system architecture, and tells how to build robust systems.
Java Code Convention
The last one, of course, is the Java Coding specification, which was produced by Sun's official company. This is what each programmer needs to know in order to get the readability of the program.
"Three. Books for Java professionals"
Every programmer will have some books that have been worn out because they are often viewed as professional information. The following books should be required on the bookshelf of the Java language programmer. The book is very expensive, so I intend to make this list very short, limited to important books.
Thinking in Java (Bruce Eckel)
Thinking in Java, 3rd edition (Bruce Eckel; Prentice Hall ptr,2002 year)
Java Programming Idea: 3rd edition (Chen Haopeng, etc.) Mechanical industry Press, 2005)
Eckel's book is extremely useful for learning how to use good object-oriented technology in a Java language environment. A large number of code examples in the book explain the concepts he introduces. The text comes from a person who doesn't think Java technology is always the right answer, so it's quite practical. Eckel has a great deal of experience in multiple languages and a solid skill to think in an object-oriented way. This book puts these skills into a practical Java language environment. He is still writing a new book, calledthinking in Enterprise Java。
Effective Java (Joshua Bloch)
Effective java:programming Language Guide (Joshua Bloch; addison-wesley,2001 years)
Effective Java Chinese version (Pan translation; Mechanical industry Press, 2003)
This book is the best book to understand the principles of good Java programming. Most of the material is not found at all in other "learning Java" books. For example, the chapter on the Bloch book covering Equals () is one of the best references I have ever read. He also included useful advice in the book: replacing abstract classes with interfaces and using 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 number of useful libraries in the language. This book must be read!
The Java programming Language (Ken Arnold, James Gosling, David Holmes)
The Java programming Language (Ken arnold,james gosling,david Holmes; addison-wesley,2000 years)
Java Programming Language (3rd edition) (Wanrong, China Power Press, 2003)
This may be the best Java primer you can get. It is not a standard specification, but a readable book that describes the characteristics of each language. The book is well-balanced in terms of rigor and education, allowing programmers to quickly be attracted to the Java language (and its rich library of classes).
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 years)
Java concurrent Programming-design principles and Patterns (second edition) (Zhao, China Power Press, 2004)
Not every developer needs to understand concurrency in such a meticulous way, and not every engineer can reach the level of the book, but there is no better overview of concurrency programming than the book. If you are interested in this, please start here. Lea is a professional programmer for SUNY, and his work and ideas related to concurrency are included in the JDK 5.0 specification (quoted from JSR166), so you can rest assured that what he says about the effective use of the Java language is worth listening to. He is a person who is very good at communication.
Expert One-on-one EE Design and development (Rod Johnson)
Expert One-on-one EE Design and development (Rod Johnson)
WROX:J2EE Design and Development Programming Guide (Weihaiping, electronic Industry Press, 2003)
For those who have just come into contact with the Java EE, this is the only book that reflects the technology faithfully. This book is a collection of years of success and failure, and unlike many other authors, Johnson is happy to bring the experience of failure to the public. The Java EE 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 years)
Refactoring: Improving the design of existing code (Chinese version) (Houtie, China Power Press, 2003)
Fowler has written several of the most popular programming books that are now published, includingAnalysis Patterns。 He's about RefactoringBook is the basic book of this subject. Refactoring code is a programmer's neglect of training, but it is the programmer's most intuitive idea. Refactoring is to improve the design of existing code without changing the results of the code. This is the best way to keep your code neat, and code designed in this way is always easy to modify. When does refactoring happen? When the code "smells". Fowler's book is full of examples of Java language code. Many of the Java-language integrated development environments (Ides, including IBM's Eclipse) include Fowler refactoring, each named after his refactoring name, so familiarity withExtract MethodThe method of reconstruction is still worthwhile.
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 years)
Design pattern: The basis of reusable object-oriented software (Li Yingjun, mechanical Industry Press, 2005)
This is a more famous book in the circle of professional programmers, based on the common nickname of the author, which is regarded as the book of Gang of Four (GOF). Patterns are a way of thinking and solving common programming problems that can be reused. Learning mode is a discipline. Use good mode (or know whenNoUsage patterns) is a skill. Ignoring the pattern is wrong. All the examples in the book are expressed in C + +, but the Java language is born from there, so that Java language programmers can relate to how to implement these patterns in the Java language relatively simple. Familiarize yourself with patterns and learn how to use good patterns to make programming easier. This makes it easier to communicate with other programmers because, in a common solution for common problems, patterns are shortcuts to a large number of related programming concepts that describe the collaboration between solutions. Some of the more general ways, such asFactory Methodis ubiquitous, even in the Java language itself. This topic on smart usage patterns can also be read Joshua Kerievsky'srefactoring to Patterns, the book says it allows the code to tell you when to implement the pattern.
Patterns of Enterprise application Architecture (Martin Fowler)
Patterns of Enterprise application Architecture (Martin Fowler; addison-wesley,2002 years)
Enterprise Application Architecture Model (Wang Huimin, mechanical Industry Press, 2004)
Enterprise development, of course, represents a bigger challenge than a small, one-off project. That doesn't mean that all the challenges of enterprise development are new challenges. In fact, in some cases, this developmenthave beenIt's been done before. Fowler has done a lot of such projects. His book refers to a number of generic solutions and provides guidance on usage, compromise, and alternative scenarios. Fowler contains familiar patterns such as Model View Controller (MVC), and he also provides some patterns that you may not understand, such as the page Controller pattern that handles requests for specific pages or behavior on a Web site. As you do with most patterns, once you've read many patterns, you'll think, "I already know that pattern." Maybe so, but it's helpful to have a generic expression that is used to reference patterns. This type of reference is a good help in large projects that have 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 Pristine: A concise guide to standard Object Languages (3rd edition) (Xu Jiafu, Tsinghua University Press, 2005)
For professional programmers, UML is a very important universal visual communication language, but it is overused and rashly abused. You don't need to know too much about using UML communication. Martin's refinement of UML provides you with the most core of things. In fact, the front and back pages provide everything that may be used on a regular basis. The code for the UML example 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) (Trikay, China Power Press, 2004)
Test-first programming will revolutionize programming and can help you become a better programmer. Writing tests before writing the code is difficult, but it's a powerful skill. By prioritizing the tests, you make the code simpler and ensure that it works from the start (Beck practices The tests he advocates for first, and writes JUnit together, which is the most popular test framework for the Java language). Beck's book is an authoritative reference, and the expanded Money example is written in the Java language. Beck details how to think with a test first (which may be a hurdle for many programmers).
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 of programmer's cultivation--from small work to expert (Minchinmavida, Electronic Industry Press, 2004)
Being a purely object-oriented developer has its advantages. In today's complex society, as a Java language developer, a compromise is often needed to accomplish a task. Hunt and Thomas explored how to accomplish a task without compromising what really matters. This is not a book about the Java language, but rather an important thought reading for Java language developers. For example, I don't think programmers who benefit from the advice "to solve problems rather than shirk responsibility" cannot sign 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 year)
Human Pieces (2nd edition) (Umlchina translation Group, Tsinghua University Press, 2003)
All the other books in this list are at least relevant to the technology. This book is not. In all the technical jargon and acronyms of the ocean, sometimes software developers and managers forget: YespeopleSoftware was manufactured. DeMarco and Lister reminded us of this fact and reminded us of the reasons for the formation of this area. This is not a book about a particular programming language, but it is the one that every Java language programmer should read. There are a lot of other good books about "how to get managers to backfire", but this is the best one.
"Four. 3 advanced books recommended for junior Java programmers"
The original author introduces 3 good technical books in this article. The authors believe that these books are especially helpful for beginners and students. After getting started with some basic tutorials, we can use Java to do basic programming. However, most people don't know where to start when we need a higher level of ascension from the beginning. Some good books at this stage can be a good help to junior developers.
"Head First design mode"
This book introduces GoF common design patterns in a fascinating way. If you look at the cover, it's hard to see. This is a technical book, not to mention this technical book introduces some of the most useful techniques for object-oriented programming. The book is written in Kathy Sierra style: Although her blog has been closed, but still can see some of her articles from the previous link, suggest reading. If someone around you thinks that design patterns are useless, this book can make them change their view. Personally, I think the Classic GoF Handbook is a good reference, but it's not intended for beginners. It is highly recommended that students (including those who do not know what the composition pattern is) read this book.
The design pattern introduced in the book is the basic programming pattern in program development, and also the programmer should know and master the object-oriented programming. The next book is more about the Java language itself, which is the programming language I use everyday.
"Effective Java Chinese Version" second Edition
This book should be on every Java Programmer's desk. Let's start by understanding
Joshua Bloch is Google's chief Java designer and is also a Jolt Award winner. He was an outstanding engineer of Sun (distinguished engineer) and a senior system designer at Transarc Corporation. Bloch has led the design and implementation of numerous software systems based on the Java platform, including the enhancement of JDK5.0 's functionality and the design and implementation of the award-winning Java collection framework. He is also involved in writing the Java FAQ | Java puzzlers and Java Concurrency Programming combat | Java Concurrency In practice "these two technical books.
With the title "Java Collection Framework Developer", we should listen carefully to the advice of this respectable programmer. The recommendations are organized into 78 points in the book: readers can read at their own pace.
- What rules should we follow when copying the Equals and Hashcode methods?
- What are immutable classes (immutable Class)?
- In a particular case, which of the most relevant types of exceptions should be used? Runtime exception (runtime exception) or catch exception (checked exception)?
- For a managed language (managed language, refer to the wiki for details), how do I keep members of the (preserve) class when confusing compilation?
All the above questions (including the other 74) have a detailed explanation of the pragmatist Joshua Bloch. After reading this book, programmers should be aware of the need to use FindBugs and Checkstyle tools.
"Java Concurrency Programming"
A year ago I was trying to read this book when I was working on UI development (using Swt/jface in the Eclipse plugin and other projects using swing). At that time, I wanted to learn how to implement a responsive UI that would give users a better experience. I know it's very complicated to write thread-safe code, although a long-running operation is usually a separate thread. UI development and multi-core system application development is a good reason to learn how to develop a thread-safe software system.
The author of this book is as follows: Brian Goetz,joshua Bloch (The Daniel again, we just mentioned, remember?) ), Doug Lea (developer of the Java.util.concurrent package), David Holmes,tim Peierls and Joseph Bowbeer.
The style of the book is very straightforward, and some code behaves well in a non-thread-safe environment, and can become very dangerous once it is in a thread-safe environment. This book then introduces the basic mechanisms for ensuring thread safety: synchronization mechanisms, volatile keywords, and so on. This book also has an introduction to the Java.util.concurrent interface, you can choose the appropriate concurrent collection class according to your own needs. This book also describes error management when the program is running, and how to test whether the code is thread-safe. And the book also provides explanatory notes (Annotation) (download), these comments passed the FindBugs check!
PS, from the Java Communication Group, 457036818, which covers some of the electronic files and related Java Basic knowledge, welcome to the group to communicate
https://www.oschina.net/question/2367675_236222
Java Programmer Online Getting Started Tutorial: http://www.rm5u.com/program/java/
Https://github.com/waylau/essential-java
Java programmer must read 15 books-java self-study books recommended