Uh-oh, it looks like your Internet Explorer is out of date.

For a better shopping experience, please upgrade now.

Effective Enterprise Java (Effective Software Development Series)
  • Alternative view 1 of Effective Enterprise Java (Effective Software Development Series)
  • Alternative view 2 of Effective Enterprise Java (Effective Software Development Series)

Effective Enterprise Java (Effective Software Development Series)

4.6 3
by Ted Neward, Dion Almaer

ISBN-10: 0321130006

ISBN-13: 9780321130006

Pub. Date: 09/09/2004

Publisher: Addison-Wesley

"With this book, Ted Neward helps you make the leap from being a good Java enterprise developer to a great developer!"
—John Crupi, Sun Distinguished Engineer coauthor, Core J2EE Patterns

If you want to build better Java enterprise applications and work more efficiently, look no further. Inside, you will find an accessible guide to the nuances


"With this book, Ted Neward helps you make the leap from being a good Java enterprise developer to a great developer!"
—John Crupi, Sun Distinguished Engineer coauthor, Core J2EE Patterns

If you want to build better Java enterprise applications and work more efficiently, look no further. Inside, you will find an accessible guide to the nuances of Java 2 Platform, Enterprise Edition (J2EE) development. Learn how to:

  • Use in-process or local storage to avoid the network, see item 44
  • Set lower isolation levels for better transactional throughput, see item 35
  • Use Web services for open integration, see item 22
  • Consider your lookup carefully, see item 16
  • Pre-generate content to minimize processing, see item 55
  • Utilize role-based authorization, see item 63
  • Be robust in the face of failure, see item 7
  • Employ independent JREs for side-by-side versioning, see item 69

Ted Neward provides you with 75 easily digestible tips that will help you master J2EE development on a systemic and architectural level. His panoramic look at the good, the bad, and the ugly aspects of J2EE development will address your most pressing concerns. Learn how to design your enterprise systems so they adapt to future demands. Improve the efficiency of your code without compromising its correctness. Discover how to implement sophisticated functionality that is not directly supported by the language or platform. After reading Effective Enterprise Java , you will know how to design and implement better, more scalable enterprise-scope Java software systems.

Product Details

Publication date:
Effective Software Development Series
Edition description:
New Edition
Product dimensions:
7.00(w) x 8.90(h) x 1.10(d)

Table of Contents



L ist of Abbreviations.

Chapter 1. Introduction.

The goals of J2EE.
Middleware and J2EE.
J2EE implementation.
The ten fallacies of enterprise computing.

Chapter 2. Architecture.

Item 1: Prefer components as the key element of development, deployment, and reuse.
Item 2: Prefer loose coupling across component boundaries.
Item 3: Differentiate layers from tiers.
Item 4: Keep data and processors close together.
Item 5: Remember that identity breeds contention.
Item 6: Use hook points to inject optimizations, customizations, or new functionality.
Item 7: Be robust in the face of failure.
Item 8: Define your performance and scalability goals.
Item 9: Restrict EJB to transactional processing.
Item 10: Never optimize without profiling first.
Item 11: Recognize the cost of vendor neutrality.
Item 12: Build in monitoring support.
Item 13: Build in administration support.
Item 14: Make deployment as simple as possible.

Chapter 3. Communication.

Item 15: Understand all your communications options.
Item 16: Consider your lookup carefully.
Item 17: Recognize the cost of network access.
Item 18: Prefer context-complete communication styles.
Item 19: Prefer data-driven communication over behavior-driven communication.
Item 20: Avoid waiting for remote service requests to respond.
Item 21: Consider partitioning components to avoid excessive load on any one machine.
Item 22: Consider using Web Services for open integration.
Item 23: Pass data in bulk.
Item 24: Consider rolling your own communication proxies.

Chapter 4. Processing.

Item 25: Keep it simple.
Item 26: Prefer rules engines for complex state evaluation and execution.
Item 27: Prefer transactional processing for implicitly nonatomic failure scenarios.
Item 28: Differentiate user transactions from system transactions.
Item 29: Minimize lock windows.
Item 30: Never cede control outside your component while holding locks.
Item 31: Understand EJB transactional affinity.
Item 32: Prefer local transactions to distributed ones.
Item 33: Consider using optimistic concurrency for better scalability.
Item 34: Consider using pessimistic concurrency for explicit concurrency control.
Item 35: Consider lower isolation levels for better transactional throughput.
Item 36: Use savepoints to keep partial work in the face of rollback.
Item 37: Replicate resources when possible to avoid lock regions.
Item 38: Favor the immutable, for it needs no locks.

