本书主要讲述企业Java 2平台(J2EE)关键技术的模式、最佳实践、设计策略和经过验证的解决方案。涉及J2EE包括的15个模式的分类和大量的策略,便于读者更好地掌握Java技术。\r\n\r\n 本书适合J2EE的爱好者、程序员、设计师、开发者和技术管理者参考。\r\n
\r\n
Foreword xv \r\n\r\n Preface xvii \r\n\r\n Acknowledgments xxiv \r\n\r\n PART 1 \r\n\r\n Patterns and J2EE 2 \r\n\r\n CHAPTER 1 \r\n\r\n Introduction 4 \r\n\r\n What Is J2EE? 6 \r\n\r\n What Are Patterns? 7 \r\n\r\n Historical References 7 \r\n\r\n Defining a Pattern 7 \r\n\r\n Categorizing Patterns 9 \r\n\r\n J2EE Pattern Catalog 10 \r\n\r\n Continuous Evolution 10 \r\n\r\n How to Use the J2EE Pattern Catalog 11 \r\n\r\n Benefits of Using Patterns 12 \r\n\r\n Patterns, Frameworks, and Reuse 14 \r\n\r\n Summary 15 \r\n\r\n CHAPTER 2 \r\n\r\n J2EE Platform Overview 16 \r\n\r\n A Brief Perspective 17 \r\n\r\n Application Servers--The New Breed 19 \r\n\r\n Convergence of Java Technologies 19 \r\n\r\n The Rise of the J2EE Platform 20 \r\n\r\n J2EE Value Proposition 21 \r\n\r\n J2EE Platform 22 \r\n\r\n J2EE Architecture 22 \r\n\r\n Java 2 Standard Edition 24 \r\n\r\n J2EE Application Components and Containers 25 \r\n\r\n Standard Services 26 \r\n\r\n J2EE Platform Roles 27 \r\n\r\n Deployment Descriptors 29 \r\n\r\n J2EE Patterns and J2EE Platform 30 \r\n\r\n Summary 31 \r\n\r\n PART 2 \r\n\r\n Design Considerations, Bad Practices, and Refactorings 32 \r\n\r\n CHAPTER 3 \r\n\r\n Presentation Tier Design Considerations and Bad Practices 34 \r\n\r\n Presentation Tier Design Considerations 35 \r\n\r\n Session Management 35 \r\n\r\n Controlling Client Access 38 \r\n\r\n Validation 43 \r\n\r\n Helper Properties--Integrity and Consistency 46 \r\n\r\n Presentation Tier Bad Practices 49 \r\n\r\n Control Code in Multiple Views 49 \r\n\r\n Exposing Presentation-Tier Data Structures to Business Tier 50 \r\n\r\n Exposing Presentation-Tier Data Structures to Domain Objects 5 I \r\n\r\n Allowing Duplicate Form Submissions 51 \r\n\r\n Exposing Sensitive Resources to Direct Client Access 52 \r\n\r\n Assuming Will Reset Bean Properties 52 \r\n\r\n Creating Fat Controllers 53 \r\n\r\n CHAPTER 4 \r\n\r\n Business Tier Design Considerations and Bad Practices 54 \r\n\r\n Business Tier Design Considerations 55 \r\n\r\n Using Session Beans 55 \r\n\r\n Using Entity Beans 59 \r\n\r\n Caching Enterprise Bean Remote References and Handles 62 \r\n\r\n Business and Integration Tiers Bad Practices 63 \r\n\r\n Mapping Object Model Directly to Entity Bean Model 63 \r\n\r\n \r\n\r\n Mapping Relational Model Directly to Entity Bean Model 63 \r\n\r\n Mapping Each Use Case to a Session Bean 64 \r\n\r\n Exposing All Enterprise Bean Attributes via Getter/Setter \r\n\r\n Methods 65 \r\n\r\n Embedding Service Lookup in Clients 65 \r\n\r\n Using Entity Bean as Read-Only Object 66 \r\n\r\n Using Entity Beans as Fine-Grained Objects 67 \r\n\r\n Storing Entire Entity Bean-Dependent Object Graph 68 \r\n\r\n Exposing EJB-related Exceptions to Non-EJB Clients 68 \r\n\r\n Using Entity Bean Finder Methods to Return a Large Results Set 69 \r\n\r\n Client Aggregates Data from Business Components 70 \r\n\r\n Using Enterprise Beans for Long-Uved Transactions 70 \r\n\r\n Stateless Session Bean Reconstructs Conversational State for Each \r\n\r\n Invocation 71 \r\n\r\n CHAPTER 5 \r\n\r\n J2EE Refactorings 72 \r\n\r\n Presentation Tier Refactorings 73 \r\n\r\n Introduce a Controller 74 \r\n\r\n Introduce Synchronizer Token 77 \r\n\r\n Localize Disparate Logic 83 \r\n\r\n Hide Presentation Tier-Specific Details From the Business Tier 91 \r\n\r\n Remove Conversions from View 96 \r\n\r\n Hide Resource From a Client 100 \r\n\r\n Business and Integration Tier Refactorings 104 \r\n\r\n Wrap Entities With Session 104 \r\n\r\n Introduce Business Delegate 106 \r\n\r\n Merge Session Beans 108 \r\n\r\n Eliminate Inter-Entity Bean Communication 110 \r\n\r\n Move Business Logic to Session 112 \r\n\r\n General Refactorings 113 \r\n\r\n Separate Data Access Code 113 \r\n\r\n Refactor Architecture by Tiers 116 \r\n\r\n Use A Connection Pool 119 \r\n\r\n PART 5 \r\n\r\n J2EE Pattern Catalog 122 \r\n\r\n CHAPTER 6 \r\n\r\n J2EE Patterns Overview 124 \r\n\r\n What Is a Pattern? 126 \r\n\r\n Identifying a Pattern 127 \r\n\r\n The Tiered Approach 128 \r\n\r\n J2EE Patterns 130 \r\n\r\n Presentation Tier Patterns 130 \r\n\r\n Business Tier Patterns 131 \r\n\r\n Integration Tier Patterns 132 \r\n\r\n Guide to the Catalog 132 \r\n\r\n Terminology 132 \r\n\r\n Use of UML 137 \r\n\r\n Pattern Template 138 \r\n\r\n J2EE Pattern Relationships 140 \r\n\r\n Relationship to Known Patterns 143 \r\n\r\n Patterns Roaclmap 144 \r\n\r\n Summary 149 \r\n\r\n CHAPTER 7 \r\n\r\n Presentation Tier Patterns 150 \r\n\r\n Intercepting Filter 152 \r\n\r\n Context 152 \r\n\r\n Problem 152 \r\n\r\n Forces 153 \r\n\r\n Solution 153 \r\n\r\n Consequences 170 \r\n\r\n Related Patterns 170 \r\n\r\n Front Controller 172 \r\n\r\n Context 172 \r\n\r\n Problem 172 \r\n\r\n Forces 172 \r\n\r\n Solution 173 \r\n\r\n Consequences 184 \r\n\r\n Related Patterns 185 \r\n\r\n View Helper 186 \r\n\r\n Context 186 \r\n\r\n Problem 186 \r\n\r\n Forces 186 \r\n\r\n Solution 186 \r\n\r\n Consequences 201 \r\n\r\n Related Patterns 202 \r\n\r\n Composite View 203 \r\n\r\n Context 203 \r\n\r\n Problem 203 \r\n\r\n Forces 203 \r\n\r\n Solution 203 \r\n\r\n Consequences 212 \r\n\r\n Sample Code 213 \r\n\r\n Related Patterns 215 \r\n\r\n Service to Worker 216 \r\n\r\n Context 216 \r\n\r\n Problem 216 \r\n\r\n Forces 216 \r\n\r\n Solution 217 \r\n\r\n Consequences 222 \r\n\r\n Sample Code 222 \r\n\r\n Related Patterns 230 \r\n\r\n Dispatcher View 231 \r\n\r\n Context 231 \r\n\r\n Problem 231 \r\n\r\n Forces 231 \r\n\r\n Solution 232 \r\n\r\n Consequences 238 \r\n\r\n Sample Code 239 \r\n\r\n Related Patterns 244 \r\n\r\n CHAPTER 8 \r\n\r\n Business Tier Patterns 246 \r\n\r\n Business Delegate 248 \r\n\r\n Context 248 \r\n\r\n Problem 248 \r\n\r\n Consequences 321 \r\n\r\n Sample Code 323 \r\n\r\n Related Patterns 335 \r\n\r\n Value Object Assembler 339 \r\n\r\n Context 339 \r\n\r\n Problem 339 \r\n\r\n Forces 340 \r\n\r\n Solution 341 \r\n\r\n Consequences 345 \r\n\r\n Sample Code 347 \r\n\r\n Related Patterns 351 \r\n\r\n Value List Handler 353 \r\n\r\n Context 353 \r\n\r\n Problem 353 \r\n\r\n Forces 354 \r\n\r\n Solution 354 \r\n\r\n Consequences 358 \r\n\r\n Sample Code 360 \r\n\r\n Related Patterns 366 \r\n\r\n Service Locator 367 \r\n\r\n Context 367 \r\n\r\n Problem 367 \r\n\r\n Forces 369 \r\n\r\n Solution 369 \r\n\r\n Consequences 379 \r\n\r\n Sample Code 380 \r\n\r\n Related Patterns 385 \r\n\r\n CHAPTER 9 \r\n\r\n Integration Tier Patterns 388 \r\n\r\n Data Access Object 390 \r\n\r\n Context 390 \r\n\r\n Problem 390 \r\n\r\n Forces 391 \r\n\r\n Solution 391 \r\n\r\n Consequences 397 \r\n\r\n Sample Code 399 \r\n\r\n Related Patterns 407 \r\n\r\n Service Activator 408 \r\n\r\n Context 408 \r\n\r\n Problem 408 \r\n\r\n Forces 409 \r\n\r\n Solution 409 \r\n\r\n Consequences 413 \r\n\r\n Sample Code 414 \r\n\r\n Related Patterns 420 \r\n\r\n EPILOGUE \r\n\r\n J2EE Patterns Applied 422 \r\n\r\n PSA Overview 423 \r\n\r\n Use Case Model 424 \r\n\r\n Use Cases, Patterns, and Pattern Frameworks 426 \r\n\r\n Create Project Use Case 426 \r\n\r\n Pattern Identification 426 \r\n\r\n Pattern Realization 428 \r\n\r\n Reserve Resource Use Case 430 \r\n\r\n Pattern Identification 430 \r\n\r\n Pattern Realization 431 \r\n\r\n Find Available Resources Use Case 433 \r\n\r\n Pattern Identification 434 \r\n\r\n Pattern Realization 435 \r\n\r\n Bibliography 439 \r\n\r\n Apache Software License 443 \r\n\r\n Index 445 \r\n
\r\n
程序设计在于处理复杂性:问题的复杂性和所用的程序设计工具的复杂性. Java的魅力在于其本身的低复杂性, 同时又能很好地处理高度复杂的问题. Java程序的开发周期只有类似的C++程序的一半甚至更少, 而且Java可以方便地处理复杂软件问题:多线程. 分布式. 跨平台. 安全性等. Java从诞生到现在, 已经广泛应用于几乎所有类型软件系统的构建. 尤其在基于Web的系统开发中, Java技术具有独特的优势. 熟悉Java历史的人都知道, Java的前身——编程语言Oak就是致力于电子产品互连的语言, Internet的发展导致了Oak的重生和Java的广为流行. 现在, J2EE技术已经成为企业级Web应用系统的标准平台.
好的程序设计人员不仅仅要掌握优秀的编程工具, 更需要掌握优秀的编程思想. 随着面向对象编程技术数十年的发展, 人们开始提炼和总结面向对象编程中行之有效的. 具有一定普遍意义的方法, 即面向对象的设计模式. 以Gamma. Helm. Johnson和Vlissides合著的经典书籍《设计模式》为开端, 面向对象设计模式的研究和应用成为面向对象程序设计的重要内容. 所有结构良好的面向对象软件系统都包含了大量的设计模式, 能否熟练应用设计模式已经成为衡量程序员水平的至关重要的标准.
本丛书收录了与Java程序设计和Java设计模式相关的经典书籍, 反映了应用Java开发软件系统的最佳经验总结和最新动态.
《Java设计模式》采用方便而简洁的编写风格, 以可视化的Java程序为例, 详细介绍了Gamma. Helm. Johnson和Vlissides合著的经典书籍《设计模式》中列出的所有23种模式. 通过本书, Java程序员可以迅速了解和掌握设计模式的内容, 并在实践中应用设计模式来创建复杂而健壮的Java程序.
《Java模式应用》介绍了基于模式的开发技巧, 演示了使用Java开发各种商务系统中的模式应用. 书中首先概述设计模式, 然后就四种主要模式——创建模式. 行为模式. 结构模式和系统模式展开了详细的论述. 该书还针对系统构建过程中常用的J2EE. JSP. EJB和API等技术作了介绍, 适合具有一定编程基础的Java程序员阅读参考.
《J2EE核心模式》是Sun Java Center的资深设计师的J2EE亲身实践经验的总结. 该书主要描述J2EE关键技术(Java Server Pages, Java Servlet, Enterprise Java Beans, Java Message Services等)的模式. 最佳实践. 设计策略和经过验证的解决方案. 该书介绍了J2EE包括的15个模式的分类和大量的策略, 不仅具有理论深度, 而且非常实用. 该书内容适合J2EE的爱好者. 程序员. 设计师. 开发者和技术管理者. 一句话, 该书适合于设计. 构建和开发J2EE平台应用的所有人.
XML是新一代文档的标准, Web页. 数据. 源码等等, 均可以用XML文档表示. 越来越多的程序员正在使用Java来处理XML文档. 《用Java处理XML》详细论述了如何使用Java来读写XML文档. 该书是目前最新和最全的Java处理XML技术的介绍, 包含内容超过1000页的关于SAX, DOM, JDOM, JAXP, TrAX, XPath, XSLT, SOAP等的讲解. 该书适合于使用Java读写XML文档的Java程序员. 其内容从基本概念到高级应用无所不包, 特别适合作为手册随时参考.
在《实时Java》中, 作为RTSJ专家组的成员之一, Dibble从Java平台特有的实时问题概述开始, 依次讲解了RTSJ各项主要特性的使用方法. 从广泛的实时原理到详细的编程隐患, 该书覆盖了构建有效实时程序所需的一切知识. 其主要内容包括:与非实时代码的互操作性. 实时开发中的取舍以及JVM软件的实时问题, 垃圾收集. 无堆栈访问. 物理内存和“不朽”内存以及无堆栈内存的常数时间分配, 优先级调度. 期限调度以及速率单调分析, 闭包. 异步传输控制. 异步事件以及计时器. 这是一本非常实用的指南, 适用于有经验的Java平台开发人员.
《Java数据结构与算法分析》介绍了常见的数据结构, 如链表. 堆栈. 队列. 树和哈希表等, 并对查找和排序进行了算法分析, 给出了相应的Java实现. 该书逻辑结构严谨, 主次分明, 可用作程序员参考书.
总之, 这套书详细介绍了Java应用的许多重要方面: 从具有普遍性的Java数据结构和算法. Java设计模式. Java模式应用. J2EE核心模式, 到日益显著的Java特殊应用领域(Java处理XML文档和Java实时系统开发). 其内容具有一定的理论深度, 更有重要的实际参考价值.
有鉴于此, 特向Java系统开发和应用领域中不同程度的读者推荐这套书, 相信每位有心的读者都能得到物超所值的收获.
清华大学经济管理学院管理科学与工程系 朱涛 博士
讲授课程:Java程序设计, 面向对象的分析设计方法