EO Java Development

Home
EO News
EO Clients
EO Products
EO Services
EO Software
EO Careers
EO Contact
 

Executive Order

Defense and
Aerospace Systems
/\ /\ /\
Computer Software
Consultants and
Professional
Software
Development
Services.

Executive Order
Corporation is
the information
technology
company to offer
business solutions
for every point in
the technology
information supply
chain, including
retailers, carriers,
portals, developers
and enterprises.
/\ /\ /\
At Executive
Order we
make a difference
in your business!

1. Executive Order Server-Side Java Development

1.1. Servlets

Although servlets are not strictly a web standard, they are part of JDK2 and are supported by virtually all web servers; hence they have become the de facto open source standard for providing dynamic content using Java.

As with all dynamic content, the idea behind servlets is that HTML content should be generated at runtime by a process running on the server, rather than simply being copied from a static file. This enables the content to change depending on the context of the request, such as the state of a database, the time of day, http request parameters, etc.

Servlets in particular are java objects that extend javax.servlet.http.HttpServlet, and implement methods which return HTML code in response to HTTP requests. These objects are run as threads inside a servlet container (or engine) - which may either be a sub-process of the web server, or a completely independent process. Servlets are similar in concept to CGI processing, but have two key advantages. The first is that they are instantiated as threads, rather than requiring the spawning of a completely new process, which means a big saving in server resources. The second is that data persistence is handled cleanly:

Since http is (nominally) a stateless protocol, a way must be found to store information between requests (such as username, state of shopping basket etc). One solution is to store all persistent information in a database, though this has large overheads. The servlet solution is to make available a number of persistent implicit objects, with get- and set- methods, which can be used for sharing information with other servlets serving the same request or page, other servlets in the same user session, or all servlets within the application.

1.2. Java Server Pages

javalogo52x88.gif (1495 bytes)Not all content is dynamic. Even a page with some dynamic component will contain much that is static. Servlets produce static HTML content via (roughly speaking) a series of out.println statements, but a more attractive solution is to define an html template which includes some java script for dynamic generation. This is the JSP (Java Server Pages) solution (i.e. ADP for Java). Instead of burying fragments of HTML within Java code, as servlets do, JSP buries fragments of Java inside HTML pages, marked by jsp tags.

When a .jsp page is requested it is compiled into a servlet by a process running within the web server servlet container. The compiler parses the template, translating its contents into the equivalent Java source code which, when executed, will generate the output indicated by the original file. Static HTML is translated into Java strings, to be written unmodified into the output stream, and JSP tags are translated into Java code for generating dynamic content. (Nb. the page is only compiled once; subsequent requests invoke the ready-compiled servlet.)

It is often claimed that an advantage of JSP is that it cleanly separates presentation (which is handled by the html template) from data (which is generated from the java fragments). This is not true in practice, since presentation logic tends to be intimately mixed with data. The result is that JSP pages tend to be messy, with no clear division between Java and HTML.

JSP is a compromise, written more to keep ex-ASP programmers happy then for the pure elegance of the solution. Nonetheless it is an intuitive and simple system to learn, is widely supported, and fits neatly into the servlet framework. Because of both of these factors it is destined to be around, and popular, for a while yet.

1.3. JavaBeans

Beans are simple Java classes that adhere to a strict set of naming and design conventions. They do not extend a particular class or implement a specific interface. The basic feature of a bean is that it has a number of properties, which are member variables accessed via get- and set- methods. For example, a Customer bean may have name, role, password, etc, properties accessed via getName, setName, getRole, setRole etc methods. The idea of defining objects in this way is that they then naturally form re-usable components with a very clean and well-defined interface; though it is not clear to what extent this re-use happens in practice. This situation may change as the technology matures. Nonetheless, in the meantime, JSP pages can be made very clear, with clean separation between data and presentation, by inserting references to Beans (with the tag), rather than raw Java.

<jsp:usebean id="myCustomer" class="CustomerBean" scope="session">

