Resources


Textbooks

  • Head-First Java, by Bates and Sierra. A light-hearted, and sometimes amusing, introduction to Java that assumes some programming background, but no experience with Java. [online]
  • Big Java, by Horstmann. A good (but expensive) introductory text. It includes useful asides addressing "common errors", "quality tips", and "advanced topics". The testing approach it advocates, however, is somewhat rudimentary.
  • Absolute Java, by Savitch. A thorough (but expensive) introductory text. It has less glitz and takes a more direct approach than Horstmann's book.
  • Java by Dissection, by Pohl and McDowell. This inexpensive book is a basic introduction that thoroughly covers fundamentals for novice programmers.

Language Reference Material

Coding Conventions and Good Practices

  • Effective Java Programming Language Guide, by Bloch. Organized around a series of "best" practices, this book is an excellent resource for coding style, conventions, and idioms. Although some of the advocated practices are no longer relevant given the features introduce in Java 5 (e.g., typesafe enumerations), many chapters are still relevant today. [online]
    • Talk by Joshua Bloch at a recent JavaOne Conference on his upcoming revision, "Effective Java Reloaded"
    • Interview with Joshua Bloch on the topic of design
  • Coding conventions from Sun. This document is brief and superficial (but still useful, and universally adopted).
  • Elements of Java Style, by Vermeulen, is a small book that expands on Sun's coding conventions. It is recommended but with reservations: the book is out dated (published in 2000) and some of its style rules are bogus. On the whole, however, it is generally relevant.
  • Geosoft's Java Programming Style Guide provides very good advice on lots of low-level idioms and conventions.
  • Random collection of java practices
  • How to Write Doc Comments for the Javadoc Tool, the style-guide from Sun for Javadoc

Tools

  • Eclipse Tutorials, a step-by-step introduction to Eclipse, along with video. This is not the fastest introduction to the Eclipse IDE, but it is simple to follow. The tutorials include a series of lessons for complete beginners, as well as a series of lessons on using the debugger.
  • Eclipse Distilled, by Carlson. This thin tutorial is the classic introduction to Eclipse. After presenting Eclipse's basic functionality, the book focusses on how to use Eclipse to support an agile development methodology. [online]
  • An Early Look at JUnit 4, from IBM developerWorks, gives a nice overview. It is written for an audience with JUnit 3.8 experience, but it is still accessible for JUnit novices.

Books to Avoid

  • Java in a Nutshell, by Flanagan. This book used to be the canonical concise reference. With each release, however, the nutshell has become larger and larger. [online]
  • Thinking in Java, by Eckel. The popularity of this reference is partly due to it having been freely available in electronic format. The most recent edition, however, is not free and older editions do not cover version 5.
  • Learning Java, by Knudsen and Niemeyer. This is not the most direct introduction to the language. [online]