Overview

This is a general introduction to version 2.3 of Enhydra and the Enhydra run-time and development environments. It is intended as a semi-technical overview for those looking for a quick ramp-up regarding what Enhydra is all about.


Click on image for screenshots
For a visual survey of Enhydra screens, be sure to visit the screen shot page as you read this overview.

This introduction does not address Enhydra Enterprise, the J2EE platform, today. Stay tuned. For an early overview of Enhydra Enterprise, see Gerard Vandome of BullSoft's slide presentation. Enhydra 3.0 Alpha is also not addressed here. 3.0 includes servlet 2.2 and JSP 1.1 support, as well as the new Enhydra Director for clustering and session affinity support of multiple Enhydra servers.

For Java developers looking for a more technically satisfying discussion of Enhydra, please see the page For Engineers Only and Enhydra Application Architecture, which dives into Enhydra from the point of view of "what is an Enhydra application?"

The Enhydra Design &
Development Philosophy
     

  • Define Enhydra with real world requirements
  • Integration and Innovation
    • Incorporate Sun Java specifications
    • Incorporate w3c.org specifications
    • Leverage other Open Source efforts
    • Innovate where shortcomings/needs exist
  • Support for best-of-breed tools
    • Developers and designers have personal preferences
  • Rapid development environment
    • Predefined source code & build organization
    • Start from pre-built application

The Enhydra Java/XML Application Server      

Once compiled, the Enhydra application server serves applications through standard Web servers, such as Apache or Netscape. Enhydra is also capable of acting as a Web server, handling HTTP requests directly from browsers. Click on the image below to view a general layout of Enhydra, including its support for 3 tier application architecture and toolset.

Designed by consultants to balance the need for flexibility and rapid development, its run-time modules and tools include:

  • Enhydra Application Framework - Super-servlet run-time environment of common services (session, presentation, database connectivity) for supporting N-tier Enhydra applications.
  • Enhydra Multiserver - a servlet running environment with embedded servlet management, monitoring and debugging.
  • Enhydra XMLC - XML Compiler designed to support vastly improved designer/developer co-development and create true separation between the presentation and business layers.
  • Enhydra JDDI - a structured approach to using embedded Java for dynamic HTML.
  • Enhydra DODS - a graphical tool for Object-to-relational database mapping and vise-versa.
  • Enhydra App Wizard - "newapp" is a quick and automatic way to build a new project tree, automatically creating presentation, business and data sub-directories as well as a completely up and running base application.
  • Enhydra Director - Director is a new module that extends web servers with functionality that support clustering and failover of multiple Enhydra servers. Session affinity is supported at the software level. Director appears in Enhydra 3.0, currently in beta release (8Mar2000).
  • and various servlets to support debugging, monitoring, Web server & CGI functionality.

Enhydra Enterprise: Open Source J2EE      

Enhydra Enterprise is an Open Source EJB/CORBA platform supporting the J2EE Sun definition. Features include

  • EJB Server (Jonas Project)
  • CORBA ORBA (Jonathan Project)
  • JTS (Jonas Project)
  • JNDI
  • JMX/SNMP

Jonas is sponsored by BullSoft, Jonathan is sponsored by France Telecom. Enterprise Enhydra will be available in early release alpha form early April 2000. Final release is targeted for late Summer 2000.

Genesis      

Java application servers are taking Internet application development beyond traditional CGI programming. Requirements for scalable, manageable and maintainable N-tier client/server applications demand the use of application servers. Enhydra and commercial Java application servers offer development tools and common object services capable of supporting rapid development by teams of interface designers and software engineers.

In development for nearly two years, Enhydra is the basis for a number of Internet applications deployed in mission-critical commercial environments. Its genesis is the direct result of requirements from managers, developers and architects of corporate IT, product companies, dot com's and Web hosting service providers.

Enhydra was developed as a tool to be used by engineers and user interface designers in medium- to-large scale engagements to build Web applications for corporate IT and Internet technology product companies. The goal: Get Web application development up and running as quickly as possible, avoiding re-inventing the wheel with every customer. Enhydra addresses everything from source code layout to co-development by designers and engineers to post deployment application management.

