Book description
Build robust and scalable Java applications by learning how to implement every aspect of software architecture
Key Features
- Understand the fundamentals of software architecture and build production-grade applications in Java
- Make smart architectural decisions with comprehensive coverage of various architectural approaches from SOA to microservices
- Gain an in-depth understanding of deployment considerations with cloud and CI/CD pipelines
Book Description
Well-written software architecture is the core of an efficient and scalable enterprise application. Java, the most widespread technology in current enterprises, provides complete toolkits to support the implementation of a well-designed architecture.
This book starts with the fundamentals of architecture and takes you through the basic components of application architecture. You'll cover the different types of software architectural patterns and application integration patterns and learn about their most widespread implementation in Java. You'll then explore cloud-native architectures and best practices for enhancing existing applications to better suit a cloud-enabled world. Later, the book highlights some cross-cutting concerns and the importance of monitoring and tracing for planning the evolution of the software, foreseeing predictable maintenance, and troubleshooting. The book concludes with an analysis of the current status of software architectures in Java programming and offers insights into transforming your architecture to reduce technical debt.
By the end of this software architecture book, you'll have acquired some of the most valuable and in-demand software architect skills to progress in your career.
What you will learn
- Understand the importance of requirements engineering, including functional versus non-functional requirements
- Explore design techniques such as domain-driven design, test-driven development (TDD), and behavior-driven development
- Discover the mantras of selecting the right architectural patterns for modern applications
- Explore different integration patterns
- Enhance existing applications with essential cloud-native patterns and recommended practices
- Address cross-cutting considerations in enterprise applications regardless of architectural choices and application type
Who this book is for
This book is for Java software engineers who want to become software architects and learn everything a modern software architect needs to know. The book is also for software architects, technical leaders, vice presidents of software engineering, and CTOs looking to extend their knowledge and stay up to date with the latest developments in the field of software architecture.
Table of contents
- Hands-On Software Architecture with Java
- Contributors
- About the author
- About the reviewer
- Preface
- Section 1: Fundamentals of Software Architectures
-
Chapter 1: Designing Software Architectures in Java – Methods and Styles
- The importance of software architecture
- Different types of architecture design – from doodling on paper to more accurate modeling
- Other kinds of architectural diagrams
- The changing role of Java in cloud-native applications
- Case studies and examples
- Software components diagram
- Summary
- Further reading
-
Chapter 2: Software Requirements – Collecting, Documenting, Managing
- Introducing requirements engineering
- Discovering and collecting requirements
- Analyzing requirements
- Specifying requirements according to the IEEE standard
- Collecting requirements – formats and tools
- Validating requirements
- Case studies and examples
- Event Storming for peer-to-peer payments
- Summary
- Further reading
- Chapter 3: Common Architecture Design Techniques
- Chapter 4: Best Practices for Design and Development
- Chapter 5: Exploring the Most Common Development Models
- Section 2: Software Architecture Patterns
- Chapter 6: Exploring Essential Java Architectural Patterns
- Chapter 7: Exploring Middleware and Frameworks
-
Chapter 8: Designing Application Integration and Business Automation
- Integration – point-to-point versus centralized
- Digging into enterprise integration patterns
- Exploring formats
- Exploring communication protocols
- Introducing data integration
- Completing the picture with business automation
- Integration versus automation – where to draw the line
- Case studies and examples
- Summary
- Further reading
-
Chapter 9: Designing Cloud-Native Architectures
- Why create cloud-native applications?
- Learning about types of cloud service models
- Defining twelve-factor applications
- Well-known issues in the cloud-native world
- Adopting microservices and evolving existing applications
- Going beyond microservices
- Refactoring apps as microservices and serverless
- Summary
- Further reading
-
Chapter 10: Implementing User Interaction
- User interface architecture – backend versus frontend
- Web user interface using Jakarta Server Pages and Jakarta Server Faces
- Introducing single-page applications
- Learning about mobile application development
- Exploring IVR, chatbots, and voice assistants
- Omnichannel strategy in enterprise applications
- Summary
- Further reading
- Chapter 11: Dealing with Data
- Section 3: Architectural Context
- Chapter 12: Cross-Cutting Concerns
- Chapter 13: Exploring the Software Life Cycle
- Chapter 14: Monitoring and Tracing Techniques
- Chapter 15: What's New in Java?
- Other Books You May Enjoy
Product information
- Title: Hands-On Software Architecture with Java
- Author(s):
- Release date: March 2022
- Publisher(s): Packt Publishing
- ISBN: 9781800207301
You might also like
book
Scalable Data Architecture with Java
Orchestrate data architecting solutions using Java and related technologies to evaluate, recommend and present the most …
book
Modern Java in Action
Manning's bestselling Java 8 book has been revised for Java 9 and 10! In Modern Java …
book
Designing Hexagonal Architecture with Java
A practical guide for software architects and Java developers to build cloud-native hexagonal applications using Java …
book
A Functional Approach to Java
Java developers usually tackle the complexity of software development through object-oriented programming (OOP). But not every …