If no customerBean yet exists in that session then the container will create one - and it will then persist beyond the life of a single request. The same CustomerBean can then be referenced by all subsequent requests within the session.

It is worth bearing in mind that a JavaBean is purely and simply a Java object that follows a particular very sensible coding convention. This means that everything that you can do with a JavaBean you can equally well do with straight JSP and servlets - the only difference lies in the clarity and scalability of the resulting code.

1.4. Apache and Java

The most significant open-source servlet/JSP development project is Apache's Jakarta. Apache are heavily committed to supporting Java in the future and there are a lot of sub-projects, most of which may well not come to anything, but at the heart of them is the Tomcat servlet container module for the Apache web server. Tomcat is a replacement for JServ, is developed jointly with Sun, and is the reference implementation for both servlets and JSP (it now also supports SSL). Because of this, it is the de facto and de jure server-side Java standard - AOL have promised an implementation for the AOLserver, for example. Two other parts of Jakarta, though less developed than Jserv/Tomcat, are also worth mentioning:

Velocity is a templating/scripting language designed to be a cleaner and simpler alternative to JSP -- basically a more Java'ish version of Webmacro. It's now reached v1.0 and the documentation looks quite thorough. But does the world really need another scripting language?

Struts and Turbine are servlet-based frameworks for building componentized web applications. (A framework, in this context, means a set of cooperating classes that make up a re-usable design for a specific class of software. A framework rigidly dictates the architecture of an application; therefore they can save a lot of effort if they work well, but can be a nightmare if not well-designed.) Turbine and Struts are aiming to build a library of reusable components, but it is not yet clear if either will reach critical mass.

Ant is a tool to ease developing Java web applications within Tomcat - a bit like a souped-up version of Unix' Make. Once you have it set up correctly (which is not a trivial matter) then it can make developing in teams a lot easier. Worth using for big projects.

1.5. Non-Standard Servlet Frameworks

Many organizations are producing open-source web publishing systems based on the servlet architecture. Some of the more interesting ones are:

1.5.1. Webmacro

Webmacro is a template engine distributed under GPL, which runs inside any standard servlet engine. At its heart is a scripting language in which you can write things like

<ul> #foreach $customer in $list { <li>$customer.name lives at $customer.address } </ul>

And it also includes a servlet context that allows any Java object to be accessed with the clarity of a bean. WebMacro has some nice features (including a clean scripting language, detecting Java object properties through introspection, and producing XML as easily as HTML), and it looks as though it would be easy and quick to produce simple pages; but seems to be developed by a one-man band (Justin Wells of Semiotex), it involves large run-time overheads, and is not yet at version 1.0. It would be worth using on a quick-and-dirty implementation or prototype, but not sure about long-term support or scalability.

1.5.2. Freemarker

Freemarker, like WebMacro, provides its own scripting language; but you have to write your own servlets to use the resulting templates. Its still cleaner than JSP, but more work than Webmacro. The project is hosted by sourceforge (part of slashdot), but this just seems to mean that no one person ends up looking after it. I could not get any information on its stability or future development.

1.5.3. Otembo

Otembo is a Webmacro wannabe whose only distinguishing feature is the ability to put SQL queries right in your templates, rather than in beans called from your templates. This is a very small prize in return for the problems of defining robust transaction processing and connection pooling via callbacks. And the documentation and support is even more scanty than Freemarker's.

1.5.4. Tea

The Mouse goes open source! Tea is the templating language and servlet architecture behind a number of serious sites developed by Disney's web arm (including ABC.com, ABCNEWS.com, ESPN.com, Go.com, and Disney.com.). The templating language looks clean (unlike JSP), the Teaservlet container can run inside Tomcat on Apache, and it comes with a web-enabled administrator tool and IDE (Integrated Development Environment - i.e. a nice editor and things).

This is a product that has been used in anger by a very large organization. This means there is very good documentation and it is stable. Given the size of the parent organization, Tea is more freeware than opensource; and it is not clear whether future developments will be so freely available (especially since the Go.com portal has performed disastrously, and may soon be Gone -- [yup, RIP, 12th March 2001]). If I were to build a large servlet-based system and strict standards were not an issue, then Tea would be worth looking at.