The Enhydra application Framework was designed to accommodate the widest range of application requirements, yet support rapid development within engineering and user interface design teams using best-of-breed development and design tools. Perhaps the best description might be that it was designed to support "adaptable architectures."

All Java for Platform Independence     

The Enhydra Java/XML Application Server and the applications it supports are written entirely in Java. The result is an application server that can run on any operating system that supports the Java Virtual Machine. This feature is essential, for example, for consultants who want to support a large customer base without having to maintain a huge stable of test environments and platform-specific code bases.

Enhydra runs on all operating systems supported by JVM 1.1.5 or later. Because the entire distribution is written in Java, the only platform-specific topics deal with installation issues.

Licensing     

The entire Enhydra source code distribution is under a FreeBSD-style license. Boiled down, it simply means that you can do virtually anything with the Enhydra source code as long as its standard copyright header is maintained intact at the top of each source file.

Beginning with Enhydra 3.0, the Mozilla-style license, EPL, will be adopted for all Enhydra Enterprise Open Source technologies, including

Enhydra Java Application Server      

Enhydra is designed from the ground up as an object-oriented, component-based Java application server in order to support high level application development, flexible designs capable of supporting a wide array of requirements and deployment configurations suited to the demands of user and operation load.

Designed for Multi-Tier, Adaptable Application Architectures      

The Enhydra Java Application Server supports multi-tier (presentation, business logic and data store) design and implementation that can be distributed across the network for load balancing or for incorporating existing business objects. This configuration can be done as an all-servlet architecture or used in conjuction with an Enterprise JavaBean server for larger mission critical deployments.

The Enhydra Java Application Server is functionally complete as a general purpose application server. But, when the need arises, new components can be added, or existing components can be swapped out and replaced with customer-specific functionality, such as building access control around a proprietary, legacy interface.

The three major portions of the Enhydra Java Application Server are:

Enhydra Application Framework    

The Enhydra Application Framework is an architecture for everything from how your application source is laid out to a series of object services that simplify common programming chores. It handles the connections between URLs and Java classes for you. It lets your application share session state/date across multiple URLs. Authentication services, or any other task, can be put in one location and guarantee that it affects all other pages in your application. The Framework turns your application servlet into a super-servlet. Instead of one URL, your application can can have many Web pages wrapped up into one servlet.

Error handling is made much simpler. Default error handling turns exceptions into HTML stack dumps. Error handlers can be made global or associated with specific directories in the application's hierarchy of pages.

Presentation Management      

The presentation server supports the ability to execute pre-compiled presentation objects of combined Java, JavaScript and HTML. Robust applications are made possible by the automatic handling of errors and exceptions. Full application functionality is maintained, independent of the user's decision to allow or disallow cookies.

Support for Building Business Logic      

Robust, configurable session management provides data persistence within sessions and between sessions. Applications can be made persistent with file system or database connectivity.

User Session Management      

The Enhydra Java Application Server comes with comprehensive user session management, providing user authentication and in-session persistence. As with all Enhydra common services, the developer has the option of using the session management object, extending it or simply replacing it.

Data Connectivity Management      

Enhydra database connection management supports higher performance by supporting caching of connections. Database connectivity and access is provided via JDBC, rapidly becoming a standard feature of well-known database products.

File Server Servlet     

The Enhydra file server servlet is a simple servlet that provide the very basic resource serving ability of a web server. When using the Enhydra multiserver to host your applications or servlets, the file server servlet can be added to serve up static HTML pages. If you are using a true web server, then the use of this servlet will not be necessary since the web server should be used to server up content. The file server servlet can server up any file within the configured Document Root. In can also be configured to display directory contents. It does not perform any caching of the resource.

CGI Servlet     

The Enhydra CGI servlet can be used to give the Enhydra Multisever the ability to launch CGI programs in the same way a web server would. It is not necessary when running Enhydra applications under a web server but can be configured to execute CGI programs in a configured directory.