Chapter 5. State Management.

Item 39: Use HttpSession sparingly.
Item 40: Use objects-first persistence to preserve your domain model.
Item 41: Use relational-first persistence to expose the power of the relational model.
Item 42: Use procedural-first persistence to create an encapsulation layer.
Item 43: Recognize the object-hierarchical impedance mismatch.
Item 44: Use in-process or local storage to avoid the network.
Item 45: Never assume you own the data or the database.
Item 46: Lazy-load infrequently used data.
Item 47: Eager-load frequently used data.
Item 48: Batch SQL work to avoid round-trips.
Item 49: Know your JDBC provider.
Item 50: Tune your SQL.

Chapter 6. Presentation.

Item 51: Consider rich-client UI technologies.
Dynamic HTML.
Macromedia Flash.
The UrlClassLoader class.
JNLP and Java Web Start. Item 52: Keep HTML minimal.
Item 53: Separate presentation from processing.
Item 54: Keep style separate from content.
Item 55: Pregenerate content to minimize processing.
Item 56: Validate early, validate everything.

Chapter 7. Security.

Item 57: Security is a process, not a product.
Item 58: Remember that security is not just prevention.
Item 59: Establish a threat model.
Item 60: Assume insecurity.
Item 61: Always validate user input.
Item 62: Turn on platform security.
Item 63: Use role-based authorization.
Item 64: Use SignedObject to provide integrity of Serialized objects.
Item 65: Use SealedObject to provide confidentiality of Serializable objects.
Item 66: Use GuardedObject to provide access control on objects.

Chapter 8. System.

Item 67: Aggressively release resources.
Item 68: Tune the JVM.
Item 69: Use independent JREs for side-by-side versioning.
Item 70: Recognize ClassLoader boundaries.
Versioning. Item 71: Understand Java Object Serialization.
The serialVerUID field.
Customization (writeObject and readObject).
Replacement (writeReplace and readResolve).
Further Details 415Item 72: Don't fight the garbage collector.
Item 73: Prefer container-managed resource management.
Item 74: Use reference objects to augment garbage collection behavior.
SoftReference objects.
WeakReference objects.
PhantomReference objects. Item 75: Don't be afraid of JNI code on the server.



Customer Reviews

Average Review:

Post to your social network


Most Helpful Customer Reviews

See all customer reviews

Effective Enterprise Java (Effective Software Development Series) 4.7 out of 5 based on 0 ratings. 3 reviews.
Anonymous More than 1 year ago
Guest More than 1 year ago
This is an amazing book that does not disappoint in any way. It is full of wonderful well-written content. The book is organized as a series of 75 essays, each running from 1 to 10 pages. Each essay gives advice on what to do or not do in an enterprise Java application. Since I¿m not a fan of Enterprise JavaBeans, before I received the book I was worried that the ¿enterprise¿ in the title might mean the book was focused on concerns of EJB developers. That isn¿t the case at all and the vast majority of the book is absolutely applicable if you avoid EJB in favor of lighter-weight frameworks such as Sping. Recently I was working with a team whose application was running out of memory and causing their application server to crash, sometimes in as little as an hour. With the help of this book¿s sections on the garbage collector they were able to identify and resolve the problems within a day, which was much shorter than everyone had expected. This book is a wonderful successor to Scott Meyers¿ ¿Effective C++¿ and I recommend it highly.
Guest More than 1 year ago
Neward writes at an engagingly sophisticated level about many problems that arise when using J2EE. He offers 75 'items'. (O'Reilly publisher would probably call these 'hacks'.) Unusually for a computer book these days, there does not appear to be a single diagram. Just pages of text, interspersed with an occasional code snippet. But not dry. He leavens it with a low key wit. A lot of items relate to having EJBs in your system, and the scalability and redundancy issues that arise when you want to improve one or both. Another topic given careful study is security. He shows the danger of blithely accepting client side input from an HTML form, without filtering it on the server side. This has to be done, even if you have written the equivalent filters for your client code. Because on the physical client machine, you must assume that all your client side tests can be circumvented. A simple example is given of how a cracker can try to break into your server's SQL database, by injecting SQL code into input text fields. In general, and not just for input from HTML forms, he suggests making a Java class, 'TaintedString', that has filters which can validate a suspect input string. You might give this idea some consideration. In general, the book is at a level of complexity that may hit the right chords, if you are struggling with J2EE design issues.