2. XML

2.1. Why XML?

XML (eXtensible Mark-up Language) is a W3C standard for defining mark-up languages. Unlike HTML, which has a fixed set of element tags that browsers (and any other html clients) know how to interpret in a relatively common way, XML documents define their own element tags via a DTD (Document Type Definition). This makes XML extremely flexible; so flexible, in fact, that it is hard to know what to do with it.

Sun claim that "Java + XML = portable code + portable data"; in other words, treat XML as a platform- and application-independent way of storing and communicating data. It is certainly possible, for example, to transform XML content into an HTML document, or even browse it directly using an XML-enabled browser, such as IE5; but XML is, first and foremost, a way of defining data stores such that they can be flexibly manipulated. In this respect the nearest historical equivalent to XML is not HTML but CSV (Comma Separated Values) - the convention of storing information in a flat file, one record per line. The difference between the two is that XML can define far richer structures than a simple list of vectors (namely, recursively-defined trees with weakly-typed node elements).

Consider this motivating example. Suppose we have a large collection of complex structured documents - with titles, introductions, summaries, modification dates, authors, paragraphs, and so on - on which we need to perform three kinds of operations. First, we want to execute complex searches (all documents modified more than once, all documents that refer to ones written by me, etc). Second, we want to present the results in a variety of html formats (full document, summary, outline, etc). Third, we want some content management functions (transferring to production, access by workflows). XML would be the canonical way to store the documents such that they could be accessed in all these ways.

Of course each of these accessor functions could be optimized in various ways - searches could be optimized by using indexed DB tables, presentation could be achieved by storing pre-compiled static html files, etc - but XML would still be the most convenient master data store. Alternatively, XML could be used as the standard for communicating data, rather than storing it. Oracle, for example, provides very good support for getting XML in and out of an RDBMS, so we could use this to store the raw master data, but it may still make sense to pass documents to (and from) the accessor functions in a common XML format.

Apart from anything else, XML has a lot of industry weight behind it - and not just from vendors. The US Securities and Exchange Commission, for example, has started demanding that corporate accounts be made web-accessible in XML formats. One way or another, we will have to deal with XML at some point.

2.2. Manipulating XML

In order to do anything useful with XML data it must be accessed, and the XML model provides two ways of doing this. The first is transforming the original XML document into another; and the second is accessing that data via an API.

2.2.1. XSL

Before going any further it is worth remembering that well-formed HTML (and WML) is one possible instantiation of XML. Therefore when we talk about transforming XML into XML, this process can include transforming raw XML data into HTML for presentation.

The W3C-standard mechanism for transforming XML is XSL (eXtensible Stylesheet Language), which has two major components. The first is the Formatting Objects (XSL:FO) standard, which is a hardcore formatting standard for converting XML data into binary formats such as PDF, MSWord, etc. If you need to worry about XSL:FO then you are in the wrong job.

The second component of XSL is XSL Transformations (XSLT), which defines a syntax for converting XML documents into other plain-XML documents. XSLT is a recursive declarative language (like Prolog), that itself is written in XML. So, in the case of our previous example, suppose we wanted to take a raw XML document and present an outline of it in pretty HTML. The XSLT document would say something like:

  1. If you find a chapter element, then print out its title wrapped in <H1> tags and an <href>, and process the rest of its contents.
  2. If you find a sub-section element, then print out its title wrapped in <H3> tags, and skip the contents, etc.
XSLT is a very powerful way of doing useful things with XML data. (This page was formatted using it, for example.) And by using Java extensions the possibilities are great. However, it is not the easiest language to use, so don't expect designers to use it. It is also surprisingly fast.

2.2.2. Java-XML APIs

SAX (Simple API for XML) and DOM (Document Object Model) are both ways of making XML data accessible to Java by defining an API for XML documents. (Actually DOM is an abstract W3C standard that can also be used by C++, Perl, tcl etc, whereas SAX is native Java.) SAX and DOM are both based around parsers that go through the XML original and make the contents available via Java methods. The difference lies in how they do it.

