Have you noticed that simply saying "I am a Java programmer" isn't enough these days? It conveys a little bit of information, but not enough to make any serious decisions. It's kind of like saying, "I play sports" or "I like food." A recruiter can assume that a Java programmer has a passing familiarity with curly braces and semicolons, but little else.
The Java programming language runs on an incredibly diverse set of hardwarefrom cell phones and PDAs down to embedded chips on a credit card; every major desktop and laptop, regardless of operating system or hardware manufacturer; entry-level workgroup servers up to clusters of high-end servers; and even mainframes.
The mantra in the heady early days of Java was, "Write once, run anywhere." The original ideal of having the same application run anywhere from a cell phone to a large-scale cluster of servers turned out to be more marketing hype than business reality, although the "run anywhere" part of the slogan has proven remarkably prescient.
Modern Java developers often define themselves by the hardware they specialize in. J2ME developers eke amazing functionality out of resource-starved micro-devices with limited networking capabilities. J2SE programmers have mastered daunting but robust GUI frameworks such as Swing and SWT for rich desktop application development. And J2EE software engineers are masters of the server-side domain.
Saying that you are a J2EE programmer begins to narrow the field a bit, but our hypothetical recruiter still doesn't have enough information to place you in the proper job. J2EE is a loose collection of server-side technologies that are related, but are by no means homogenous.
Some J2EE experts specialize in web-related technologiesJSPs, Servlets, and the diverse landscape of web frameworks such as Jakarta Struts or Sun's Java Server Faces. Others are back-end specialists that focus more on the transactional integrity and reliability of business processing that uses technologies such as EJBs, JMS, and relational databases. (We'll define these acronyms later in the book.) There is even a new breed of Web Services specialists that use the J2EE product suite and a host of related XML technologies, such as SOAP and WSDL, to offer a Service Oriented Architecture to Java and non-Java clients alike.
Asking any one specialist to describe the J2EE toolkit brings to mind the story of the blind men and the elephant. Each blind man describes the elephant based on the part he touchesthe one holding the trunk describes a very different animal than the one holding the tusk or the ear.
This book attempts to describe the whole elephant in the context of JBoss, an open source J2EE container. Like the technology it implements, JBoss is not a single monolithic application. Rather, it is a family of interrelated services that correspond to each item in the J2EE collection.
Each chapter in this book explores one of the J2EE services, but unlike the blind men, we show how one technology works in conjunction with the others. A J2EE application is often greater than the sum of its parts, and understanding the J2EE collection means understanding how each piece is interrelated.