Enterprise computing has a reputation for complexity and, for the uninitiated, is often shrouded with mystery. Here are some reasons enterprise computing can seem intimidating:
Enterprise computing usually takes place in a heterogeneous network of systems, one in which the computers might range from large mainframes and supercomputers down to PCs, mobile laptops, and even handheld devices. The computers were purchased at different times from a variety of different vendors and run two, three, or more different operating systems.
A variety of server applications run on top of the heterogeneous hardware. An enterprise might support application servers from three different companies, each of which covers a different functional subset of the enterprise and each of which includes different, incompatible interfaces and extensions.
Enterprise computing involves the use of many different protocols and standards. Some standards overlap in small or significant ways. Many have been extended in various vendor-specific, nonstandard ways. Some are quite old and use a vocabulary and terminology that date back to an earlier era of computing. This creates a confusing alphabet soup of acronyms and abbreviations.
Enterprise computing has only recently emerged as an integrated discipline of its own. Although enterprise development models are becoming more cohesive and encompassing, many enterprises are still left with lots of “legacy systems” that are aggregated in an ad hoc way.
Java helps to alleviate these intimidating aspects of enterprise computing. First, since Java is platform-independent, the heterogeneous nature of the network ceases to be an issue. Second, the J2EE framework forms a single, standard layer on top of various proprietary or vendor-enhanced APIs . For example, the Servlet API and the JavaServer Pages API comprise a single, standard, well-defined way to implement web interfaces, regardless of the application server, web server, operating system, or hardware being used. Third, the Java and J2EE frameworks provide an excellent foundation on which you can layer other, nonstandard but compatible tools. Standards can cover only part of the enterprise application landscape, and there will always be valuable utilities developed by the business and developer communities that fall outside of the standards. A standardized framework provides a stable, formally managed backdrop for using these utilities without compromising the portability promises of Java and J2EE. Finally, recall that many enterprise protocols and standards were developed before the days of object-oriented programming. The object-oriented power and elegance of the Java language make the Java Enterprise APIs simpler, easier to use, and easier to understand than the non-Java APIs and protocols upon which they are layered.
Our message to you, and the central tenet of this book, is the following:
Enterprise computing is useful to everyone.
Any programmer can write distributed applications using the Java Enterprise APIs.
With that said, it is important to understand that distributed enterprise computing actually is somewhat more complicated than local computing. Just as using threads in a program introduces complexities that don’t exist in single-threaded programs, using distributed services in a program introduces complexities that don’t exist in programs that run entirely on one computer. And just as developing a rapport with one person is much easier than arriving at a consensus with a crowd, dealing with the vagaries of an entire enterprise is much more challenging than satisfying the needs of a small department in an organization. Do not fear, however: the complexities of distributed, enterprise computing really don’t have to be overwhelming, and with a little study, any programmer can master them.