|
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
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:
- 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.
- 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:
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
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 managementStandards
 |
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.
SearchImplementations
 |
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 |
CommunicationStandards
 |
.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 informationStandards
 |
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 managementStandards
Implementations
 |
OSContent:
CM module of OpenSymphony, nothing released yet |
 |
ACS/Java 4.6+ CMS:
still basic |
Discussion boardImplementations
CalendarImplementations
Announcements/NewsImplementations
 |
WebEditor:
tool for creating news-oriented website, based on Cocoon |
EcommerceImplementations
PersistenceStandards
 |
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 |
|
|