Java books: * BruceEckel's ''ThinkingInJava'' [ISBN 0136597238] is more than a good introduction. It covers some areas quite deeply. Full contents available freely on web - see link on Wiki ThinkingInJava page. * ''JavaLanguageSpecification'' is the standard reference to answer really hard questions. If you really want to understand Java concurrency, you have to read Chapter 17 of the JLS. ''(Note: it's now known that the authors themselves don't fully understand chapter 17. '''Java concurrency is not platform independent and does not behave as the designers intended''': july 17 2000)'' * ''JavaInPractice'' [ISBN: 0201360659] is a thin, expensive book (Addison-Wesley) whose main purpose is to introduce the fundamentals of OO design. It is fairly well written, packed with good advice, and excellent for junior Java programmers who are trying to better themselves. -- JustinWells * ''Java in a Nutshell'' [ISBN 156592262X], probably not a beginner book. (Good book, though, in the 1.0.2 version. Haven't looked closely at the 1.1 version.) -- KielHodges I liked the 1.0.2 version so much I bought the 1.1 version. It's even better. I learnt Java out of this book, and two years later I still keep it by the computer. -- JohnFarrell * ''Java Examples In A Nutshell'' [ISBN 1565923715] (What do people think of it?) * ''The Java Class Libraries'' [ISBN 0201634589] series by Chan and Lee (published by Addison-Wessley) are probably the most useful books a knowledgeable Java programmer can buy. -- StephenPetschulat * ''The Java Programming Language'' by Arnold and Gosling is a good language reference. I have the first edition and its served me well in some sticky places. There's now a second edition: ISBN: 0201310066. ''Now (2007) in a fourth edition covering Java 1.5: ISBN 978-0321349804'' * ''Java Database Programming with JDBC'' by Patel and Moss ISBN: 1576100561 has a good reference for the java.sql package. The biggest drawback is that 40% of the book is a Java language reference and the (printed) source for a JDBC driver. The rest of the book is good, though, and does a really good job of avoiding reliance on one company or another's drivers or database. -- RobCrawford * ''The Java Developers Almanac 1998'' ISBN: 0201379678, Looking for a desk-side API reference to the Java 1.2 classes? With little descriptions of anything, besides one line for each class name, The Java Developers Almanac offers a quick, small, and easy access resource to the core Java 1.2 APIs and several of the extension packages: Java 3D (1.0 Early Access), JMF (1.0 Beta), JNDI (1.1), JAF (0.5 Beta2), JavaMail (1.0 Beta2), and Servlets (1.1). This does not attempt to teach you Java or show you how to use anything. It is just an API quick reference. If you do buy, the one thing to remember is that it is based on JDK 1.2 beta3 and several other early access versions. There are newer versions available for most of the APIs covered (I think all but JNDI.). * ''JavaSwing'' by DaveWood and I forget who else is quite good. Unfortunately, it's based on a prerelease version of Swing. * ''Core Java'' [ISBN 0135657555] (2nd edition) Java-as-a-second-language book. 3rd edition [ISBN 0137669577] [ISBN 0137669658]. -- some people liked it. * Deitel & Deitel's ''Java: How to Program'', 2nd Edition [ISBN 0138993947]. This book is for absolute beginners, covering introductory programming topics. * ''The Waite Group's "Java 1.2 How-To"'' book [ISBN: 157169157X] gives lots of small simple examples of using language and library features. Good examples for a beginner, but they do not rise to the level of idioms or patterns. * ''MrBunny's Big Cup O' Java:'' "By high-performance we mean adequate. By adequate we mean slow." The best computing-humor book I've read. -- CliffordAdams * ''Enterprise JavaBeans'', O'Reilly author: Richard Monson-Haefel. ISBN: 1565928695 * ''The Complete Java 2 Certification Study Guide: Programmer's and Developers Exams'' (With CD-ROM) by Simon Roberts, Philip Heller, Michael Ernest, Roberts et al : ISBN: 0782128254 ---- There aren't any great Java books and there are damn few good ones. And I can't see telling someone to spend the money / kill the tree for a book that I consider garbage. For the record, my opinions as to the best out there follow. -- WilliamGrosso '''Intro to the Language:''' BruceEckel's ''ThinkingInJava'' [ISBN 0136597238]. See Above. '''User Interface:''' Geary's first 2 volumes (of a projected 3) are looking fairly nice. They're way too long and the coverage of complex widgetry is a little more superficial than I'd like (the coverage of JTable in particular is skimpy). But they'll save me a fair amount of time and, more to the point, if I was just learning Java GUI stuff, I'd want these books. '''Language reference:''' Gosling ''et al.'' is very good. Venner's ''Inside the Java Virtual Machine'' is an okay reference for the JVM, but a little too introductory. '''Threads:''' DougLea's ''ConcurrentProgrammingInJava'' was a great book when it came out. It's slightly dated now (and Doug says V2 won't be out until later this year). But it's still very good. (Update: the second edition is out! [ISBN 0201310090] -- PaulChisholm) '''Databases:''' None of the books are any good. Period. There's one that's okay for people who don't know anything about databases - Mc''''''Carthy's ''SQL Database Programming With Java'' basically assumes you're on a Wintel box, with Microsoft Access, and uses Access as a tool to teach database fundamentals. A very good intro, for people who don't know very much and are interested in learning the bare rudiments. But almost useless for people who have already touched a database. ---- '''Distributed Computing:''' All the books I've seen (browsing computer literacy, picking them up off coworkers desks, ...) just plain suck. As do all the ones that attempt to cover any of the enterprise APIs. Some distributed computing books: * ''Enterprise Integration Patterns'' - an excellent resource for intergrating systems and for using messaging, not restricted to Java. The first great book on systems integration patterns. * ''Patterns of Enterprise Application Architecture'' - must have for building one of those system you'll integrate later on. The last great book on client-server architecture patterns. * ''Core J2EE Patterns'' - excellent resource on structuring J2EE applications. * ''JavaSpacesPrinciplesPatternsAndPractice'' - you'd like to think the future of Java middleware would look a bit like this. -- BillDehora ---- I'd only add that I've found ''The Java Developers Almanac'' to be an excellent resource. I don't like most of the CORE books with the exception of the CORE book on the JFC. For Java/CORBA, read ''Programming With VisiBroker''. -- JoshuaKerievsky I used to think that ''Java in a Nutshell'' was a good book, but in practice I always use the online documentation. I would absolutely second DougLea ''ConcurrentProgrammingInJava'' and add ''Distributed Computing in Java,'' which mostly covers RMI, but is still one of the clearest examples out there. ''Nutshell'' was greater when the on-line Javadoc was lesser. ---- I rather liked the 2nd edition of ''Core Java'' [ISBN 0135657555] as a Java-as-a-second-language book, but didn't do that much with it. The 3rd edition is now two volumes ([ISBN 0137669577] and [ISBN 0137669658]). What do people think of ''Java Examples In A Nutshell'' [ISBN 1565923715]? -- PaulChisholm I also like ''Core Java''. I specially appreciate the attitude right up front "As with the previous versions of the book, we ''still target serious programmers who want to put Java to work on real projects.'' We still guarantee no nervous text or dancing tooth-shaped characters." The third edition is great and up to date with Java 1.2. ---- van der Linden, Peter. ''Just Java'' and ''Just Java 2'' ISBN 0-13-010534-1, blurb at http://www.phptr.com/ptrbooks/ptr_0130105341.html Covers all basic Java elements (no Enterprise APIs) with an element of the author's views to make it interesting. -- Steven Newton I second this recommendation - an excellent book. -- KurtChristensen ---- Some good non-noddy books, Fowler and Lea are in the great books zone: * MartinFowler. ''Refactoring'' * DougLea. ''ConcurrentProgrammingInJava, 2nd ed.'' * Haggar Peter. ''Practical Java'' * Arnold, Gosling, Holmes. ''Java programming Language, 3rd ed.'' -- BillDehora ---- ''The Elements of Java Style,'' Vermeulen et al. ISBN 0521777682 ''A Programmer's Guide To Java Certification,'' Mughal and Rasmussen ISBN 0201596148 -- DuncanChild ---- ''EffectiveJava Programming Language Guide'' by Joshua Bloch -- Jim''''''Mc''''''Farland ---- The books that taught me the most useful stuff about day-to-day Java and related topics as a J2EE developer/architect: * Rod Johnson's ''J2EE Design and Development'' (Wrox) * Burke & Coyner ''Java Extreme Programming Cookbook'' (O'Reilly) * ''Java Server Programming'' (Wrox) * Fowler & Scott ''UML Distilled'' (Addison Wesley) * Schneider & Winters ''Applying Use Cases'' (Addison Wesley) -- JamesRadvan ---- '''Disputed''' * ''LittleJavaFewPatterns'' is supposed to be a good book, though I haven't read it myself. ''(Noooooo!!! This is about the worst Java book I've ever seen. I hope the authors don't hang around on Wiki, but I have to say this. It presents this completely bizarre Lisp-in-Java way of programming that you'd have to see to believe. But don't look at it until you have a firm grip on idiomatic Java. It's truly scary. -- PeterSeibel)'' (I 2nd that opinion. -- JeffGrigg) * Well, of course everybody is entitled to their opinion. My opinion is that the advice above is just wrong. A firm grip of idiomatic java, I have seen in many developers, seriously impairs one's thinking. Just like a firm grip of idiomatic Cobol. The good is right in teaching Java according with a well established principle ProgramIntoaLanguage (but again this is a very introductory book). --CostinCozianu * ''Head First Java'' - I am currently going through this book, and may follow through with the EJB book depending on my final analysis of this one. I wanted a ground-up review of the language before going on to test-prep material, and this book seemed interesting. I was also looking for introductory texts for some aspiring programmers I knew, and I wanted to see if this was suitable. The book supposedly is written to engage the reader's interest, even with the drier aspects of the language; as such it has a light hearted tone that is both entertaining and disturbingly reminicent of the 'For Dummies' series (though not as condescending). As a book on programming it is definitely only skin-deep. However, the book is fairly careful and thorough about those aspects of the language it addresses. It uses what seem like a lot of silly tricks, but they do indeed make it more memorable than a straightforward reference. I have found myself much more inclined to work on the large number of exercises than with most books, but the exercises themselve tend to be quite simple, and most are more in the way of brain-teaser puzzles than real programming challenges. I haven't made my mind up about it yet; most experienced programmers would probably get exasperated with its cuteness, and it is frankly too shallow to be suitable as a main text, but I think it has potential as a supplemental text for students. - JayOsako ---- CategoryDefinitiveBooks CategoryBooks CategoryJava