Enhydra Multiserver     

The second major, though optional, component of the Enhydra Java Application Server is Enhydra Multiserver. When configured with the Enhydra Application Framework, it allows for Web server- free execution, as well as an enhanced set of features particularly well-suited for rapid development. The Multiserver is a servlet running environment which can "listen" on a http port or via RMI, WAI or cgi-dispatcher interfaces. The Multiserver efficiently pools and services requests.

Management Console      

A graphical administration console gives the administrators and developers the ability to log application behavior, add and remove applications and manipulate individual application attributes. Applications can be assigned connectivity methods as described below. See the screen shots.

Connectivity Options      

The same Enhydra Java Application Server can run multiple applications in parallel by using the Enhydra Multiserver to register with multiple Web server interfaces or with no Web server at all. Since the Enhydra Application Framework is a super-servlet, it can also be registered with, for instance, through the Jserv servlet runner of the Apache Web server, a process documented elsewhere in this Web site. This flexibility option in order to address scalability, sufficient load balancing and platform independence. WAI support Distributed servlets support CORBA-based Web server connectivity over IIOP (Internet Inter-ORB Protocol). RMI support RMI-based Web server connectivity is also supported.

When a configuration requiring that Web server and Enhydra Java Application Server run on physically separate operating systems, the following connectivity strategies are supported:.

HTTP HTTP traffic can be directed to Enhydra through a standard Web server or directly to the Enydra MutliServer.
WAI For to a Netscape Web server, the Enhydra Multiserver servlet runner supports the WAI API (CORBA over IIOP) exclusive to Netscape Web servers.
CGI Enhydra provides a simple C-based "dispatcher" program that connects the Enhydra Multiserver to any Web server to provide a servlet running environment with embedded servlet management and debugging.
RMI Remote servlet that tunnels requests via RMI to the Multiserver

Where high-performance, low latency is a concern, the Enhydra Java Application Server can be configured on the same server as the Web server using a non-distributed servlet connection.

 

Enhydra Development Environment      

The Enhydra Java Application Server provides a clean, consistent, pre-structured server development environment. Ready-to-run makefiles and an industrial-strength client/server source revision management system are designed to reduce wasted effort in starting any consulting project.

Object-Oriented Development For Adaptive Solutions

The Enhydra Java Application Server supports a 100% object-oriented environment from presentation to database connectivity. OO design is used to insulate the developer, for example, from the need to perform tricky threads-based development when using servlets.

Enhydra XMLC Compiler     

Enhydra XMLC is a technology created to address the limitations represented by other popular presentation technologies, such as JavaServer Pages, JSP, and Enhydra JDDI, that are used to link application logic with the presentation layer.

  1. HTML designers must become "technical" in order to learn how to work with structured languages that are embedded in their HTML source files,
  2. the relationship between the HTML designer and the developer (of the application logic) is entirely too interdependent, thus retarding the efficiencies of parallel development,
  3. many HTML editor tools are not able to process the introduction of non-HTML compliant tags, and the
  4. embedded language approach makes it impossible for designers to use the same HTML source enhanced with mocked-up data (e.g., for review purposes).

Enhydra XMLC is a compiler that views HTML files as XML documents, converting them into a hierarchical view of Java classes. Methods that manipulate the contents of the HTML document are automatically created for the Java developer. The only "glue" or handshake required between the HTML interface designer and the Java engineer is the agreement on the HTML ID attributes to be used that identify areas of dynamic content.

HTML elements that are to be manipulated are identified using an ID attribute. For all elements with an ID attribute, Enhydra XMLC generates an access method for the tag, named in the form getElementIdName. For example:
    <TABLE ID=fred>
generates:
    public HTMLTable getElementFred();
To identify a text string within a larger text block or independent of other tags, use <SPAN>:
     <P>Welcome customer <SPAN id=name>John      Doe</SPAN>

Enhydra JDDI Compiler     

The Enhydra JDDI compiler provides developers and Web interface builders with the ability to construct highly maintainable dynamic HTML presentation objects of integrated HTML and server-side Java. Sections of embedded Java HTML and Java functionality are integrated via easy-to-maintain "sections".

