A top choice for learning web programming
I've been looking for a book like this one for some time. Marty Hall has combined in a single volume the topics an experienced programmer needs in order to get started in web development.
I had been making do with Spainhour and Quercia's Webmaster in a Nutshell,, 1996, O'Reilly, ISBN 1-56592-229-8, another well-written and understandable work, but so condensed that it often sent me seeking answers from other sources.
Core Web Programming is like a set of four books. Its broad scope is shown by the list of chapters:
Part 1 -- Hypertext markup language
Part 2 -- Java Programming
Part 3 -- CGI programming
Part 3 -- Javascript
The sequence is logical and well suited to a semester course.
Hall's writing is always clear and understandable. His style is friendly and informal, without going to folksy extremes like Meyers's "gotta"s and "wanna"s. Hall treats the reader as a respected colleague with whom he wants to share information rather than an inferior in need of enlightenment.
Hall's book not only answers my own needs for a good reference, but will also serve as a textbook for a course in introductory Java web programming. Although it's light on object-oriented concepts, it covers the language and the essential (for web programming) libraries well.
Hall takes a balanced view of Java. Unlike many writers on Java, he avoids overhype and concedes Java's shortcomings. However, I noticed two claims on page 235 with which I must register a strong dissent:
First, Hall echoes the common assertion:
In Java everything is an object.Not so! Java programmers need and use independent functions just as much as, say, C++ programmers do. If you're unsure, see Pseudo-classes and Quasi-Classes Confuse Object-Oriented Programming .
Next, and more surprisingly, he asserts:
"In some object-oriented languages, there is a distinction between regular data types and classes. . . . In contrast, in Java all complex types are true objects."Actually Java is the absolute worst offender in its inconsistency between so-called "primitive types" and objects. While a central design criterion in C++ is that programmer-defined classes should look as much as possible like built-in types, Java goes to great lengths to force them to be as different as possible! (For further discussion see The Dark Side of Java and Conventions for Operations in Java.) Although Hall explains the inconsistency by conceding the need for so-called "wrapper" classes like
Integer he doesn't use those clumsy
and half-thought-out standard classes in the code examples that appear
throughout the book.
In the context of the whole book, those are minor issues which experts debate endlessly. If they're flaws they don't detract from the value of this excellent book which I recommend highly.
Return to book reviews.
Return to IDI home page.