There's a blurb on the back cover of this book; a quote of Greg Kroah-Hartman, who is a well respected contributor to the Linux kernel and the current Linux kernel maintainer for the USB, driver core, debugfs, kref, kobject, and the sysfs kernel subsystems. As you can imagine, his word carries a certain amount of weight in the Linux development community. Regarding this book, he says, "The first edition of this book has always been kept within arm's reach of my desk due to the wonderful explanations of all areas of the Linux userspace API. This second edition greatly overshadows the first one and will replace it." That certainly speaks volumes.
The first edition was very successful (just check out the reviews on Amazon if you don't believe me), though not universally so (I guess you can't please everyone). This second edition is supposed to be updated for version 2.6 of the Linux kernel, version 2.3 of the GNU C library, and is up to date on the latest POSIX standards. It's supposed to dive deeper into the seas of the Linux-specific extensions and features of application development than Verne's (or Nemo's) Nautilus. Does it succeed? Let's find out.
New stuff first. When I review a subsequent edition to a successful prior edition, I want to find out what's new. Is it going to be worth my time and money to shell out for the latest book or would my old text still do fine? Where do I find this info and how easy is it for me to access? The answer in the case of this book, is right on the back cover. That means I can casually scan this book at my favorite bookstore and see for myself if "what's new" interests me. Besides what I've mentioned so far, the book contains new info on writing secure Linux programs, improves its coverage of regular expressions usage, and covers IPv6, and that's just for starters. The first edition, though excellent, suffered from some organizational problems. This edition works to correct them by providing a better index and glossary and numbered lines for the code samples.
I could have lived without the "brief" history of Linux at the beginning of the book, but I have to remind myself that part of the target audience for this text is the C developer looking to move into Linux app development. Experienced Linux developers can skip over Part I. Thankfully, it's only 21 pages long.
If the first edition never made it on your radar screen, then you'll want to know about the book as a whole, not just the new bits. First off, it's easy to read. I mean that from the perspective of someone who wears reading glasses. The text is slightly larger than average and makes it easier on the eyes and thus, you aren't wasting energy trying to get the words to focus. The code examples are indeed numbered and straightforward, but I hope you don't like color. The entire book is a tribute to monochrome. It is definitely an "old school" textbook.
Getting into the "nuts and bolts" of the book, it really does show its value, particularly to readers who need to port applications to a Linux/UNIX platform. The economy being the way it is, quite a number of organizations are wanting to port apps from Windows to Linux because of the greater ROI involved. Also, while the "Year of the Linux Desktop" may not have arrived in 2008, Linux generally is making a greater presence, both in the server room and in the board room, than in previous years. That means there is a greater need for porting apps to Linux than ever before.
The thing is, porting apps from Windows to Linux requires that you to understand how the underlying dependencies for each operating system differ. This book is just made to help you understand. Johnson and Troan also do a great rate job in describing to the C programmer the development tools necessary for Linux application development, and how Linux interfaces with each application. I mentioned the code examples in passing before, but what's just as important as the examples, are the clear and consistent explanations to the code you see in the book. The reader is lead through each sample, gaining competency as he or she moves forward through the book.
There is just one little thing you need to be aware of...the second edition was published in 2005...in hardback, that is. The paperback edition is what's absolutely brand new and the copyright page speaks for itself, as does a quick search on Amazon. You might have figured this out if you were aware that the 2.6 version of the Linux kernel was released 17 December 2003. Of course, version 2.6.27 was released just a little over a month ago (as I write this review) and just days before the paperback edition was published. That means there hasn't been a major kernel release subsequent to this book, so it's not a disaster. Publishing the book in paperback does make it more affordable and thus, more accessible to interested readers.
Speaking of access, all of the code samples are supposed to be available at http://ladweb.net. I say "supposed to", because when I tried to access the site, it wasn't available (yes, I had Internet connectivity at the time). Hopefully, your luck will be better than mine, at least if having web support for the book is important to you. I'm not totally inflexible. I know that web servers go down all the time, so I just happened to pick the wrong time and got the dreaded "Page Load Error".
I wouldn't give "Linux Application Development, Second Edition" perfect marks, but certainly very, very high ones (think, four out of five stars). That said, if Greg Kroah-Hartman has given it his blessing (and assuming you find his word credible), then as a C programmer wanting to move into Linux application development or an experienced Linux developer wanting to learn more, this book is the right one for you.