392 lines
15 KiB
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>
|