Next
Previous
Contents
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.
The following are application and development frameworks that are part
of the ASF.
3.1.1 Servers
The following are some ASF server projects.
Tomcat
Tomcat is the flagship product of the Jakarta project.
It is the official reference implementation for the Java
Servlet and JavaServer Pages technologies.
You can learn more in the
Tomcat homepage.
JAMES (Java Apache Mail Enterprise Server)
Complementary to the other Apache server side technologies, JAMES provides
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)
More information can be found
here.
Lucene
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
http://jakarta.apache.org/lucene/
Jetspeed
Jetspeed
is a web based portal written in Java. It has a modular API that
allows aggregation of different data sources (XML, SMTP, iCalendar)
3.1.2 Content management
The following are projects related to content management
Slide
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
WebDAV
server and client implementation.
You can learn more at the
Slide home page.
Alexandria
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
http://jakarta.apache.org/alexandria/index.html
3.1.3 Frameworks
The following are application development frameworks.
Turbine
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
Turbine web site.
Avalon
If you are familiar with Perl or BSD systems, Avalon is roughly the
equivalent of
CPAN 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: is an effort to
create, design, develop and maintain a common framework for server
applications written using the Java language. 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
Avalon web site.
The following template systems, transformation engines and other
presentation related projects.
Cocoon
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
project homepage
Velocity
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.
Velocity has a Model View Controller paradigm that enforces separation of
Java code and the HTML template. You can learn more about Velocity
here.
AxKit
AxKit
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.
Xalan
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
Xalan Java and
Xalan C++ project homepages.
FOP
From the website: FOP is a Java application that reads a formatting
object tree and then turns it into a PDF document. 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
here.
The following are different libraries that can be used to parse and
manipulate a variety of document formats.
Xerces
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:
-
DOM: 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:
- Parse document
- Build tree
- add/delete/modify nodes
- Serialize tree
-
SAX: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.
-
XML Namespaces
- XML Schema: The XML standard provides the syntax for writing documents. XML
Schema provides the tools for defining the contents 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.
The Xerces XML project initial code base was donated by IBM. You can find more
information in the
Xerces Java,
Xerces C++ and
Xerces Perl homepages.
Batik
Batik is a Java based toolkit for applications that want to use images in the
Scalable Vector Graphics (SVG) format for various
purposes, such as viewing, generation or manipulation.
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
Batik homepage
POI
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
http://jakarta.apache.org/poi/
The following are libraries for remote communication and interoperability
between servers.
SOAP
Apache SOAP ("Simple Object Access Protocol") and Axis are
implementations of the
SOAP protocol
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:
- An envelope that defines a framework for describing what is in a
message and how to process it,
- a set of encoding rules for expressing instances of
application-defined datatypes, and
- a convention for representing remote procedure calls and
responses.
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
Apache SOAP homepage
XML-RPC
The
XML-RPC project
is a Java implementation of the XML-RPC protocol, a light-weight protocol
similar and predecessor to SOAP.
XML security
The
XML security project provides
XML document signature verification for secure exchange of documents.
Apache Portable Runtime
The
APR 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
Ant
Ant 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.
Byte Code Library
The
Byte Code Engineering Library (BCEL) is a
library to analyze, create, and manipulate binary Java class files.
Log4j
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
http://jakarta.apache.org/log4j/
ORO and Regexp
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
http://jakarta.apache.org/oro/index.html. There is another ASF
lightweight regular expression package,
Regexp.
Struts
Struts is an Apache project that tries to bring the
Model-View-Controller (MVC) design paradigm to web development. It
builds on
Servlet and
JavaServer Pages 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
Struts project pages.
Taglibs
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.
You can learn about TagLibs at
http://jakarta.apache.org/taglibs/.
More documentation is included in the package.
Database
OJB is a database
mapping tool that allows persistance and storage of Java objects in
relational databases.
Xindice is a native XML database for storing
and querying XML documents.
Commons
The
Commons project
provides a great variety of reusable Java components with minimal dependencies.
The following ASF projects cover testing and performance analisys.
httpd-test
The
httpd-test project provides a testing framework for the
Apache web server and tools such as
flood for HTTP load testing.
Cactus
Cactus is a
testing framework for testing server side Java code such as Servlets and EJBs.
JMeter
This is a testing tool written in Java with a GUI frontend. It can be obtained at
http://jakarta.apache.org/jmeter/.
Lakta
Lakta is an end-to-end
HTTP testing tool
Watchdog
The
Watchdog project is a suite of validation sets for the
Servlet and JavaServer Pages specification.
Next
Previous
Contents
|