FOREWORD
by Stephen J. Me//or
PREFACE
Part One ON ARCHITECTURE
1 WHAT IS ARCHITECTURE?
by John Klein and Dauid Weiss
Introduction
Creating a Software Architecture
Architectural Structures
Good Architectures
Beautiful Architectures
Acknowledgments
References
2 A TALE OF TWO SYSTEMS: A MODERN-DAY SOFTWARE FABLE
by Pete Goodliffe
The Messy Metropolis
Design Town
So What?
Your Turn
References
Part Two ENTERPRISE APPLICATION ARCHITECTURE
3 ARCHITECTING FOR SCALE
by Jim Waldo
Introduction
Context
The Architecture
Thoughts on the Architecture
4 MAKING MEMORIES
by Michael Nygard
Capabilities and Constraints
Workflow
Architecture Facets
User Response
5 RESOURCE-ORIENTED ARCHITECTURES: BEING "IN THE WEB"
by Brian Sletten
Introduction
Conventional Web Services
The Web
Resource-Oriented Architectures
Data-Driven Applications
Applied Resource-Oriented Architecture
Conclusion
6 DATA GROWS UP: THE ARCHITECTURE OF THE FACEBOOK PLATFORM
by Daue Fetterman
Introduction
Creating a Social Web Service
Creating a Social Data Query Service
Creating a Social Web Portal: FBML
Supporting Functionality for the System
Summation
Part Three SYSTEMS ARCHITECTURE
7 XEN AND THE BEAUTY OF VIRTUALIZATION
by Derek Murray and Keir Fraser
Introduction
Xenoservers
The Challenges of Virtualization
Paravirtualization
The Changing Shape of Xen
Changing Hardware, Changing Xen
Lessons Learned
Further Reading
8 GUARDIAN: A FAULT-TOLERANT OPERATING SYSTEM ENVIRONMENT
by GreR Lehey
Tandem/16: Some Day All Computers Will Be Built Like This
Hardware
Mechanical Layout
Processor Architecture
The Interprocessor Bus
Input/Output
Process Structure
Message System
File System
Folklore
The Downside
Posterity
Further Reading
9 JPC: AN X86 PC EMULATOR IN PURE JAVA
by Rhys Nemman and Christopher Dennis
Introduction
Proof of Concept
The PC Architecture
Java Performance Tips
Four in Four: It Just Won't Go
The Perils of Protected Mode
Fighting A Losing Battle
Hijacking the JVM
Ultimate Flexibility
Ultimate Security
It Feels Better the Second Time Around
10 THE STRENGTH OF METACIRCULAR VIRTUAL MACHINES:JIKES RVM
by/an Rogers and Daue Groue
Background
Myths Surrounding Runtime Environments
A Brief History ofJikes RVM
Bootstrapping a Self-Hosting Runtime
Runtime Components
Lessons Learned
References
Part Four END-USER APPLICATION ARCHITECTURES
11 GNU EMACS: CREEPING FEATURISM IS A STRENGTH
by Jim Blandy
Emacs in Use
Emacs's Architecture
Creeping Featurism
Two Other Architectures
12 WHEN THE BAZAAR SETS OUT TO BUILD CATHEDRALS
by Till Adam and Mirko Boehm
Introduction
History and Structure of the KDE Project
Akonadi
ThreadWeaver
Part Five LANGUAGES AND ARCHITECTURE
13 SOFTWARE ARCHITECTURE: OBJECT-ORIENTED VERSUS FUNCTIONAL
by Bertrand Meyer
Overview
The Functional Examples
Assessing the Modularity of Functional Solutions
An Object-Oriented View
Assessing and Improving OO Modularity
Agents: Wrapping Operations into Objects
Acknowledgments
References
14 REREADING THE CLASSICS
by Panagiotis Louriclas
Everything Is an Object
Types Are Defined Implicitly
Problems
Brick and Mortar Architecture
References
AFTERWORD
by William J. Mitchell
CONTRIBUTORS
INDEX