Roy Miller (firstname.lastname@example.org), Founder and President, The Other Road, LLC
January 15, 2007
For Java developers, excessive information is a real problem. Every new programmer must face a daunting challenge: the industry to enter is an industry with massive knowledge. There are too many things to understand. For experienced veterans, the situation is only slightly improved. As the total amount of knowledge increases, it is a challenge to keep up with the progress. How nice it would be to have a list of books and websites essential to professionals! This is the list. It contains the most important books and websites that every professional Java programmer must possess in bookshelves or browser bookmarks.
These are all necessary books on your shelf and Web links that should be frequently used. Time is an important resource. This article helps you avoid distractions and focus your time on the information that is most useful for your career as a Java programmer. Although there are many programmers who have their favorite references, the articles collected in this article are all excellent candidates, from the private collections on my shelves and the recommendations of many Java experts.
I have considered two ways to organize this reference list. I could have organized theme domains. This may be helpful, but the theme list will soon become useless. Instead, I chose another method: organize books and Web sites by type.
In general, experienced veterans use Web sites to track industry trends. Books, articles, and papers help keep up with the trend, but they are more suitable for basic learning. Creative books occasionally shake one or two basic things. Such a book is also listed in this list.
One warning is that the number of books and Web sites focused on the Java language is huge. What you love may not be in this list. That doesn't mean they are not good. They are not in this list. Probably because I don't know them yet. It may also be because I don't think they can be considered important resources. Not including references is a matter of judgment, but if not, it may take several hours to drag the scroll bar and tens of thousands of dollars to buy books. If you are a professional Java programmer and have some frequently used excellent references, please let me know these materials. This list is being updated all the time, And your proposed ones may be included.
Every programmer has some books that are often worn out as professional materials. The following books should be necessary for Java programmers. Books are very expensive, so I intentionally made this list very short, limited to important books.
Thinking in Java (Bruce Eckel)
Thinking in Java, 3rd edition(Bruce Eckel; Prentice Hall PTR, 2002)
Java programming ideology: Version 3rd(Translated by Chen haopeng; China Machinery Industry Press, 2005)
The Book of Eckel is extremely useful in learning how to use object-oriented technology in a Java language environment. A large number of code samples in the book explain the concepts he introduced. The text comes from a person who does not think that Java technology is always the correct answer, so it is quite practical. Eckel has a wealth of experience in multiple languages and has solid skills in thinking in an object-oriented manner. This book puts these skills into a practical Java language environment. He is still writing a new book namedThinking in Enterprise Java.
Valid Java (Joshua Bloch)
Valid Java: Programming Language Guide(Joshua Bloch; Addison-Wesley, February 2001)
Valid Java Chinese Version(Translated by Pan aimin; Mechanical Industry Press, 2003)
This book is the best book to understand the principles of excellent Java programming. Most materials cannot be found in other "Learning Java" books. For example
equals()This chapter is one of the best references I have ever read. He also included practical suggestions in his book: replacing abstract classes with interfaces and flexible usage exceptions. Bloch is an architect of Sun's Java platform library, so he has a thorough understanding of the language. In fact, he has compiled a large number of useful libraries in this 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, February 2000)
Java programming language (version 3rd)Translated by Yu Wanrong and others, China Power Press, 2003)
This may be the best Java getting started book. It is not a standard specification, but a readable book that describes the features of each language. This book balances rigor and education, allowing programmers to be quickly attracted to the Java language (and its rich class libraries.
Concurrent Programming in Java: Design Principles and Patterns (Doug Lea)
Concurrent Programming in Java: Design Principles and Patterns, 2nd edition(Doug Lea; Addison-Wesley, February 1999)
Java concurrent programming-design principles and patterns (version 2)(Translated by ZHAO Yong, China Power Press, 2004)
Not every developer needs to have such a detailed 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 from here. Lea is a professional SUNY programmer. His works and ideas related to concurrency are included in the JDK 5.0 standard (derived from JSR166), so you can rest assured that, his suggestions on effective use of the Java language are worth hearing. He is a good communicator.
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, Electronic Industry Press, 2003)
For those who are new to J2EE, This is the only book that faithfully reflects this technology. This book contains many years of success and failure experiences. unlike many other authors, Johnson is happy to publish his failure experiences to the public. J2EE is often used excessively. Johnson's book can help you avoid this.
Refactoring (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Robert TS)
Refactoring: Improving the Design of Existing Code(Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Robert ts; Addison-Wesley, February 1999)
Reconstruction: improving the design of existing code (Chinese Version)Translated by Hou Jie and others, China Power Press, 2003)
Fowler has written several of the most popular programming books that are now published, includingAnalysis Patterns. HisReconstructionBooks are the basic books on this topic. Refactoring code is a training neglected by programmers, but it is the most intuitive idea of programmers. Refactoring is to improve the design of existing code without changing the Code results. This is the best way to keep the code clean, and the code designed in this way is always easy to modify. When will it be reconstructed? When the code "emits taste. Fowler's book is full of examples of Java code. Many Java integrated development environments (IDE) (including IBM Eclipse) include the reconstruction of Fowler. Every one of them uses the name of the refactoring, so they are familiarExtract methodAnd other reconstruction methods are 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, February 1997)
Design Mode: the basis for reusable Object-Oriented Software(Translated by Li Yingjun, Mechanical Industry Press, 2005)
This is a more famous book in the circle of professional programmers. Based on the nickname shared by the authors, this book is considered a "GOF" book ". Patterns can be reused when thinking about and solving common programming problems. The learning model is a discipline. Use mode (or know whenNoUsage mode) is a skill. The ignore mode is incorrect. All examples in the book are represented in C ++, but the Java language was born from there, which makes it easier for Java programmers to relate to how to implement these modes in Java. Be familiar with the mode and learn how to use the mode to make programming easier. This makes it easier to communicate with other programmers, because in general solutions for general problems, the pattern is a shortcut to describing a large number of related programming concepts in the solution collaboration. Some more common methods, suchFactory methodIt exists in Java. You can also read the topic of Joshua KerievskyRefactoring to PatternsThe book says that the code can tell you when to implement the pattern.
Patterns of Enterprise Application Architecture (Martin Fowler)
Patterns of Enterprise Application Architecture(Martin Fowler; Addison-Wesley, February 2002)
Enterprise Application Architecture Model(Translated by Wang Huai min, Mechanical Industry Press, 2004)
Compared with small and one-time projects, enterprise development certainly represents a greater challenge. That does not mean that all the challenges posed by enterprise development are new challenges. In fact, sometimes this developmentAlreadyIt was previously completed. Fowler has done many such projects. His book mentions some general solutions and provides guidance on the use, compromise, and optional solutions. In the book, Fowler includes some familiar patterns, such as model View Controller (MVC). It also provides some patterns that you may not understand, for example, the Page Controller mode that processes specific Page requests or behavior requests on a Web site. As you do with most models, once you read many models, you will think "I already know that model ". This may be the case, but there is a general expression used to reference the pattern. This type of reference is helpful for 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: Concise Guide to Standard Object Language (version 3rd)(Translated by Xu Jiafu, Tsinghua University Press, 2005)
For professional programmers, UML is a very important universal visual communication language, but it is over-used and rashly abused. You do not need to know too much about communication using UML. Martin's refinement of UML provides you with the core things. In fact, the front and back pages provide everything that may be used on a regular basis. The UML examples in this book are all 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 Power Press, 2004)
Test-first programming will make a revolutionary change in programming and help you become a better programmer. Writing a test is difficult before writing code, but it is a powerful skill. By writing tests with priority, you can make the code simpler and make sure it can work from the very beginning (Beck practices the test priority he advocated and shares JUnit with people, this is the most popular Java testing framework ). Beck's book is an authoritative reference, and the extended Money example is also written in Java. Beck details how to use test firstThoughts(This may be the first obstacle 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)
How programmers practice-from small workers to experts(Ma Vida, Electronic Industry Press, 2004)
Being a pure object-oriented developer has its own advantages. In today's complex society, as Java developers, they often have to compromise to complete their tasks. Hunt and Thomas discussed how to complete the task without compromising what really matters. This is not a book about the Java language, but an important ideological book by Java developers. For example, a programmer who has not benefited from the loyal saying "to solve the problem, rather than shirking responsibility" cannot sign a name on his masterpiece like a proud artist.
Peopleware: Productive Projects and Teams (Tom DeMarco and Timothy Lister)
Leleware: Productive Projects and Teams(Tom DeMarco, Timothy Lister; Dorset House, February 1, 1999)
Human parts (version 2nd)(UMLChina translation group translation, Tsinghua University Press, 2003)
All other books in this list are at least technically related. This book is not. In the ocean of all technical lines and acronyms, sometimes software developers and managers forget: YesPersonMade software. DeMarco and Lister reminded us of this fact and the reason for the difference. This is not a book about a specific programming language, but it is a book that every Java programmer should read. There are many other good books about "How tired Programmers Make managers counterproductive", but this is the best one.
The number of Web sites is vast. If you want to digest the content, it will be hard to access all the content. A detailed list of websites containing some Java content is too large. The following sites are reliable and authentic.
Sun's Java technology site
Sun's Java language site
This is Sun's main Java site. As a Java developer, you will find that you frequently access this site. The following links are particularly important, especially for new Java developers:
Selling yourself may be a bit cheeky, but developerWorks is a huge resource that includes a large number of Java language tools and technology tutorials and articles. The content covers from beginner's Guide to learning this language to advanced Concurrency Technology. You can search for the content based on the topic and then browse the content based on the type.
Apache Software Foundation
Apache Software Foundation
The Apache site is the home page for many reusable libraries (common fields) and tools that help Java developers develop. All the content here is open source code, so please download it! Many of the most popular Java language libraries and tools (such as Struts, Ant, and Tomcat) have started with Apache projects. The Jakarta area brings together most of the emerging Java language materials.
There are several good Java integrated development environments (IDE ). Eclipse (from IBM) is one of the latest IDES and soon becomes the primary IDE for Java development. It is completely open-source, which means it is free. This site contains various references for learning how to use Eclipse effectively. There is also information about Standard Widget Toolkit (SWT), which is a more lightweight choice than Swing.
Eclipse plug-in center and Eclipse plug-in
Eclipse plug-in center and Eclipse plug-in
Eclipse is based on the plug-in architecture. In fact, the plug-in is a Java Development component of Eclipse. However, there are almost a thousand plug-ins, from Web-developed plug-ins to plug-ins that play games in the Eclipse environment. These two sites list Most plug-ins and can be searched. They are great resources. If you want to create something new in the Eclipse development environment, you may be lucky to have implemented a plug-in. You can find the desired plug-in from these two sites. Both sites allow comment plug-ins so that you can know which plug-ins are good and which ones are worth a try.
Junit is a basic unit test framework in Java. This site contains the latest and best Junit versions, plus a large number of tests (for Java or other languages) (for desktop applications, Web applications, J2EE applications, etc) other resources. If you want to find a test resource, this is the best start point.
If you want to (or want to) Develop the server-side Java language, this site is an important resource. You can find articles on JBoss, J2EE, LDAP, Struts, and a large number of other topics, which are completely searchable. These articles not only briefly describe the features of the Java language or the supported libraries. They further describe the novel usage of libraries (for example, using Jakarta Velocity as the rule engine rather than the template engine ). They also provide continuous comments on the status quo of the Java language (the current article is written by Tim BrayJava is boring). One of the better general functions of this site is the matrix comparison of Java language tools and products (application servers, etc.
Bruce Eckel's MindView, Inc.
Bruce Eckel's MindView, Inc.
Eckel wrote several "use ...... The book is about the Java language, Python and C ++. When I learned the Java language, hisThinking in JavaThis is especially helpful to me. It is very practical and crucial, and has excellent knowledge in "how to think object-oriented in the Java language environment. You can download an electronic copy of all his books from this website for free. He also wrote many good articles, and he put the links to these articles here (including articles on comparison of Jython, Java and. NET ).
O'reilley has published some excellent books on programming languages and tools over the years. Their website focusing on the Java language is also good. It has some articles about various Java language tools (such as JDOM and Hibernate) and Java platforms (such as J2SE and J2EE) in different fields. All can be retrieved. They have excellent articles and tutorials. The site is arranged by topic. For example, Java and XML, Java Security, Wireless Java, and Java SysAdmin. This site also has links to o'reilley Learning Lab, where you can get online references (related to Java and others ). Those are not free, but many are for university certification. Therefore, you can learn your skills in a convenient way and get some certification.
The java.net community has multiple "communities" with topics-specific forums and articles. For example, the Java Desktop community has various materials related to Java Desktop development. The Java Patterns community, as a portal, may be quite interested in providing mode resources for the Java language. There is also a Java User Groups (JUG) community where you can find information about creating, adding, and managing a JUG.
Any list of "good", "critical", or "important" references is doomed to be incomplete, and the list in this article is no exception. There are a large number of books in the Java language. Of course, the World Wide Web is also very large. In addition to the references listed in this article, there are also many references for learning the Java language. However, if you have all the books, websites, articles, or tutorials mentioned here, you should have a practical treasure that helps you get started.
Finally, to become a growing and efficient Java language developer, you can use it to work and try it out. If a tutorial details each part of the software to be created, you probably won't have much benefit. Sometimes, you may have to go your own way. After successfully trying something new, you may want to write an article, tutorial, or book to share what you have learned.
About the author
Roy Miller is an independent software development trainer, programmer and writer. He has been engaged in software development and project management for more than 10 years in challenging and fast-paced consulting companies. He initially worked at Anderson Consulting (now Accenture), where his management team implemented many systems, from the host accounting system to the star-mode data mart. He has been working at RoleModel Software, Inc. In Holly Springs, North Carolina for the past three years, where he specializes in Java technology and serves as a developer and Extreme Programming (XP) trainer. He has co-authored the Addison-Wesley XP SeriesExtreme Programming Applied: Playing to WinHe has recently written a bookManaging Software for Growth: Without Fear, Control and the Manufacturing MindsetThis book helps managers and management understand why agile building methods like XP are more effective than traditional methods. In 2003, he founded his own company, The Other Road, which helped Other companies learn how to convert to XP and what he called Extreme Business (XB.
This article is transferred from IBM Dev Center.
All content in this Blog is provided as "the status quo" without any guarantee and no rights are granted.