Rights Contact Login For More Details
- Wiley
More About This Title Professional Java EE Design Patterns
- English
English
Master Java EE design pattern implementation to improve your design skills and your application’s architecture
Professional Java EE Design Patterns is the perfect companion for anyone who wants to work more effectively with Java EE, and the only resource that covers both the theory and application of design patterns in solving real-world problems. The authors guide readers through both the fundamental and advanced features of Java EE 7, presenting patterns throughout, and demonstrating how they are used in day-to-day problem solving.
As the most popular programming language in community-driven enterprise software, Java EE provides an API and runtime environment that is a superset of Java SE. Written for the junior and experienced Java EE developer seeking to improve design quality and effectiveness, the book covers areas including:
- Implementation and problem-solving with design patterns
- Connection between existing Java SE design patterns and new Java EE concepts
- Harnessing the power of Java EE in design patterns
- Individually-based focus that fully explores each pattern
- Colorful war-stories showing how patterns were used in the field to solve real-life problems
Unlike most Java EE books that simply offer descriptions or recipes, this book drives home the implementation of the pattern to real problems to ensure that the reader learns how the patterns should be used and to be aware of their pitfalls.
For the programmer looking for a comprehensive guide that is actually useful in the everyday workflow, Professional Java EE Design Patterns is the definitive resource on the market.
- English
English
Murat Yener is an Android geek at Intel working on native and HTML5 mobile apps. He has extensive experience in Java, Web, Java EE and OSGi development. He is an Eclipse Committer, a speaker at major conferences, and a user group leader at GDG Istanbul.
Alex Theedom is a senior developer at Indigo Code Collective (E-scape group) and has wide experience developing Java EE and Spring web applications. He has developed microservice-based architectures, ATM software, and e-learning systems in a diverse range of sectors throughout Europe.
Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.
- English
English
FOREWORD xxiii
INTRODUCTION xxv
PART I: INTRODUCTION TO JAVA EE DESIGN PATTERNS
CHAPTER 1: A BRIEF OVERVIEW OF DESIGN PATTERNS 3
What Is a Design Pattern? 4
How Patterns Were Discovered and Why We Need Them 5
Patterns in the Real World 5
Design Pattern Basics 6
Enterprise Patterns 7
Java to Enterprise Java 7
The Emergence of Enterprise Java Patterns 8
Design Patterns Versus Enterprise Patterns 8
Plain Old Design Patterns Meet Java EE 9
When Patterns Become Anti‐Patterns 10
Summary 10
Notes 10
CHAPTER 2: THE BASICS OF JAVA EE 13
Multitier Architecture 14
The Client Tier 15
The Middle Tier 16
Web Layer 16
Business Layer 16
The EIS Tier 18
Java EE Servers 18
The Java EE Web Profile 18
Core Principles of Java EE 19
Convention over Configuration 19
Context and Dependency Injection 20
Interceptors 21
Summary 22
Exercises 22
PART II: IMPLEMENTING DESIGN PATTERNS IN JAVA EE
CHAPTER 3: FAÇADE PATTERN 25
What Is a Façade? 26
Façade Class Diagram 27
Implementing the Façade Pattern in Plain Code 27
Implementing the Façade Pattern in Java EE 29
Façade with Stateless Beans 29
Façade with Stateful Bean 31
Where and When to Use the Façade Pattern 31
Summary 31
Exercises 32
Notes 32
CHAPTER 4: SINGLETON PATTERN 33
What Is a Singleton? 34
Singleton Class Diagram 34
Implementing the Singleton Pattern in Plain Code 35
Implementing the Singleton Pattern in Java EE 38
Singleton Beans 39
Using Singletons at Startup 39
Determining Startup Order 40
Managing Concurrency 42
Where and When to Use the Singleton Pattern 45
Summary 46
Exercises 46
Notes 47
CHAPTER 5: DEPENDENCY INJECTION AND CDI 49
What Is Dependency Injection? 50
Implementing DI in Plain Code 50
Implementing DI in Java EE 53
The @Named Annotation 54
Context and Dependency Injection (CDI) 55
CDI Versus EJB 56
CDI Beans 56
The @Inject Annotation 57
Contexts and Scope 57
Naming and EL 58
CDI Beans for Backing JSF 58
Qualifi ers 59
Alternatives 59
Stereotypes 60
Other Patterns via CDI 60
Summary 61
Exercises 61
Notes 62
CHAPTER 6: FACTORY PATTERN 63
What Is a Factory? 64
Factory Method 64
Implementing the Factory Method in Plain Code 66
Abstract Factory 68
Implementing the Abstract Factory in Plain Code 69
Implementing the Factory Pattern in Java EE 70
Harness the Power of CDI 76
Where and When to Use the Factory Patterns 80
Summary 80
Exercises 81
Notes 81
CHAPTER 7: DECORATOR PATTERN 83
What Is a Decorator? 84
Decorator Class Diagram 85
Implementing the Decorator Pattern in Plain Code 86
Implementing the Decorator Pattern in Java EE 89
Decorators Without XML Confi guration 94
Where and When to Use the Decorator Pattern 94
Summary 95
Exercises 96
Notes 96
CHAPTER 8: ASPECT‐ORIENTED PROGRAMMING (INTERCEPTORS) 97
What Is Aspect‐Oriented Programming? 98
Implementing AOP in Plain Code 100
Aspects in Java EE, Interceptors 102
Interceptor Life Cycle 105
Default‐Level Interceptors 106
Interceptor Order 107
CDI Interceptors 109
Where and When to Use Interceptors 111
Summary 112
Notes 112
CHAPTER 9: ASYNCHRONOUS 113
What Is Asynchronous Programming? 114
Asynchronous Pattern 114
Implementing Asynchronous Pattern in Plain Code 116
Asynchronous Programming in Java EE 118
Asynchronous Beans 118
Asynchronous Servlets 120
Where and When to Use Asynchronous Programming 124
Summary 125
Exercises 125
Notes 126
CHAPTER 10: TIMER SERVICE 127
What Is the Timer Service? 127
Implementing a Timer in Java EE 130
Automatic Timers 130
Programmatic Timers 131
Timer Expression 134
Transactions 136
Summary 137
Exercises 137
Notes 138
CHAPTER 11: OBSERVER PATTERN 139
What Is an Observer? 139
Description 140
Observer Class Diagram 141
Implementing the Observer Pattern in Plain Code 142
Implementing the Observer Pattern in Java EE 144
Where and When to Use the Observer Pattern 149
Summary 150
Exercises 151
Notes 151
CHAPTER 12: DATA ACCESS PATTERN 153
What Is a Data Access Pattern? 154
Data Access Class Diagram 154
Overview of the Data Access Pattern 155
Data Transfer Object Pattern 155
Java Persistence Architecture API and Object Relational Mapping 156
Implementing the Data Access Pattern in Java EE 157
Type‐Safe DAO Implementation 162
Where and When to Use the Data Access Pattern 163
Summary 163
Exercises 163
Notes 163
CHAPTER 13: RESTFUL WEB SERVICES 165
What Is REST? 166
The Six Constraints of REST 167
Client‐Server 167
Uniform Interface 167
Stateless 168
Cacheable 168
Layered System 168
Code on Demand 168
Richardson Maturity Model of REST API 168
Level 0: The Swamp of POX (Plain Old XML) 169
Level 1: Resources 169
Level 2: HTTP Verbs 169
Level 3: Hypermedia Controls 169
Designing a RESTful API 169
Resource Naming 170
Nouns Not Verbs 170
Self‐Descriptive 170
Plural Not Singular 171
HTTP Methods 171
Get 171
Post 171
Put 172
Delete 172
Rest in Action 172
The users noun 172
The topics noun and the posts noun 173
Implementing REST in Java EE 175
HATEOAS 178
Where and When to Use REST 180
Summary 181
Exercises 181
Notes 182
CHAPTER 14: MODEL VIEW CONTROLLER PATTERN 183
What Is the MVC Design Pattern? 184
MVC Types 185
Implementing the MVC Pattern in Plain Code 186
Implementing the MVC Pattern in Java EE 190
The FacesServlet 190
MVC Using the FacesServlet 190
Where and When to Use the MVC Pattern 193
Summary 193
Exercises 193
Note 193
CHAPTER 15: OTHER PATTERNS IN JAVA EE 195
What Are WebSockets? 195
What Is Message‐Orientated Middleware 198
What Is the Microservice Architecture? 199
Monolithic Architecture 199
Scalability 200
Decomposing into Services 201
Microservice Benefi ts 202
Nothing in Life Is Free 203
Conclusions 204
Finally, Some Anti‐Patterns 204
Uber Class 204
Lasagna Architecture 204
Mr. Colombus 205
Friends with Benefi ts 205
Bleeding Edge 205
Utilityman 206
Notes 206
PART III: SUMMARY
CHAPTER 16: DESIGN PATTERNS: THE GOOD,THE BAD, AND THE UGLY 209
The Good: Patterns for Success 209
The Bad: Over and Misuse of Patterns 211
…and The Ugly 212
Summary 214
Notes 214
INDEX 215