Java Application Architecture: Modulari... | WHSmith Books
Java Application Architecture: Modularity Patterns with Examples Using OSGi

Java Application Architecture: Modularity Patterns with Examples Using OSGi

By: Kirk Knoernschild (author)Paperback

Up to 2 WeeksUsually despatched within 2 weeks


"I'm dancing! By god I'm dancing on the walls. I'm dancing on the ceiling. I'm ecstatic. I'm overjoyed. I'm really, really pleased." -From the Foreword by Robert C. Martin (a.k.a. Uncle Bob) This isn't the first book on Java application architecture. No doubt it won't be the last. But rest assured, this title is different. The way we develop Java applications is about to change, and this title explores the new way of Java application architecture. Over the past several years, module frameworks have been gaining traction on the Java platform, and upcoming versions of Java will include a module system that allows you to leverage the power of modularity to build more resilient and flexible software systems. Modularity isn't a new concept. But modularity will change the way we develop Java applications, and you'll only be able to realize the benefits if you understand how to design more modular software systems. Java Application Architecture will help you Design modular software that is extensible, reusable, maintainable, and adaptable Design modular software today, in anticipation of future platform support for modularity Break large software systems into a flexible composite of collaborating modules Understand where to place your architectural focus Migrate large-scale monolithic applications to applications with a modular architecture Articulate the advantages of modular software to your team Java Application Architecture lays the foundation you'll need to incorporate modular design thinking into your development initiatives. Before it walks you through eighteen patterns that will help you architect modular software, it lays a solid foundation that shows you why modularity is a critical weapon in your arsenal of design tools. Throughout, you'll find examples that illustrate the concepts. By designing modular applications today, you are positioning yourself for the platform and architecture of tomorrow. That's why Uncle Bob is dancing.

About Author

Kirk Knoernschild is a software developer who has filled most roles on the software development team. Kirk is the author of Java Design: Objects, UML, and Process (Addison-Wesley, 2002), and he contributed to No Fluff Just Stuff 2006 Anthology (Pragmatic Bookshelf, 2006). Kirk is an open source contributor, has written numerous articles, and is a frequent conference speaker. He has trained and mentored thousands of software professionals on topics including Java/J2EE, modeling, software architecture and design, component-based development, service-oriented architecture, and software process. You can visit his website at


Foreword by Robert C. Martin xix Foreword by Peter Kriens xxiAcknowledgments xxvAbout the Author xxvii Introduction 1Object-Oriented Design 2Logical versus Physical Design 3Modularity 4Who This Book Is For 6How This Book Is Organized 7Pattern Form 10Pattern Catalog 12The Code 13An Opening Thought on the Modularity Patterns 14Reference 14 Part I: The Case for Modularity 15 Chapter 1: Module Defined 171.1 Defining a Module 171.2 Succinct Definition of a Software Module 201.3 Conclusion 20 Chapter 2: The Two Facets of Modularity 212.1 The Runtime Model 212.2 The Development Model 222.3 Modularity Today 252.4 Conclusion 27 Chapter 3: Architecture and Modularity 293.1 Defining Architecture 293.2 A Software Architecture Story 303.3 The Goal of Architecture 333.4 Modularity: The Missing Ingredient 363.5 Answering Our Questions 433.6 Conclusion 443.7 References 44 Chapter 4: Taming the Beast Named Complexity 454.1 Enterprise Complexity 464.2 Technical Debt 474.3 Design Rot 484.4 Cyclic Dependencies-The Death Knell 504.5 Joints, Modules, and SOLID 564.6 Managing Complexity 574.7 Benefits of Modularity 594.8 Conclusion 604.9 References 60 Chapter 5: Realizing Reuse 615.1 The Use/Reuse Paradox 625.2 The Reuse Disclaimer 635.3 Reuse or Use 645.4 Modular Tension 655.5 Modular Design 665.6 Conclusion 675.7 Reference 68 Chapter 6: Modularity and SOA 696.1 All the Way Down, Revisited 696.2 Granularity-Architecture's Nemesis 726.3 An Alternate View 796.4 Conclusion 80 Chapter 7: Reference Implementation 837.1 Why No OSGi? 837.2 Background on This Exercise: Building the System 847.3 Version 1 857.4 First Refactoring 877.5 Second Refactoring 907.6 Third Refactoring 937.7 Fourth Refactoring 957.8 Fifth Refactoring 987.9 Sixth Refactoring 997.10 Seventh Refactoring 1027.11 The Postmortem 1037.12 Conclusion 1107.13 Reference 110 Part II: The Patterns 111 Chapter 8: Base Patterns 115Manage Relationships 116Module Reuse 125Cohesive Modules 139 Chapter 9: Dependency Patterns 145Acyclic Relationships 146Levelize Modules 157Physical Layers 162Container Independence 170Independent Deployment 178Reference 185 Chapter 10: Usability Patterns 187Published Interface 188External Configuration 200Default Implementation 206Module Facade 212 Chapter 11: Extensibility Patterns 221Abstract Modules 222Implementation Factory 229Separate Abstractions 237Reference 244 Chapter 12: Utility Patterns 245Colocate Exceptions 246Levelize Build 253Test Module 263 Part III: Poma and OSGi 271 Chapter 13: Introducing OSGi 27313.1 Some History 27313.2 Benefits of OSGi 27413.3 Digesting OSGi 27613.4 OSGi Bundle 27713.5 OSGi Runtime Management 27913.6 The Two Facets of Modularity, Revisited 27913.7 OSGi and the Patterns 279 Chapter 14: The Loan Sample and OSGi 28314.1 Getting Started 28314.2 The Manifests 28514.3 Services 28614.4 Installation and Execution 29214.5 Conclusion 293 Chapter 15: OSGi and Scala 29515.1 Getting Started 29515.2 The Scala Code 29615.3 Scala Bean Configuration 29915.4 Scala Service Configuration 29915.5 Building the Scala Module 30015.6 Installation and Execution 30015.7 Conclusion 301 Chapter 16: OSGi and Groovy 30316.1 Getting Started 30316.2 The Groovy Code 30416.3 Groovy Bean Configuration 30616.4 Groovy Service Configuration 30716.5 Building the Groovy Module 30716.6 Installation and Execution 30816.7 Conclusion 309 Chapter 17: Future of OSGi 31117.1 OSGi as an Enabler 31217.2 The Disruption 31217.3 The Power of Ecosystems 31417.4 The Ecosystem 31617.5 Conclusion 317 Appendix: SOLID Principles of Class Design 319Single Responsibility Principle (SRP) 320Open Closed Principle (OCP) 320Liskov Substitution Principle (LSP) 323Dependency Inversion Principle (DIP) 325Interface Segregation Principle 327Composite Reuse Principle (CRP) 329References 335 Index 337

Product Details

  • ISBN13: 9780321247131
  • Format: Paperback
  • Number Of Pages: 384
  • ID: 9780321247131
  • weight: 618
  • ISBN10: 0321247132

Delivery Information

  • Saver Delivery: Yes
  • 1st Class Delivery: Yes
  • Courier Delivery: Yes
  • Store Delivery: Yes

Prices are for internet purchases only. Prices and availability in WHSmith Stores may vary significantly