|Recommended Java and Web Programming Books|
||Java Programming Resources.
||JSP/Servlet/Struts/JSF Programming Resources.
Following are my top choices for Java and Web programming books, based on my
experience doing professional Java development and teaching Java and
There is also a list of Java books that Sun
has put out, the Java Series,
written by those creating the technology, including many online books,
and the Java Developer Connection Bookshelf.
Also, check out the
FAQs and tutorials section
section for tutorials.
Categories of Books
There are a huge number of Java programming books on the market. This
presents potential Java book readers with two problems. First, the books
are in many different categories; someone looking for introductory Java
tutorials wants totally different books than someone who knows Java
1.1 already and wants books to get them going with Swing as quickly
as possible. The second problem is that (IMHO) the vast majority of
Java books are, well, bad. "Teach Yourself Java 1.2 (Written in 21
Days)" or "Java by Dummies" are not the books an experienced Java programmer
or or a Java beginner want, but seem to be the books that take up a
large percentage of the Java books section at many retail book stores.
My goal here is twofold: categorize the Java books by topic so that
JDBC books are not mixed into the same list as intro Java programming books,
and give specific recommendations of books that I personally own and
think are good, based on
my professional experience doing research and development with
Java, and my experience teaching Java at
and in various industry short courses
books are somewhat related, and since I have a large number of those
books on my shelf, I included my favorites there as well.
Even within the category of "gentle" introductory Java books, there is
still quite a range in the level of presentation. So I've broken the
books into two general areas: those books appropriate for first-time
programmers and those books primarily aimed at people with at least light
programming experience. Books in the first category concentrate on Java
language fundamentals (loops, conditionals, object-oriented
programming, programming strategy), while books in the second category
decrease the discussion of these topics in order to cover more
advanced Java capabilities like graphics, network programming, and
Java Books for the First-Time Programmer
Java: An Introduction to Computer Science and Programming
by Walter Savitch (© 2003, ISBN: 0131013785). This is probably my favorite of the books in this
group. It includes a whole chapter on primitive types in Java, plus
sections or chapters on Java's approach to loops, conditionals,
strings, and the like. The book also has several chapters on
objects and one on HTML.
Problem Solving With Java by Elliot B. Koffman and Ursula
Wolz(© 2002, ISBN: 032115486X). This book covers both Java syntax basics (loops, arrays,
conditionals) and general programming strategies
(object-oriented design, recursion, some simple data structures).
Introduction to Programming Using Java: An Object-Oriented
Approach by David M. Arnow and Gerald Weiss (© 2003, ISBN: 0321200063). Like the other
books in this category, this book has sections on loops,
conditionals, and recursion. But the distinguishing
characteristic is the book's focus on objects, introducing basic
OO concepts in Java even before the other basic topics.
Java Books Assuming Some Programming Background
Thinking in Java by Bruce Eckel (© 2002, ISBN: 0131002872). The gentlest of the
books in this category; it sort of straddles this and the
previous category (Java books for first-time programmers).
Just Java 2 : J2SE 1.5 Edition (includes Swing coverage!) by Peter van der Linden (© 2004, ISBN: 0131482114).
Definitely the most entertaining reading of any of the Java books.
Downright enjoyable. Aims at a bit more of an advanced
audience than the other books in this category, though.
Java How to Program Sixth Edition.
by Deitel and Deitel (© 2005, ISBN: 0131483986). Java programming tutorial book
aimed at an undergraduate audience. Careful development of
the fundamental topics, but early introduction of applets and
event listeners may be a bit confusing to Java beginners.
The Java 1.5 version includes introductions
to Swing and Java servlets and JDBC.
These books are absolutely not aimed at programming beginners; the
goal is to get relatively experienced programmers who do not know
Java up to speed in Java as quickly as possible, and to explain a
large proportion of the Java programming features that professional
developers would use.
Core Web Programming: Second Edition by Marty Hall(© 2001, ISBN: 0130897930). OK, so I'm not entirely unbiased in recommending this book. :-).
- Core Java 2 by Horstmann and Cornell. This is broken into
Volume 1: Fundamentals(© 2002, ISBN: 0130471771) and
Volume 2: Advanced Features)(© 2001, ISBN: 0130927384). A good fast-moving
introductory Java book aimed at serious developers, upper-level
undergraduates, or grad students. These Java 2 versions of the books continue
Core Java's clear
style, and I highly recommend it if you are just getting started and
plan to use Java 2 (JDK 1.2 through 1.5). But if you already know Java 1.1 and
just want to learn
about Swing or other Java 2 features, I recommend
the books in the JFC/Swing
Java in a Nutshell Fourth Edition by David Flanagan (© 2002, ISBN: 0596002831). A Java 2 version of
the popular Java 1.1 and Java 1.02 books. Sparse on explanation but rich
in examples and listings of the non-graphics Java APIs. Does not cover Swing,
Java 2D, or the AWT.
These books are not Java tutorials, but rather detailed desktop Java API
references for people already experienced with Java programming.
- The Java Class Libraries by Chan and Lee.
I'm not always in agreement with their programming style, but nevertheless,
this was my single most-used Java reference during Java 1.02.
These following books written for Java2 are broken into three volumes.
Like the first edition, the books give detailed coverage of every variable
and method in every class in the Java packages they cover.
Put on your lifting belt: the books are 1700 pages each.
The previous set has complete coverage of every variable and method in every class.
A more recent shortened version from Chan and Lee is
The Java Developers Almanac 1.4 : Examples and Quick Reference (© 2002, ISBN: 0201752808).
Volume 1: java.io, java.lang, java.math, java.net,
java.security, java.text, and java.util (© 1998, ISBN: 0201310023)
Volume 2: java.applet, java.awt, and java.beans (© 1997, ISBN: 0201310031)
Second Edition Volume 1: Supplement for the Java 2
Platform (© 1999, ISBN: 0201485524). This last of the books covers the new parts of
Java 1.2 other than Swing and Java2D.
Books on Java Swing are listed elsewhere on this page.
The Java Language Specification by Gosling, Bracha,
Joy, and Steele (second edition © 2000, ISBN: 0201310082). This book gives the authoritative word
on Java syntax and semantics, plus covers the API
for the classes in java.lang, java.io, and java.util.
Java I/O by Elliote Rusty Harold (© 1999, ISBN: 1565924851). One of the only
books to delve into I/O in detail. Gives
detailed coverage of all the I/O streams, including those
specific to Java 1.2 (aka Java 2), cryptographic streams,
and the Java Communications API for I/O to/from serial ports.
I've gotten a huge stack of books on Swing programming in the last several
months, most of them bad. The five books of the bunch I think
are pretty good, in rough order of preference, are:
Java Swing by Eckstein, Loy, and Wood (© 1998, ISBN: 156592455X). I waver back and
forth between this book and the Core Java Foundation
Classes book below as to which is my favorite of the Swing books.
Core Java Foundation Classes by Kim Topley (© 1998, ISBN: 0130803014).
Another excellent Java Swing book.
The JFC Swing Tutorial by Walrath and Campione (© 1998, ISBN: 0201433214). One of the
few Java Swing books that uses the latest package names (the
above two books came out before the final release of Java 1.2),
and is comparatively error-free. On the
other hand, IMHO this book is much less well organized for paper
reading than the O'Reilly Java Swing book and the Topley
Graphic Java 2: Mastering the JFC, Volume II: Swing by David
Geary (© 1999, ISBN: 0130796670). Be sure you get the second volume; the first of the books
in this sent is on the AWT only.
Up to Speed with Swing by Steven Gutz (© 1999, ISBN: 1884777759). This book gives a
particularly gentle introduction to Swing, but is not as
in-depth as the other Swing books listed here.
None of these books really cover the full Java Foundation Classes,
just the Swing GUI controls. However, there are several good sources
of info on Java2D:
These are books that deal primarily with socket-oriented network
programming in Java.
These books are aimed at relatively experienced Java programmers who
want to connect to databases from their Java programs.
These books focus on distributed objects in Java, rather than raw
Advanced Java Networking by Prashant Sridharan and Steflik (© 2000, ISBN: 0130844667).
This book covers
programming with sockets, RMI, JDBC, CORBA and the Java IDL.
Client/Server Survival Guide by
Orfali and Harkey (© 1999, ISBN: 0471316156). Deals with CORBA and DCOM and includes coverage of JavaBeans, Dynamic HTML, XML, etc.
The book to get if you want to get started
with CORBA applications in Java as quickly as possible.
Please see the separate
list of JSP and servlet books.
Also see the free online edition of the first
edition of Core Servlets and JSP,
free servlet, JSP, Struts, and JSF training materials, and
training courses on servlets, JSP, Struts,
Jini is the hot new "network anything, anytime" Java technology, so
expect lots more books in this category soon. In the meantime, these
two books are a good place to start.
Core Jini by W. Keith Edwards (© 2000, ISBN: 0130894087). I was one of the technical
reviewers for this book as it was being written, so I suppose
I'm not totally unbiased. But I think this is a truly
outstanding book on Jini, covering not only the API but
strategies, applications, and lots and lots of examples.
If you only get one of the Jini books, this is the
one for you.
The Jini Specifications by Arnold et al (Second edition © 2000, ISBN: 0201726173). This book is the definitive spec from the Jini team. However, it doesn't purport
to be a broad ranging Jini tutorial, like the Core
Jini book is.
I have three books specifically on JavaBeans, and the clearly
superior book of the three is
However, two general Java books also have excellent chapters on JavaBeans:
The Java Tutorial Continued: The Rest of the JDK (© 1998, ISBN: 0201485583) and
Core Java Volume II: Advanced Features (© 2001, ISBN: 0130927384).
These books are aimed at experienced Java programmers who want to
do advanced multi-threaded applications.
Concurrent Programming in Java: Design Principles and
Patterns by Doug Lea (© 1999, ISBN: 0201310090). This excellent book focuses on
applications of concurrency and high-level implementation
approaches, not just the mechanics of doing it in Java.
Java Threads by Oaks and Wong (© 2004, ISBN: 0596007825). This book has lots of details
on Java approaches, with an entire chapter on
Note that only the first two books focus on Java; the rest are general WWW
Java Security by Scott Oaks (© 2001, ISBN: 0596001576). This book focuses on using the
security mechanisms of Java 2 (aka Java 1.3).
Securing Java : Getting Down to Business With Mobile Code by
McGraw and Felten (© 1999, ISBN: 047131952X). This book is very different from the previous
one; it looks at the security holes in various Java releases.
Secrets and Lies : Digital Security in a Networked World by Bruce Schneier
(© 2004, ISBN: 0471453803).
Practical Cryptography by Bruce Schneier and Niels Ferguson
(© 2003, ISBN: 0471223573).
Firewalls and Internet Security : Repelling the Wily Hacker by Rubin, Bellovin, Cheswick (© 2003, ISBN: 020163466X).
Web Security, Privacy, & Commerce by Garfinkel and Spafford (© 2001, ISBN: 0596000456).
Bandits on the Information Superhighway : What You Need to Know
by Daniel Barrett (© 1999, ISBN: 0788165224).
My three favorite HTML books, in order of preference, are:
HTML and XHTML: The Definitive Guide by Musciano and Kennedy (© 2002, ISBN: 059600382X).
All the editions of these books have been excellent.
Web Design in a Nutshell by Jennifer Niederst (© 2001, ISBN: 0596001967). Excellent
book covering higher-level topics than just pure HTML syntax.
Raggett on HTML 4 by Raggett, Lam, Alexander, and Kmiec(©1998, ISBN: 0201178052).
Book on HTML 4.0 by its lead designer. Includes frames and
style sheets (level 1), but not layered HTML, and most
Netscape or Internet Explorer extensions.
Xhtml : Example by Example by Aaron Walsh and Dave Raggett (©2001, ISBN: 013040005X).
Undoubtedly there are plenty more of these types of books that I haven't seen.
Unlike most of the other book areas, I haven't been able to keep with
the various Java books in this category. But these are the best of
the books I've personally seen.
Well, books (plural) is an exaggeration. There is one book (singular)
on Java and XML that stands head and shoulders above all the other
Java and XML by McLaughlin and Loukides (© 2001, ISBN: 0596001975).