Few technologies have been hyped as much as Java. Supported by every major Web browser, Java applications can be written once and deployed on virtually every computer on the planet. Today, Java is known as the universal language of the Internet.
Yet until now, Java's reputation has been largely restricted to making Web graphics come alive. However, Java is a secure, object-oriented language and dancing graphics represent just a fraction of its potential. When fully unleashed, the Java language can make fully scalable, n-tier enterprise applications possible because the server-based nature of Java applications makes them far more economical to maintain and upgrade compared to conventional, two-tier client/server applications.
The past year has seen the emergence of dozens of general purpose Java development tools. Featuring the visual development techniques made famous by client/server 4GLs, they allow developers to rapidly generate the visual applications for which Java is best known. A handful of tools is beginning to offer database connectivity and, in some cases, support of future component-based development architectures promoting reuse.
But these general purpose tools have limitations when they are required to scale to accommodate many users. Most first-generation Java tools have failed to support n-tier development and the ability to partition and distribute application logic onto multiple platforms. With large organizations numbering thousands of users, a single server cannot adequately support a heavy number of simultaneous users. Placing all application logic in one place provides the potential for a single point of failure Ð a scenario that is too risky for mission-critical, enterprise applications. N-tier support is necessary if Java applications are to be distributed onto multiple servers, balancing both load and risk.
N-tier architecture support also provides the flexibility necessary to serve the varying needs of end users. Large organizations typically are comprised of thousands of users whose desktop platforms, networking environments and computing needs vary widely. For instance, business analysts who run complex applications on powerful desktop machines may experience better performance if some of the application logic and processing runs locally. At the other end of the spectrum, users such as customer service personnel run a limited number of routine tasks, that are ideally handled within a server-based environment.
Available network bandwidth can also play a factor in how application logic is distributed. In the typical large organization, communications environments range from high-speed LANs to backbones linking headquarters and major divisional offices, while remote branch sites are served by slower connections. In these cases, network traffic levels and performance may determine which portions of an application are placed on which servers or clients.
The bottom line is that application partitioning is absolutely essential if enterprise-scale, mission-critical applications are ever to be written in Java.
Until now, there was no single language or programming environment that could address the needs of every type of user, regardless of network or database connectivity variations. Java is the first language that can run in the heterogeneous computing and networking environments that exist in most large organizations.
Java's reputation has centered on its capabilities for bringing static Web pages to life with animated graphics and interactive capabilities. Yet Java's potential as a natural programming environment for designing enterprise-class, mission-critical applications is only just beginning. Thanks to Java's platform-independence and its ability to operate even in the restricted bandwidth environments of the Internet, Java applications can run virtually anywhere, inside or outside the enterprise. The programs can be divided into miniature "applets" that are deployed at runtime over limited bandwidth networks to clients, or they can be divided and situated on multiple servers Ð or clients Ð for performance and reliability.
Java tools are growing increasingly versatile. In the past year, they have adopted the visual programming methods of popular RAD tools, allowing rapid, incremental development. They are supporting a growing number of visual controls to make Java screens more functional, and beginning to add database connectivity and component support. Thanks to the latest generation of Java tools, such as Progress Software's Apptivity, Java applications can finally be designed with the necessary n-tier support to make them ready for enterprise prime time.
About the Author
Purna Pareek is Vice President of Progress Software's Apptivity Product Unit. He is responsible for managing the product development and product marketing functions of the Apptivity product line. Purna can be reached at [email protected]