Take the 2-minute tour ×

I have spent the last 2-1/2 years building a distributed application. We started testing it a couple months ago and we're moving it into production. Everything runs fairly well, but it could definitely run better.

I'm looking for some books I can read which will help make sure we're not making any obvious mistakes. I searched online and didn't find anything by any authors I recognize as experts. Others were ten years old.

Is there a book out there that's the de-facto standard for describing best practices, design methodologies, and other helpful information about distributed programming in Java? What about that book makes it special?

share|improve this question
add comment

closed as off-topic by MichaelT, gnat, Dan Pichelman, GlenH7, Thomas Owens Jul 19 '13 at 10:59



2 Answers

That one was an eye-opener to me: Expert One-on-One J2EE Development without EJB

Author (Rod Johnson, a "Spring guy") has a distinct talent to clearly explain complicated matters. Coupled with his apparently enormous experience, it makes a killer mix that forced me to literally swallow the book - page by page, chapter by chapter. First five chapters were simply fascinating reading.

Chapters 6 through 15 cover a broad range of enterprise software technologies, practices and frameworks. AOP and DAO sections were particularly helpful. Web Tier chapter turned out rather difficult to read; it felt more heavyweight compared to the rest of the book. Testing and Testability chapter is excellent, it certainly shed some light on why author was as successful in leading Spring development.

Two closing chapters (Sample App and Conclusion) make a powerful coda to this middleware symphony, reinforcing opening theme of superiority of clean object oriented design.

Reading 'Last Words' brought back memories of listening to Beethoven's Ode to Joy (btw author's bio mentions that he's got a degree in Musicology)

"...We believe not only that J2EE development should be much simpler than the mixture of drudgery and complexity it's often made out to be, but that developing J2EE applications should be fun.

We hope you've enjoyed reading this book as much as we enjoyed writing it. We hope that after reading it you'll be familiar with the architectural alternatives to the traditional approach to J2EE architecture. We encourage you to base your architectural choices on evidence. While we hope we've been persuasive, don't take our word without proof. Before committing to an application architecture, verify that whatever approach you choose delivers on the goals for your project. And have fun!"

share|improve this answer
add comment

The book used in my university's distributed systems course when I took it was Distributed systems Concepts and Designs (4th Edition) by George Coulouris, Jean Dollimore, and Tim Kindberg. The book also has a companion website. The examples are all in Java, but the content is generic enough to be applicable to the design and development of distributed systems in any language.

There's a newer, fifth edition, of the same book also with a companion website. They apparently added a new author, Gordon Blair. I've never looked at this book, since it just came out a couple of months ago. It looks like in this release, they've enhanced the existing sections and added information about mobile systems.

I would recommend check this book out. It's still on my bookshelf, and I've actually begun to refer to it for a personal project I'm working on.

share|improve this answer
I used the same book at my university, but I can't recommend it. I feel that it's old. Concepts like CORBA and RPC isn't used as much anymore, they may be good for LAN-systems, but today we also need WAN-systems and newer concepts like REST and Map Reduce are important. –  Jonas Aug 21 '11 at 17:40
@Jonas I'm wondering if the 5th edition has been updated to address some of these topics. But for the most part, it's one of the better books that I've come across. –  Thomas Owens Aug 21 '11 at 18:24
I found this book very hard to digest. My university used this book and I read it, but I found it very painful/boring. Also it did focus on underlying concepts (except for an unhealthy dose of Java RMI, Corba, etc.). Most companies are using some type of Java J2EE container or something like Spring to provide higher level API's which abstract away the low level stuff. The low level stuff is interesting, but for practical application you are better off getting a book on one of the frameworks/app servers. –  Cervo Aug 21 '11 at 23:50
@Cervo, I disagree with it being better off to know a framework. If you don't understand what the framework is doing and how it's doing it, it's pointless. In order to understand how to actually design and build systems, you need to understand how everything fits together. –  Thomas Owens Aug 22 '11 at 0:17
casting a binding CV at the question you answered per flag from another answerer, feels fair isn't it? :) Sine ira et studio –  gnat Jul 19 '13 at 12:35
add comment