Sections make it easy to separate Java areas from the more static HTML sections. This approach to UI design gives HTML designers the ability to access to dynamic data generated by Java sections without accidentally corrupting Java code. This becomes an important issue when Java developers are not available to work shoulder-to-shoulder with user interface designers.

Access to dynamic data and decoded CGI parameters is provided to both HTML and Java through Enhydra JDDI Fields. Compiled with the Enhydra JDDI compiler into Java classes, applications can be shipped as convenient, high performance jar files.

Enhydra Servlet Debugger and Monitor    

Enhydra includes a debugger servlet which can be included in any servlet environment, such as Apache's Jserv, for creating diagnostic and debug information during development. It also includes a monitor servlet that can display real-time graphs showing load and response time. See the screen shots.

Enhydra DODS     

DODS is an graphical (using JFC) object-oriented design tool that generates the data objects-to-relation database code most developers would rather not write the old-fashioned way (i.e., by hand). DODS allows you to design the data-layer classes for an application that will utilize the Enhydra Application Framework. DODS then generates and compiles the resultant Java source code. See the screen shots.

Development with the Enhydra Multiserver     

The Enhydra Multiserver is an excellent environment for development purposes. There are a number of reasons why. One is that you can quickly get an application up and running on your Winodws laptop, without the need of a Web server, while flying across the country to a demo your application too. Secondly, the Enhydra Multiserver supports enhanced management and debug console for bulletproofing your application before migrating it to the larger test environment where, perhaps the Enhydra Java Application Server is being served by an Apache Web server.

Source Control and Layout      

Going beyond software development components, the Enhydra Java Application Server Development Environment also features a pre-defined layout of source code and associated objects to facilitate the organization of the Enhydra application source code components, the consultant's components and the consultant's customers components. The well-known CVS source code control mechanism is a standard feature of the Enhydra Java Application Server DE.

Application Wizard     

The application wizard is designed to quickly bootstrap the application development process. The application wizard creates a new source tree for a simple Enhydra Web application. When executed, it asks for the name of the application for which the application environment is to be instantiated. For teaching purposes, he Wizard application is also an excellent example itself of an Enhydra application. See the screen shots.

Enhydra JDDI: Server-side Java for Dynamic HTML      

The Enhydra Java Application Server is designed to maximize the advantages of using Java as a scalable systems programming language. As an architecture supporting server-side Java, long-term maintenance, debugging and platform independence become standard features of the Enhydra Java Application Server.

Enhydra JDDI is designed to support the peaceful co-existence of two two very different languages: HTML and Java, and their authors, generally userinterface designers and Java developers, respectively. As an integrated portion of the Presentation Manager in the Enhydra Application Framework, Enhydra JDDI development offers the following features and advantages.

Sections for Design and Reduced Errors      

The Enhydra JDDI syntax allows for both the tight integration of the dynamic Java with HTML or the more modular separation of the HTML template and libraries of Java methods into separate files. Enhydra JDDI Sections support the ability to easily separate dynamic HTML-generating Java code from static HTML portions of an HTML file. Support for sections, combined with support for run-time "includes" of other HTML files, helps to reduce the potential for errors created during development or maintenance by designers and/or engineers.

Why Java?      

Hands-on experience has made it clear to many developers of Internet applications that Java's best role is on the server. Why?

  • Improvements over C++, such as elimination of #include files, make group development easier to organize and coordinate.
  • Java semantics reduce amount of bugs introduced during development. When compiled, it tends to work as well.
  • Component testing is greatly simplified by the ability to insert main()'s in individual Java classes.
  • Perhaps most obvious, using Java as an alternative to CGI/Perl scripting greatly expands the scalability, maintainability and evolution of Internet applications.
  • Java is becoming the new de facto language for training in OOP. Easier to recruit Java engineers. Engineers view Java as a key ingredient for future career advancement.

Introduction

Enhydra Application Framework

Enhydra Multiserver

Enhydra Development Environment

Random Notes