Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
SeminarWerkzeuge des Apache-Projekts
vom XML-Parser bis zum Web-Service
Prof. Franz J. HauckAndreas I. Schmied
Abteilung Verteilte Systeme, Universität Ulm
1
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
1 Ziele
■ Übung von Vorträgen
◆ Didaktik, Rhetorik, Präsentationstechnik
◆ Auswahl von Theorie, Praxis und Beispielen
◆ Einsatz von Beamer und Laptop
■ Übung von kurzen Zusammenfassungen
◆ sinnvolles Zusammenstellen eines komplexeren Sachverhalts
◆ korrekte Zitate und Referenzierung
■ Apache-Projekt
◆ Einblicke in ein qualitativ hochwertiges Open-Source-Projekt
◆ Evaluieren und Präsentieren großer Software-Frameworks
◆ Verständnis für Software-Muster für Frameworks
2
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
2 Ablauf des Seminars
■ Arbeiten der Teilnehmer
◆ 30- bis 45-minütiger Vortrag mit anschließender Diskussion
• möglichst nur ein Vortrag pro Seminartag
◆ 6- bis 10-seitige Ausarbeitung
• Folien und Ausarbeitung sollen auch elektronisch abgegeben werden
• Layoutrichtlinien der Ausarbeitung werden vorgegeben
• Textverarbeitungssystem frei wählbar
◆ Anwesenheit und aktive Mitarbeit bei Diskussionen
• zweimaliges entschuldigtes Fehlen wird toleriert
◆ termingerechte Betreuungsbesprechungen und Abgabe der Ausarbeitung
3
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
2 Ablauf des Seminars (2)
■ Betreuung
◆ jedes Thema hat einen Betreuer
■ Zeitplanung
◆ 21 Tage vorher: erste Besprechung des Themas
◆ 14 Tage vorher: Vorlage von Gliederung
◆ 7 Tage vorher: Vorlage erste Version Ausarbeitung und Folien
◆ am Vortragstag: Abgabe der Ausarbeitung
■ Belohnung
◆ alle Ausarbeitungen als gebundener Bericht zu Semesterende
• zum Selbstkostenpreis (ca. 3,50 Euro)
◆ Schein
• sorgfältige, termingerechte Arbeit
4
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
2 Ablauf des Seminars (3)
■ Termin
◆ genauer Termin steht noch nicht fest
◆ erster Termin wird festgelegt und rechtzeitig bekannt gegeben
• in erster Woche des Semesters per E-Mail/Webpage
◆ weitere Termine werden gemeinsam festgelegt
• geplant ab dritte Woche des Semesters
■ Erster Vortrag
◆ von den Betreuern
◆ wichtige Hinweise zu Präsentation und Ausarbeitung
◆ Tips für die eigenen Arbeiten
5
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3 Themenfindung
■ max. 13 Themen
◆ Reihenfolge der bisherigen Anmeldungen ist zunächst entscheidend
◆ weitere Teilnehmer werden durch Los gereiht
■ Teilnehmerzettel
◆ bitte Name, Matrikelnummer und E-Mail-Adresse notieren
◆ später Themennummer notieren
■ Themenauswahl
◆ zunächst Präsentation aller Themen
◆ danach Wahl in Reihenfolge der Losnummer
6
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3.1 Themengebiet
■ Apache-Projekt
◆ großes Open-Source-Projekt
◆ erfolgreich, industrietauglich !
◆ mehrere Subprojekte aus diversen Bereichen
• Webserver, Portale
• Webservices
• XML-Processing
• (XML-) Publishing
• Allgemeine Programmbibliotheken „Commons“
• Entwicklungstools
• (Projekt-) Administration
• (Script-) Sprachen
■ Andy's Apache Mindmap (nächste Seite…)
7
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3.1 Themengebiet (2)
Workflow provides a framework for building workflow management sy... Workflow
VFS is a Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system. VFS
ThreadPool is a simple component for asynchronously dispatching work to another thread in a pool for simple multi threaded programming. ThreadPool
Commons SQL is a component for working with databases and generating DDL. It contains a simple set of beans that represent a relational database schema such as a Database, Table, Column etc. SQL
Scaffold is a toolkit for building web applicati... Scaffold
Resources provides a lightweight framework for defining and looking up internationalized message strings keyed by a java.util.Locale and a message key. Resources
Messenger is an easy to use and lightweight framework for working with JMS in the w. Messenger
Mapper is a thin abstraction layer around a project’s chosen data mapping technology (a.k.a. DAO .. Mapper
JRCS is a library for parsing and manipulation of RCS archive files like the ones produced by the RCS (Revision Control System) itself and by CVS (Concurrent Version System). JRCS
Jakarta JAR Archive Reposito.. JJar
Id is a component used to generate identifi... Id
A functor is a function that can be manipulated as an object, or an object representing a single, generic function. Functor
Commons−Events provides additional classes for firing and handling events. It focusses on the Java Collections Framework, providing decorators to other collections that fire events. Events
Email provides a simple library for sending e−mail from J.. Email
Commons−Convert aims to provide a single library dedicated to the task of converting an object of one type to another. Convert
Commons Compress defines an API for working with tar, zip and bzip... Compress
Clazz focuses on introspection and class manipula... Clazz
Chain is an implmentation of the GoF Chain of Responsibility pa.. Chain
Cache provides object caching servic... Cache
Attributes provides a runtime API to metadata attributes such as doclet tags, inspired by the Nanning and XRAI projects as well as JSR 175 and C# attrbutes. Attributes
Sandbox
The commons−validator package provides a simple, extendable framework to define validators (validation methods) and validation rules in an xml file. There is support for internationalization of validation rules and error messages.
Validator
Commons−Primitives provides smaller, faster and easier to work with types supporting Java primitive types. Currently Primitives is primarily focused on collections of primitives. Primitives
Commons−Pool provides a generic object pooling interface, a toolkit for creating modular object pools and several general purpose pool implementations. Pool
Net is a a collection of network utilities, based on the NetComponents codebase, including FTP cli... Net
Commons−Modeler provides mechanisms to create Model MBeans compatible with the Java Management Extensions (JMX) specification. Modeler
Math is a library of lightweight, self−contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language. Math
Commons−Logging is a wrapper around a variety of logging API implement.. Logging
The Launcher Component is designed to be a cross platform Java application launcher. Commons−launcher eliminates the need for a batch or shell script to launch a Java class. The original Java classes come from the Jakarta Tomcat 4.0 project.
Launcher
Commons−Latka is an HTTP functional testing suite for automated QA, acceptance and regression .. Latka
Commons−Lang provides a very common set of utility classes that provide extra functionality for classes in java.lang. Lang
Commons−JXPath provides utilities for manipulating Java classes that conform to the JavaBeans naming conventions using the XPath syntax. It also supports maps, DOM and other object models. JXPath
Jexl is an expression language which entends the Expression Language of the JSTL by bringing in some of the lessons leaned by the Velocity community. Jexl
Jelly is an XML based scripting and processing engine. Jelly borrows many good ideas from both JSP custom tags, Velocity, Cocoon and the scripting engine inside XDoclet. Jelly can be used from the command line, inside Ant or inside a Servlet.
Jelly
IO is a collection of I/O utiliti... IO
Commons−HttpClient provides a framework for working with the client−side of the HTTP p.. HttpClient
FileUpload makes it easy to add robust, high−performance, file upload capability to your servlets and web applications. FileUpload
Commons−EL provides an interpreter for the Expression Language which is defined by the JavaServer Pages(TM) specification, version 2.0. EL
Commons−Discovery provides tools for locating resources (including classes) by mapping service/reference names to resource names using a variety of schemes. Discovery
Commons−Digester is an XML−to−Java−object mapping utility commonly used for parsing XML configuration files. Digester
DbUtils is a JDBC helper library that factors out mundane resource cleanup code for common database tasks. DbUtils
Commons−DBCP provides database connection pooling ser... DBCP
An alternative invocation mechanism for unix−daemon−like java ... Daemon
Commons−Configuration Tools to assist in the reading of configuration/preferences files in various formats. Configuration
Commons−Collections provides a suite of classes that extend or augment the Java Collections Fra... Collections
Codec contains some general encoding/decoding algorithms. Includes some phonetic encoders, Hex, Base64, and a URL encoder. Codec
CLI provides a simple API for working with Comamnd Line arguments, options, option groups, mandatory options and so forth. CLI
Betwixt provides services for mapping JavaBeans to XML documents, and vice ... Betwixt
Commons−BeanUtils provides easy−to−use wrappers around the Java reflection and introspecti... BeanUtils
Components
Commons
xdoclet
wichtige externe Projek... =NON−APACHE
xml java bindi... xml beans
OASIS Web Service Remote Portlet implementati. WSRP4J
portlet spec JSR 1... pluto
Spam Assassin
software package manageme... Depot
logging for .N... Log4Net
cocoon CMS lenya
JCE provider with OpenS.. JuiCE
J2EE Container Geronimo
FtpServer
LDAP & Co. Directory
relational DB Axion
AltRMI
gerade entstehende proje... =
incubator
xml beans
xml application serveraxkit
xml databasexindice
signing and encrypti...xml security
xml entity and URI resolver by norman w...xml commons
svgbatik
based on coco...
project documentation framew...forrest
fop
java, c++xalan
java, c++, perlxerces
xml
WSRP4J
XML−RPC
distributed discovery
WS inspection langua...WSIL
location and access method independ...
WS invocation framewo...WSIF
supersedes IBM SOAP...SOAP
"Judy"jUDDI
JAXB implementationJaxMe
securityWSS4J
reliable messaging on a...Sandesha
Addressing
ws−fx
new Apache SOAP implementati..axis
web services
websh
rivet
mod_tcl
tcl
connectors to several persistence, component, content generating techn...
MVC/Model2 framewo...struts
pluto
WSRP4J
portal implementati...jetspeed
portals
mod_perlperl
project managementmaven
GUIchainsaw
interoperability with java loggi..
log4j, ...multi−language supp...
logging
mail server for pop3,smtp,n...james
Apache News
Apache Wiki
JPackage
UNOFFICIAL
Servlet/JSP spec conformance chec...Watchdog
Veltag: Velocity TagLib
DVSL: declarative velocity style language, XSLT ali..
Texen: text generat...
Anakia: XML −> any doc form...
Velocity Tools: cooperation with str...
general code generation: SQL, XML,..
content−code−separation for java−weba...
java−based template engi...
Velocity
for tomcat, velocity, ...
easily creates secure scheduled services with servle..Turbine
servlet/JSP containerTomcat
is an alternative to scripting environments such as JavaServer Pages or Vel...
reconceptualizes web application development in terms of objects, methods and properties instead of URLs and query parameters
Java framework for creating leading edge web applicat.
Tapestry
JSP tag libraries’ libraryTaglibs
WebDAV support
lowlevel CMSSlide
Regexp
reads/writes MS−Office formats
Java−based MS−OLE2 interoperabil..POI
text manipulation like perl/awk, globs, filterin...ORO
text searchLucene
performance testingJMeter
intra−process MT−safe service management/configura...HiveMind
use Java objects instead of println("<html/xm...
element construction setECS
commons
extends JUnit for server−side Servlet/EJB/... testi...Cactus
bean scripting framewo...BSF
byte code engineering libr...BCEL
replaced by: gump, forrest, mav...
former CVS/Javadoc/Source code/Documentation management sy...Alexandria
jakarta
build−tool for inter−project dependen...
social experiment, XP, continuous integra...gump
db commons
ORMObjectBridge AKA ObJectRelationBridge (...
formerly part of turbine
persistence layer + generat...torque
db
serf
not jakarta commons!
commons
XML publishi...cocoon
main component gro...planet
platform for management of compone...merlin
see: logginglogkit
joint with directory proj...repository
utilities
meta
component meta mo...
framework
avalon
portable runtimeapr
Apache Project OverviewSeminar WS04
8
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3.2 Themen (1)
1. XML-Parsing und -Processing
• Xerces, Xalan, Xalan-Erweiterungen
2. XML-Commons und XML-Security
• Schema-Katalog, URIResolver, …
3. XML-Document-Rendering
• SVG, FOP, Batik
4. XML-Publishing
• Cocoon, Lenya, Forrest
9
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3.2 Themen (2)
5. Apache-Webserver
• der klassische „httpd“
6. Portale
• Jetspeed, Pluto, Portlets
7. Struts
• MVC/Model2-Framework für Web-Applikationen
8. Avalon
• Komponenten/Container-Framework für beliebigeund Web-Applikationen
10
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3.2 Themen (3)
9. Projekt-Management
• Maven, James
10. Jakarta: Tomcat, Turbine
• Servlet/JSP-Container
11. Jakarta: Velocity, Tapestry
• Template Engine, Web Application Dev.Kit.
12. Jakarta-Commons
• breit angelegte Bibliothek
13. Datenbank und Application Server
• Xindice, Axkit, Axis, Geronimo
11
Werkzeuge des Apache-Projekts 2004, F.J.Hauck/A.I.Schmied, Verteilte Systeme, Univ. Ulm [vorbesprechung.fm, 2004-07-23 09.55]Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung der Autoren.
3.3 Themenvergabe
A XML-Parsing/Processing
B XML-Commons/Security
C XML-Rendering
D XML-Publishing
E Webserver
F Portale
G Struts-Framework
H Avalon-Framework
J Projekt-Management
K Tomcat/Turbine
L Velocity/Tapestry
M Jakarta-Commons
N DB/App-Server
12