Related Topics: Java Developer Magazine

Java Developer : Article

Enterprise Java- the Need for Java Servers

Enterprise Java- the Need for Java Servers

Java has gained a considerable amount of attention and excitement in the software development and information technology communities during the last year, driven by its promise to fundamentally transform and simplify the way in which we develop and deploy applications. Software developers are attracted by Java's simplicity, power and productivity as a programming language. Java is safe; it is object-oriented while much simpler than C++ and it has a component model - JavaBeansª - that facilitates application assembly and visual development. Chief Information Officers are attracted by Java's ability to make good on the promise of the Internet and Intranets - to allow companies to reach a very wide audience with their products and services while leveraging a radically lower cost and more flexible deployment infrastructure.

This value proposition is so compelling that many large companies are already beginning to re-architect their business-critical applications in Java. To accelerate this process and enhance Java's appeal for business applications, client-side Java interfaces and tools need to be complemented by highly productive, scalable, reliable and performant Java servers.

To improve productivity, Java servers must allow application developers to easily and transparently design, implement and deploy multi-tier applications defining their user interface as Java applets or Beans, their application logic using a high level component model like Enterprise JavaBeans and accessing data through standard interfaces such as JDBC and JSQL. Java servers must provide a simple programming model by which application programmers can write data-intensive middle-tier business object logic scaling to many thousands of concurrent users. To accomplish this, Java servers must provide first-class object memory abstractions with specializations including atomic commit and rollback of initial state, transactional sharing of state between concurrently executing sessions without requiring extremely tedious and error-prone multi-programming and location transparency across threads, processes, hosts or temporal boundaries allowing applications to be partitioned and distributed easily.

To scale to support many thousands of concurrent users, Java servers must be very efficient in their resource usage. For example, while providing each Java session with the illusion of state independence Java servers need to share all immutable state (internal metadata, code vectors, string pools, etc.) greatly improving scalability, without requiring low level multiprogramming of Java threads. Java servers must share the pre-initialized state from which an object memory is started, further reducing session-specific memory usage without requiring explicit user intervention. Finally, Java servers must also support transparent connection multiplexing and connection pooling to scale on platforms with physical endpoint limitations.

To support highly data-intensive middle-tier logic, Java servers must be tightly integrated with underlying relational data stores, providing specialized JSQL and JDBC implementations. In the limiting case, Java servers will simply be embedded directly within the physical address space of the database server itself, completely eliminating the latency and overhead of inter-process communication between the middle and data tiers while maintaining the flexibility of the three tier model.

Of course, Java servers must present a standard API by which Java programmers may easily and naturally specify and develop distributed object implementations as large-scale Java components ("beans"). These components must be free from the low-level details associated with contemporary distributed object computing models. In addition to improving programmer productivity, a high level, Java-based, enterprise computing abstraction will allow such components to be automatically "published" (in a bi-directional sense) to a variety of underlying communications infrastructures, leveraging their services and development tools. Rather than force Java developers to "roll-their-own" scalable distributed computing infrastructures, Java servers will host enterprise-oriented Java components, providing scalable services such as efficient, conversational, re-startable state, distributed transactions and high-performance access to shared relational data.

Enterprise Java servers that deliver these solution elements and integrate well with Java tools will deliver on Java's promise of a simpler, lower cost and ubiquitous computing model. This new model will obviate much of today's debate about the benefits of two-tier, three-tier and n-tier computing architectures.

More Stories By Thomas Kurian

Thomas Kurian is director of Internet computing at Oracle Corporation and is responsible for
formulating Oracle's database strategy in the Internet and e-commerce marketplaces. Prior to Oracle, Thomas worked at McKinsey and Company, an international consulting firm.

More Stories By Dave Rosenberg

Dave Rosenberg is senior director, Java products group, Oracle Corporation, and heads the
development team responsible for the Java VM in Oracle8i. Prior to Oracle, Dave led efforts to build object-oriented databases at Object Design Inc. and knowledge management systems at ISX Corporation.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.