SAX uses an event-based parser. You define a reader object that includes a number of call-back methods corresponding to the bits of content you are interested in; the parser then crawls over the document, and calls those methods whenever it hits a bit of corresponding content. A typical application would be a servlet that uses repeating elements in an XML document as a simple database - the SAX parser would crawl over the document, generating content for the servlet to include in an HTML template.

DOM, on the other hand, uses a tree-based parser. As its name suggests, a DOM parser takes an XML document and constructs a tree of Java (or C++, or perl, etc) objects whose structure and content reflects that of the original document - one node object per XML element. One use of DOM would be a servlet that takes an HTML template (i.e. an XML template that conforms to the HTML DTD), inserts bits of dynamic content, and outputs the result as HTML.

Note the difference between SAX and DOM in these two applications. A SAX parser crawls over an XML document invoking call-backs as it goes, then dies. It is therefore suited to parsing XML documents that are liable to change, such as those that act as data stores or the results of DB queries. A DOM parser, on the other hand, generates an object structure that can persist as long as you want; and so is more suited to parsing XML documents that are relatively fixed, such as templates.

JDOM is an alternative to SAX and DOM for manipulating XML from Java, which claims to be not only simpler, but also combine the best of both of the others. It is open-source project from some of the people behind the O'Reilly Java and XML books, so it is well documented, and written by people with solid experience. We found it simple, reliable and fast to use for generating, reading, and manipulating XML documents from files (though it does have some minor quirks).

2.3. Apache and XML

Apache are as committed to XML as they are to Java. At the bottom of this is the Xerces XML parser which in turn is used in the Xalan XSL processor. The latter project has been contributed to by Lotus, IBM, Sun and Oracle, and so is the de facto reference implementation of XSLT. But the most significant development is the Cocoon XML web-publishing framework - one of only two fully functional open source Java-XML frameworks around at the moment. (The other is Enhydra - see below.)

2.3.1. Cocoon and XSP

Cocoon sits on top of the Tomcat servlet container, and handles the production of HTML documents from XML. It can do this in two possible ways. The first is by applying XSLT transformation style sheets to raw XML files. The second is through XSP (XML Server Pages), which, as the name suggests, use fragments of Java to dynamically generate XML on the fly - data which can then be processed via XSL.

Cocoon seems a simple, robust, and popular framework for publishing XML using XSLT; and a number of live commercial sites are using it in this way already. However there are still questions about using it as a full-blown publishing framework. The first is that it is very new, with very little documentation. Version 2 is about to be released, but the early announcements for this include the worrying admission that version 1 was just a "proof of concept". The second question mark is around XSP - which is supposed to be the centrepiece of Cocoon 2.0. Not only is XSP complicated and not particularly well-documented, but also seems to have a deeper conceptual problem:

