Synopses & Reviews
If youre an experienced Java developer in the enterprise, this practical, hands-on book shows you how to use OSGi to design, develop, and deploy modular cloud applications. Youll quickly learn how to use OSGi, through concise code examples and a set of best practices derived from the authors experiences with real-world projects.
Through the course of this book, youll learn to develop modern web applications with tools and techniques such as RESTful Web Services, NoSQL, provisioning, elasticity, Auto Scaling, hotfixes, and automatic failover. Code samples are available from GitHub.
- Work with dynamic OSGi services to create modular applications
- Explore the basics of OSGi bundles and modular application design
- Learn advanced topics, including semantic versioning, integration testing, and configuring components
- Understand OSGi pitfalls, anti-patterns, and features you should avoid
- Create a modular architecture for cloud-based web applications
- Discover how maintainability, extensibility, scalability, and testability are affected by modular design
- Get a look at various options for creating web applications with a modular approach
- Interact with persistent storage services, including relational databases and NoSQL
- Examine alternatives for deploying modular applications to the cloud
Synopsis
This book will explain how to build and deploy enterprise web applications. It will include OSGi, but skip over details that are not really relevant for most use cases. Because there is a clear focus on web applications in the cloud, it will also include architecture, patterns and typical problems in that area, such as tooling and deployment. Most developers are very much interested in modularity, but it is difficult to get started. Learning resources are still limited, but major improvements in tooling and frameworks in the last year have made it more realistic for developers to jump on this.
About the Author
Paul Bakker is a software architect for Luminis Technologies. His current focus is on building modular enterprise applications and the cloud. He believes that modularity and the cloud are the two main points we have to deal with to bring technology to a next level, and is working on making this possible for main stream software development. Today he is working on educational software focussed on personalised learning for high school students in the Netherlands. He is also responsible for pushing technology forward. Luminis strongly believes in open source and all the technology development they are doing happens in the open source community. Paul is an active contributor on projects such as Amdatu, Apache ACE, JBoss Forge and BndTools. He has a background as trainer on Java related technology and is a regular speaker on conferences.
Bert Ertman is a Fellow at Luminis in the Netherlands. Next to his customer assignments he is responsible for stimulating innovation, knowledge sharing, coaching, technology choices and presales activities.Besides his day job he is a Java User Group leader for NLJUG, the Dutch Java User Group. A frequent speaker on Enterprise Java and Software Architecture related topics at international conferences (e.g. J-Fall, Devoxx, JavaOne, Jfokus, etc) as well as an author and member of the editorial advisory board for Dutch software development magazine: Java Magazine. In 2008, Bert was honored by being awarded the coveted title of Java Champion by an international panel of Java leaders and luminaries.
Table of Contents
Dedication; Preface; Who Should Read This Book; How This Book Is Organized; Conventions Used in This Book; Using Code Examples; Safari® Books Online; How to Contact Us; Acknowledgments; Introducing Modularity in Java; Chapter 1: Modularity Introduction; 1.1 Dealing with Increasing Complexity complexity; 1.2 Divide and Conquer; 1.3 Service Oriented Architecture All Over Again?; 1.4 A Better Look at Modularity and What It Really Means; 1.5 Modularity Solutions; 1.6 Choosing a Solution: OSGi; 1.7 Tooling; Chapter 2: Basic Concepts of OSGi; 2.1 Hiding Implementations; 2.2 Import Package Myths; 2.3 Depending on Other Modules; 2.4 Service Dynamics; 2.5 The Bundle Format bundlesformat; 2.6 Running an OSGi Application; 2.7 The Framework Lifecycle; Chapter 3: Creating the First OSGi Application; 3.1 Prerequisites; 3.2 Getting Started; 3.3 Creating an API Bundle; 3.4 Creating an OSGi Service; 3.5 Running the Code; 3.6 Using the Agenda Service; 3.7 Service Instances; 3.8 Understanding Service Dynamics; Chapter 4: Advanced OSGi; 4.1 Semantic Versioning; 4.2 Integration Testing; 4.3 Configuring Services Configuration Admin APIconfiguring services; 4.4 Log Service; 4.5 Extender Pattern; 4.6 Event Admin; 4.7 Aspect Services; 4.8 The Bundle Cache; Chapter 5: Pointers and Pitfalls; 5.1 Better Understanding OSGi Specifications; 5.2 Require Bundle; 5.3 Fragment Bundles; 5.4 Loading Extra System Packages; 5.5 Profilers, Coverage Tools, and Bootpath Delegation; 5.6 Dealing with Non-OSGi Libraries; 5.7 Transitive Dependencies transitive dependencies; 5.8 Classloading Problems in Libraries and Frameworks; 5.9 The Low-Level Service API; 5.10 Dynamic Classloading; Developing Cloud Applications; Chapter 6: Cloud Application Architecture; 6.1 Technology Stack; 6.2 The Amdatu Project; 6.3 The Layered Architecture; 6.4 Inside a Bundle; 6.5 API Bundles; 6.6 Separation of Concerns; 6.7 Services Are Responsible for Their Own Data; 6.8 Bndtools Project Structure project structure; 6.9 Comparing with SOA Again; 6.10 Remoting; Chapter 7: Architectural Capabilities system capabilities; 7.1 Maintainability; 7.2 Extensibility; 7.3 Scalability scalability; 7.4 Testability mocking; Chapter 8: Creating Web Applications; 8.1 Modular Web Applications; 8.2 HTTP Service; 8.3 Handling Web Resources Automatically X-Web-Resource-Version header; 8.4 Rethinking Web Applications; 8.5 RESTful Web Services; 8.6 Modular User Interfaces Using HTML 5; 8.7 Token Based Security; 8.8 Web Application Bundles; 8.9 OpenSocial; Chapter 9: Persistence; 9.1 Relational Databases; 9.2 NoSQL; Deploying Applications in the Cloud; Chapter 10: Deployment; 10.1 Understanding OSGi Runtimes; 10.2 Choosing an OSGi Framework for Deployment; 10.3 IaaS versus PaaS versus SaaS; 10.4 A Modular PaaS; 10.5 Apache ACE provisioning; 10.6 Creating a Deployment; 10.7 Autoscaling; Chapter 11: Alternative Deployment Methods; 11.1 Packaging an Application as an Executable JAR; 11.2 Application Servers Application Servers; Example Application; Introduction; Finding and Running the Source Code; Layered View; Component View; Development View; Modularized Frontend; Authentication; Configuration Admin; Scheduled Jobs; Event Admin; Testing; Index; Colophon;