old-www/HOWTO/Apache-Overview-HOWTO-3.html

392 lines
15 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Apache Overview HOWTO: ASF Projects</TITLE>
<LINK HREF="Apache-Overview-HOWTO-4.html" REL=next>
<LINK HREF="Apache-Overview-HOWTO-2.html" REL=previous>
<LINK HREF="Apache-Overview-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="Apache-Overview-HOWTO-4.html">Next</A>
<A HREF="Apache-Overview-HOWTO-2.html">Previous</A>
<A HREF="Apache-Overview-HOWTO.html#toc3">Contents</A>
<HR>
<H2><A NAME="s3">3. ASF Projects</A></H2>
<P>Although Apache is probably the most popular, the Apache Software
Foundation is home to many other projects. This section provides an overview
of the most relevant ones, organized logically. Most of them belong either
to the Jakarta project and the XML project. The Jakarta project hosts
Java-based projects and the XML project hosts, surprise, XML-related projects.
<P>
<H2><A NAME="ss3.1">3.1 Applications and Frameworks</A>
</H2>
<P>The following are application and development frameworks that are part
of the ASF.
<P>
<H3>3.1.1 Servers</H3>
<P>The following are some ASF server projects.
<H3><A NAME="tomcat"></A> Tomcat</H3>
<P>Tomcat is the flagship product of the Jakarta project.
It is the official reference implementation for the Java
Servlet and JavaServer Pages technologies.
<P>You can learn more in the
<A HREF="http://jakarta.apache.org/tomcat/">Tomcat homepage</A>.
<P>
<H3>JAMES (Java Apache Mail Enterprise Server)</H3>
<P>Complementary to the other Apache server side technologies, JAMES provides
<EM>a 100% pure Java server designed to be a complete and portable enterprise
mail engine solution based on currently available open protocols (SMTP, POP3,
IMAP, HTTP)</EM>
<P>More information can be found
<A HREF="http://jakarta.apache.org/james/">here</A>.
<P>
<H3>Lucene</H3>
<P>Jakarta Lucene is a high-performance, full-featured text search engine
written in Java and part of the Jakarta project. You can find more
information at
<A HREF="http://jakarta.apache.org/lucene/">http://jakarta.apache.org/lucene/</A><P>
<H3>Jetspeed</H3>
<P>
<A HREF="http://jakarta.apache.org/jetspeed/">Jetspeed</A>
is a web based portal written in Java. It has a modular API that
allows aggregation of different data sources (XML, SMTP, iCalendar)
<P>
<P>
<H3>3.1.2 Content management</H3>
<P>The following are projects related to content management
<P>
<H3>Slide</H3>
<P>Slide is a high-level content management framework.
Conceptually, it provides a hierarchical organization of binary
content which can be stored into arbitrary, heterogenous, distributed
data stores. In addition, Slide integrates security, locking and versioning
services. It also provides a
<A HREF="http://www.webdav.org">WebDAV</A>
server and client implementation.
You can learn more at the
<A HREF="http://jakarta.apache.org/slide/index.html">Slide home page</A>.
<P>
<H3>Alexandria</H3>
<P>Alexandria is an integrated documentation management system. It brings
together technologies common to many open source projects like CVS and JavaDoc.
The goal is to integrate source code and documentation to encourage code
documentation and sharing. More information at
<A HREF="http://jakarta.apache.org/alexandria/index.html">http://jakarta.apache.org/alexandria/index.html</A>
<P>
<H3>3.1.3 Frameworks</H3>
<P>The following are application development frameworks.
<P>
<H3><A NAME="turbine"></A> Turbine</H3>
<P>Turbine is a servlet based framework that allows experienced Java developers
to quickly build secure web applications. Turbine brings together a platform
for running Java code and reusable components. Some of its features include:
Integration with template systems, MVC style development, Access Control
Lists, localization support and so on. You can find more information at the
<A HREF="http://java.apache.org/turbine">Turbine web site</A>.
<P>
<H3>Avalon</H3>
<P>If you are familiar with Perl or BSD systems, Avalon is roughly the
equivalent of
<A HREF="http://www.cpan.org">CPAN</A> or the Ports
collection for Java Apache technologies. It does not only provide guidelines
for a common repository of code, it goes one step further: <EM>is an effort to
create, design, develop and maintain a common framework for server
applications written using the Java language.</EM> It provides the means so
server side Java projects can be easily integrated and build on each other.
You can find more information at
the
<A HREF="http://java.apache.org/avalon/">Avalon web site</A>.
<P>
<H2><A NAME="ss3.2">3.2 Presentation</A>
</H2>
<P>The following template systems, transformation engines and other
presentation related projects.
<P>
<H3><A NAME="cocoon"></A> Cocoon</H3>
<P>Cocoon leverages other Apache XML technologies like Xerces, Xalan and FOP
to provide a comprehensive XML publishing framework. The framework can talk
to many different data sources and can transform the content into several
different delivery formats such as PDF, HTML, XML and RTF. It can run as a
servlet or as a command line program. You can learn more about Cocoon at the
<A HREF="http://xml.apache.org/cocoon/">project homepage</A>
<P>
<H3>Velocity</H3>
<P><EM>Velocity is a Java based template engine. It can be used as a
stand-alone utility for generating source code, HTML, reports, or
it can be combined with other systems to provide template services.</EM>
Velocity has a Model View Controller paradigm that enforces separation of
Java code and the HTML template. You can learn more about Velocity
<A HREF="http://jakarta.apache.org/velocity/index.html">here</A>.
<P>
<H3>AxKit</H3>
<P>
<A HREF="http://axkit.org">AxKit</A>
<A NAME="axkit"></A> is
a popular XML-based Application Server for mod_perl and Apache. It allows
separation of content and presentation and provides on-the-fly conversion
from XML to any format.
<P>
<H3>Xalan</H3>
<P>Xalan is an XSLT processor available for Java and C++.
XSL is a style sheet language for XML. The T is for Transformation. XML
is good at storing structured data (information). You sometimes need to
display this data to the user or apply some other transformation.
Xalan takes the original XML document, reads transformation configuration
(stylesheet) and outputs HTML, plain text or another XML document.
You can learn more about Xalan at the
<A HREF="http://xml.apache.org/xalan-j/index.html">Xalan Java</A> and
<A HREF="http://xml.apache.org/xalan-c/index.html">Xalan C++</A> project homepages.
<P>
<H3>FOP</H3>
<P>From the website: <EM>FOP is a Java application that reads a formatting
object tree and then turns it into a PDF document</EM>. So FOP takes an
XML document and outputs PDF, in a similar way that Xalan does with HTML
or text. You can learn more about FOP
<A HREF="http://xml.apache.org/fop">here</A>.
<P>
<P>
<H2><A NAME="ss3.3">3.3 Parsers and Document Access libraries</A>
</H2>
<P>The following are different libraries that can be used to parse and
manipulate a variety of document formats.
<P>
<H3>Xerces</H3>
<P>The Xerces project provides XML parsers for a variety of languages, including
Java, C++ and Perl. The Perl bindings are based on the C++ sources.
An XML parser is a tool used for programatic access to XML documents.
This is a description of the standards supported by Xerces:
<UL>
<LI>
<A HREF="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html">DOM</A>: DOM stands for Document Object Model. XML documents
are hierarchical by nature (nested tags). XML documents can be accessed thru
a tree like interface. The process is as follows:
<UL>
<LI>Parse document</LI>
<LI>Build tree</LI>
<LI>add/delete/modify nodes</LI>
<LI>Serialize tree</LI>
</UL>
</LI>
<LI>
<A HREF="http://www.saxproject.org">SAX</A>:Simple API for XML. This is a stream based API. This means
that we will receive callbacks as elements are encountered. These callbacks
can be used to construct a DOM tree for example.</LI>
<LI>
<A HREF="http://www.w3.org/TR/REC-xml-names/">XML Namespaces</A></LI>
<LI>XML Schema: The XML standard provides the syntax for writing documents. XML
Schema provides the tools for defining the <EM>contents</EM> of the XML
document (semantics). It allows to define that a certain element in the
document must be an integer between 10 and 20 or contain an IP address.</LI>
</UL>
The Xerces XML project initial code base was donated by IBM. You can find more
information in the
<A HREF="http://xml.apache.org/xerces-j/index.html">Xerces Java</A>,
<A HREF="http://xml.apache.org/xerces-c/index.html">Xerces C++</A> and
<A HREF="http://xml.apache.org/xerces-p/index.html">Xerces Perl</A> homepages.
<P>
<H3>Batik</H3>
<P><EM>Batik is a Java based toolkit for applications that want to use images in the
<A HREF="http://www.w3.org/TR/SVG/">Scalable Vector Graphics (SVG)</A> format for various
purposes, such as viewing, generation or manipulation.</EM>
<P> It is XML centric and compliant with the W3C specification. It is a bit atypical from other Apache
projects, in that it provides a graphical component. Batik provides hooks to extend the
framework thru custom tags and it allows conversion from SVG to other formats like JPEG or PNG.
You can learn more at the
<A HREF="http://xml.apache.org/batik/">Batik homepage</A><P>
<H3>POI</H3>
<P>The POI project consists of APIs for manipulating various file formats based
upon Microsoft's OLE 2 Compound Document format using pure Java. This
includes Word and Excel documents. You can find more information at
<A HREF="http://jakarta.apache.org/poi/">http://jakarta.apache.org/poi/</A><P>
<H2><A NAME="ss3.4">3.4 Interoperability</A>
</H2>
<P>The following are libraries for remote communication and interoperability
between servers.
<P>
<H3>SOAP</H3>
<P>Apache SOAP ("Simple Object Access Protocol") and Axis are
implementations of the
<A HREF="http://www.w3.org/TR/SOAP">SOAP protocol</A>
<P>SOAP is a lightweight protocol for exchange of information in a
decentralized, distributed environment. It is an XML based protocol that
consists of three parts:
<UL>
<LI><EM>An envelope that defines a framework for describing what is in a
message and how to process it</EM>,</LI>
<LI><EM>a set of encoding rules for expressing instances of
application-defined datatypes</EM>, and</LI>
<LI><EM>a convention for representing remote procedure calls and
responses</EM>. </LI>
</UL>
Basically you can think of SOAP as an remote procedure call
system, based on HTTP and XML. On the one hand this means it is
verbose and slow compared to other systems. On the other hand it eases
interoperatibility, debugging and development of clients and servers
for a variety of languages since most modern languages have HTTP and XML
modules. You can learn more at the
<A HREF="http://xml.apache.org/soap/">Apache SOAP homepage</A>
<P>
<H3>XML-RPC</H3>
<P>The
<A HREF="http://xml.apache.org/xmlrpc/">XML-RPC project</A>
is a Java implementation of the XML-RPC protocol, a light-weight protocol
similar and predecessor to SOAP.
<P>
<H3>XML security</H3>
<P>The
<A HREF="http://xml.apache.org/security/">XML security project</A> provides
XML document signature verification for secure exchange of documents.
<P>
<H2><A NAME="ss3.5">3.5 Development</A>
</H2>
<H3>Apache Portable Runtime</H3>
<P>The
<A HREF="http://apr.apache.org">APR</A> project provides
a portability layer that abstracts a number of APIs for file manipulation,
network access and so on. It is written in C and works on most Unix flavors,
Windows and a variety of other systems. It is the basis for Apache 2.0
<P>
<H3>Ant</H3>
<P>
<A HREF="http://jakarta.apache.org/ant/">Ant</A> is a Java based
build tool. It has a modular API and can be extended by creating new tasks. It
is driven by XML configuration files.
<P>
<H3>Byte Code Library</H3>
<P>The
<A HREF="http://jakarta.apache.org/bcel/">Byte Code Engineering Library</A> (BCEL) is a
library to analyze, create, and manipulate binary Java class files.
<P>
<H3>Log4j</H3>
<P>This package provides a logging framework that Java applications can use.
It can be enabled at runtime without modifying the binary and has been designed
with performance in mind. It can be found at
<A HREF="http://jakarta.apache.org/log4j/">http://jakarta.apache.org/log4j/</A><P>
<H3>ORO and Regexp</H3>
<P>ORO is a complete package that provides regular expression support for
Java. It includes Perl5 regular expression support, glob expressions and so on.
All under the Apache license.
You can learn more about ORO at
<A HREF="http://jakarta.apache.org/oro/index.html">http://jakarta.apache.org/oro/index.html</A>. There is another ASF
lightweight regular expression package,
<A HREF="http://jakarta.apache.org/regexp/">Regexp</A>.
<P>
<H3>Struts</H3>
<P>Struts is an Apache project that tries to bring the
Model-View-Controller (MVC) design paradigm to web development. It
builds on
<A HREF="http://java.sun.com/products/servlet">Servlet</A> and
<A HREF="http://java.sun.com/products/jsp">JavaServer Pages</A> technologies. The model
part is made up of Java server objects, which represent the internal
state of the application. The view part is constructed via JavaServer Pages (JSP), which
is a combination of static HTML/XML and Java. JSPs also allow the
developer to define new tags. The controller part consists of servlets,
which take requests (GET/POST) from the client, perform actions on the
model and update the view by providing the appropriate JSP. You can
learn more at the
<A HREF="http://jakarta.apache.org/struts/index.html">Struts project pages</A>.
<P>
<H3>Taglibs</H3>
<P>The JavaServer pages technology allows developers to provide functionality
by adding custom tags. The Taglibs project intends to be a common repository
for these extensions. It includes tags for common utilities (i.e. date),
SQL database access and so on.
<P>You can learn about TagLibs at
<A HREF="http://jakarta.apache.org/taglibs/">http://jakarta.apache.org/taglibs/</A>.
More documentation is included in the package.
<P>
<H3>Database</H3>
<P>
<A HREF="http://jakarta.apache.org/ojb/">OJB</A> is a database
mapping tool that allows persistance and storage of Java objects in
relational databases.
<A HREF="http://xml.apache.org/xindice/">Xindice</A> is a native XML database for storing
and querying XML documents.
<P>
<H3>Commons</H3>
<P>The
<A HREF="http://jakarta.apache.org/commons/">Commons project</A>
provides a great variety of reusable Java components with minimal dependencies.
<P>
<H2><A NAME="ss3.6">3.6 Testing</A>
</H2>
<P>The following ASF projects cover testing and performance analisys.
<P>
<H3>httpd-test</H3>
<P>The
<A HREF="http://httpd.apache.org/test/">httpd-test project</A> provides a testing framework for the
Apache web server and tools such as
<A HREF="http://httpd.apache.org/test/flood/">flood</A> for HTTP load testing.
<P>
<H3>Cactus</H3>
<P>
<A HREF="http://jakarta.apache.org/cactus/">Cactus</A> is a
testing framework for testing server side Java code such as Servlets and EJBs.
<P>
<H3>JMeter</H3>
<P>This is a testing tool written in Java with a GUI frontend. It can be obtained at
<A HREF="http://jakarta.apache.org/jmeter/">http://jakarta.apache.org/jmeter/</A>.
<P>
<H3>Lakta</H3>
<P>
<A HREF="http://jakarta.apache.org/lakta/">Lakta</A> is an end-to-end
HTTP testing tool
<P>
<H3>Watchdog</H3>
<P>The
<A HREF="http://jakarta.apache.org/watchdog/">Watchdog project</A> is a suite of validation sets for the
Servlet and JavaServer Pages specification.
<P>
<HR>
<A HREF="Apache-Overview-HOWTO-4.html">Next</A>
<A HREF="Apache-Overview-HOWTO-2.html">Previous</A>
<A HREF="Apache-Overview-HOWTO.html#toc3">Contents</A>
</BODY>
</HTML>