XSP, as the name suggests, is the XML version of JSP; in other words it mixes static XML data with Java fragments. Now this combination of static stuff and dynamically generated stuff makes sense if the resulting page is HTML, since HTML, by its nature, combines static presentation with dynamic content data. But XSP generates XML pages, and XML documents are only supposed to contain data, with presentation being handled by XSL or a template. The question is, why mix static and dynamic data to generate a single page of XML data? If it is fast-changing data then stick it in a database (or persistent servlet objects) and use servlets to grab it when requested. If it is slow-changing data (such as text for articles) then store it in a XML document and generate cached HTML pages using XSL. But combining these datastreams only to store the result in an XML document just seems to threaten data synchronization problems. (Maybe I'm missing something, but XSP seems to be a technology in search of an application.)

Nonetheless, if you want to use XML and XSL - and you will at some point - then Cocoon would seem to be the default platform.

2.3.2. Infozone and Ozone

It is also worth mentioning Infozone in this context, which is an open source XML content management project currently in discussions about integrating with Apache. At the heart of Infozone is Prowler, a Java CM framework for XML content. It claims to provide hierarchical document storage, document versioning support, and user management and workflow, though the documentation is so sparse that I have not been able to check this out thoroughly. Prowler uses Ozone, an object-oriented DBMS completely implemented in Java, and this could be a very good idea (if it proves robust and transaction-aware with transparent connectivity) or a very bad one (if it doesn't). Another interesting part of the Infozone project is Lexus, an attempt to define an XML query and update language with a standard API.

Infozone is very new, but worth watching to see if it integrates with Apache and fulfills its ambitions.

3. Three-Tier and Enterprise Architectures

As the web matures, sites tend to become more `back-heavy' and more integrated with the rest of a business' IT system; and this changes the kinds of system architectures needed. The first generation of sites were static html, running on a two-tier architecture comprising a browser client and a stand-alone web file server. The next generation had some dynamic content, running on a system with its own dedicated database - the three-tier architecture. In functional terms, these dynamically generated sites are MVC (Model, View, Controller) systems, in which a data model is stored in the DB, a view of that data is presented to the client, and a controller connects the two.

For a simple application, it is just about possible to fit both the View and Controller functions in a single servlet or tcl script, but it is a tight squeeze and three pressures make it worse. The first is that web sites have to do more and more processing. For example, instead of simply serving files and storing forms they may now have to personalise those files and send those forms through credit-card validation. Second, instead of having a dedicated database, the web site may be accessing a legacy database that is also serving the rest of the business - which means that getting appropriate data safely may be more difficult than a straight SQL query. The fulfillment DB for a web retail business, for example, may be sat in a warehouse in Leicester, and can only communicate with the webserver host via ftp. Third, there may be more clients than just an html browser - such as WAP or an XML client - each of which server similar business functions but in very different ways.

These pressures have lead to the Multi-Tier Architecture, in which an application server now sits between the webserver and the DB. An application server may be a separate process running on the webserver host, it may be a separate machine, or it may be an entire load-balanced cluster; but whatever the physical implementation, the key distinguishing feature is that it involves a layer of components, known as business objects, that do not service http requests directly, but rather provide the logic to fulfill those requests. In the case of a Java servlet system, these business objects may be Enterprise JavaBeans (EJB). EJBs are designed to perform business logic very robustly and scalably by implementing standard interfaces to handle security, session management, and transaction processing. And this means they have to be managed by a dedicated container running on the application server - such as Netscape's Application Server, BEA's WebLogic server or IBM's Websphere. EJB architectures carry a lot of overheads, and are only really suited to very large scale projects, and this has tended to discourage the growth of open source implementations in the past. This situation is now changing, with JBOSS in particular looking promising. Bull have also made their EJB engine freely available.

3.1. Enhydra

Enhydra is an open-source application server project with commercial backing from Lutris, FranceTelecom, and Evidian, who are part of Bull. It has three components. The first is Multiserver, an open source application server with a web-enabled administration tool, that can run either by itself or with a web server. The second component is the application framework: a set of Java classes which provide the runtime infrastructure for Enhydra applications. The third component is a set of tools for developing Enhydra applications, the most important of which is XMLC (eXtensible Markup Language Compiler).

XMLC is the reason why Enhydra is so popular. It takes a flat HTML (or XML) file and generates a Java class that, when called by the multiserver, generates the HTML corresponding to the original flat file. These presentation objects implement the DOM API, and include methods for defining content dynamically via business objects with implicit objects available for storing persistent session data. Most popular RDBMS are supported via JDBC. The nice thing about XMLC is the way that it generates Java objects from (almost) raw HTML. But the down-side is that you have to add code to these objects which will be lost every time you re-compile a change in design. So XMLC would seem to work best when you either have very stable designs or programmers who don't mind working around designers. XMLC is now available for stand-alone use.

Some things, such as repeated elements (tables) and forms, are clunky to implement using XMLC; nonethess it is being used on a number of live sites, and the commercial backing means that it is relatively well documented - complete with endearing animal mascot (in this case Ollie the Otter). In addition Lutris seem genuinely commited to the open source framework, and to developing the system to include new technologies in the future; and the response to email queries has been impressive (less than half an hour in one case.)

Enhydra has overheads - both in terms of the time it would take to become proficient, and the runtime application server environment - but it seems like the only open source Java-XML application server that is stable and developed enough for serious use.

OS and Hardware

Java is designed to be multi-platform. Most of the applications described here should run on Linux/Unix/Windows systems.

Server

The server will process requests:
Apache
Servlet containers: Tomcat (Jakarta), Resin
EJB containers: JBoss
Mail servers: James (Jakarta)

Application Frameworks

Frameworks give a structure to the development of new applications:
Struts
An MVC framework.
Avalon
Framework for designing components and services, adhering to a set of design patterns. Aimed at server-side development. Used by Cocoon 1 and 2, James, and others.
Cocoon 1 and Cocoon 2
A servlet-based publishing platform built with Avalon. Developer and user mailing lists. Includes XSP and ESQL logic tags (and more), XML/XSL support via Xalan/Xerces. The OPP demo was programmed in 4 days by a novice, in an ACS way: creation of a set of independent pages calling various APIs, without any thick Avalon service/module. This approach seems suitable and very efficent, for small projects.
Turbine
A servlet-based framework.
JBoss
An EJB container and framework.
Open Symphony
An EJB-based framework.
ACS Java
Currently in 4.6, which is mainly about lower-layers of the architecture.
Documentation: doc, business doc, and UML.

Applications

XML and XSL
Standards
XML (W3C): extensible markup language
XSL/XSLT (W3C): language from transforming XML documents
XSL-FO: an XML format which can be translated into PDF, PS, and others via dedicated libraries. Tutorial.
XPath (W3C): a language for addressing parts of an XML document
XPointer (W3C): an extension to XPath. Tutorial at xml.com. Included in IBM's XML for Java Compatibility API 2.0.9
XLink (W3C): a language that allows elements to be inserted into XML documents in order to create and describe links between resources
XQuery (W3C): work in progress, XML syntax to query databases within an XML document
JAXP 1.0 (Javasoft): API for building/using DOM and SAX models
TRaX (Apache XML): API for XML transformations, including XSLT, Java, Perl processing. Integrated into JAXP 1.1.1
Useful web sites: www.w3schools.com, www.renderx.com, www.xml.org, www.oasis-open.org/cover

Implementations
XML and XSLT authoring
stylus studio (closed source): a complex and comprehensive XML/XSL authoring tool, Win 2k/NT
xsplit (closed source): a Windows NT editor
xslide: emacs XSL mode 
XML editors: Xeena, Merlot, swish 
XSLEditor (closed source): a 3-window editor )
Jato: a tool to map objects to/from XML
Practically, designers can create their HTML templates in Dreamweaver. The HTML can then be turned into XHTML (the XML equivalent of HTML) using tidy. We can then cut the XHTML into XSL templates (using emacs or XSLEditor).
XML and XSLT processing
Project X (Javasoft), Xerces (Apache XML, better performance): two implementations of the XML part of JAXP
Xalan 2 (Apache XML): implementation of the XSL part of JAXP
XTrans (IBM): after being given an example of how to map two sample XML files (with different DTDs), this tool will generate a "translator" which you can use to perform similar translations over and over again. Based on IBM's Java XML parser, and incomplete functionality.
XML publishing
Cocoon 1 and Cocoon 2: framework dedicated to XML publishing, with piped processing, extra taglibs (XSP and ESQL), JSP, Velocity, sitemap, cacheing, etc.
Jetspeed (Apache Jakarta): publishing framework for portals. Takes an XML/RSS/SMTP source, does some JSP/XSL/Cocoon/WebMacro/Velocity processing, results in an HTML/WML portal.
XML linking 
Silfide XML Parser (Loria): implements XPointer and XLink.
4Suite: a Python set of tools including XLink, XPointer, XSLT, XPath, XRDF.
XML in the database
SXQL: move data from XML to a DB by specifying an XSL mapping file, and from a DB back into XML, by specifying an XML mapping template. Uses Xalan and JDBC.
XML-DBMS: similar to SXQL, but both XML->DB and DB->XML are done with the same XML mapping file, which can be complex. Uses Xalan and JDBC.
ESQL: a Cocoon XML taglib for querying databases from an XML page. Uses JDBC. Unsure about whether it can be used independently from Cocoon.

 
User A&A and management
Standards
JAAS (Javasoft): pluggable authentication (PAM) class-level and method-level security, defined in static files.
Very limited API in HTTPServletRequest, lacks functionality for proper in-code checks.

Implementations
OSUser: user management module of OpenSymphony project, vaporware for now
Tomcat security: URL-based, a la ACS filters, mapped to DB table of your choice
Turbine security service: password-based authentication, rich API for in-code authorization similar to ACS, based on DB or LDAP
ACS/Java 4.6+ Kernel: uses JAAS and PAM for authorization. Extends JAAS' permissions by defining them on a Party (ACS User/Group),
 a DomainObject (ACS Object), and a Privilege.
Turbine could be a suitable API in the short term, but in the long term we should have 1/ JAAS support and 2/ user management functionality on top - just like aD is doing for ACS/Java.

 
Search
Implementations
Lucene: fast search engine, can index files and/or DB, very simple API. 
interMedia: Oracle specific Search functionality
NeatSeeker: classes to build new search engine on  
 
Communication
Standards
.NET
XML-RPC
SOAP
JAXM (Javasoft): API for XML messaging (including SOAP, ...). Early Access 1.
JAX-RPC (Javasoft): API for XML-based RPC protocols, no API nor implementation released yet.

Implementations
Helma: one of many Java library for XML-RPC
Turbine XML-RPC service: based on Helma, but seems client-side only
Apache SOAP (Apache XML): look at this doc about using it with Java
Cocoon: two SOAP implementations are on their way to making it into Cocoon 

 
Syndication/directory information
Standards
JAXR (Javasoft): accessing standard XML registeries. Nothing released yet.
RDF (W3C): Resource Description Framework
RSS: Rich/RDF Site Summary, a format for providing summaries of e.g. news
Jena: Java API for RSS
ICE: Information and Content Exchange, wide specifications for managing communication (and relationship in general) between syndicators and subscribers

Implementations
jmoz: a Cocoon2/Lucene/JBoss project dealing with RDF 

 
Content management
Standards
Templating standards: Velocity, JSP, Python, Cocoon XSP

Implementations
OSContent: CM module of OpenSymphony, nothing released yet
ACS/Java 4.6+ CMS: still basic

 
Discussion board
Implementations
WebForum: bboard used at www.ondelette.com/acne and www.ondelette.com/winfertility
ACS/Java 4.6+ bboard: part of the collaboration packages (also includes FAQ, general comments, chat, glossary, survey-simple), not released yet 
 
Calendar
Implementations
BO Calendar: calendar based on the Babel Objects framework 
 
Announcements/News
Implementations
WebEditor: tool for creating news-oriented website, based on Cocoon 
 
Ecommerce
Implementations
metastuff: a dead set of Java classes, no more development on it
jshopz (in pseudo-english): german e-shop, based on MySQL
 
Persistence
Standards
JDBC (Javasoft): API to access databases

Implementations
Many JDBC drivers exists, for Oracle, MySQL, PostgreSQL, etc.
Oracle: specific functionality for XML and search (interMedia)
Castor: stores objects in DB, LDAP, XML

 

Home ] Up ]

e-mail Executive Order at

Send email to website@eodas.com with questions or comments about this web site.
Copyright © 1997, 2009 Executive Order Corporation. All Rights Reserved.
Executive Order® is a Registered trademark of Executive Order Corporation.
Legal Terms and Conditions Copyright Notice and Internet Privacy Policy of Executive Order Corp.

Executive Order Corporation - We make IT happen.

Design and Development for your custom software.

Custom wireless solution provider for you organization.