The performance of Java EE applications is dependent on several factors. As always, the
quality of the application code is paramount, and because they use so many external re-
sources, performance bottlenecks in a application server are often outside of the Java layer.
Within an application server, much of the performance depends on factors that are not unique
to Java EE—notably thread performance, object pools, and networking performance. In an
application server, the most important factor is the amount of data it transmits or pro-
cesses—whether that data is simple HTML, XML payloads, serialized object states, JSON
payloads, or what have you. The practices outlined in this chapter should help you make the
most of the resources available to an application server.