„Apache Commons“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Vorlagen-fix (Datum, Umfang) |
|||
Zeile 7: | Zeile 7: | ||
Da das Projekt aus sehr vielen einzelnen Bibliotheken besteht, die sich auf ein sehr begrenztes Aufgabenfeld beschränken, werden diese projektintern nach ihrem Reifezustand unterschieden. Bibliotheken, die den Status ''Proper'' (engl. ordentlich) erreicht haben, sind offizieller Bestandteil der Commons. Projekte, die bereits funktionsfähig sind, aber noch nicht die nötigen Kriterien erfüllen, werden in der ''Sandbox'' (engl. Sandkasten) geführt. Alle anderen Bibliotheken, die sich noch im Entwurf befinden oder deren Betreuung nicht sichergestellt ist, werden als ''Dormant'' (engl. schlummernd) kategorisiert. |
Da das Projekt aus sehr vielen einzelnen Bibliotheken besteht, die sich auf ein sehr begrenztes Aufgabenfeld beschränken, werden diese projektintern nach ihrem Reifezustand unterschieden. Bibliotheken, die den Status ''Proper'' (engl. ordentlich) erreicht haben, sind offizieller Bestandteil der Commons. Projekte, die bereits funktionsfähig sind, aber noch nicht die nötigen Kriterien erfüllen, werden in der ''Sandbox'' (engl. Sandkasten) geführt. Alle anderen Bibliotheken, die sich noch im Entwurf befinden oder deren Betreuung nicht sichergestellt ist, werden als ''Dormant'' (engl. schlummernd) kategorisiert. |
||
Folgende offizielle ''(proper)'' Komponenten enthält die ''Apache Commons:''<ref>[ |
Folgende offizielle ''(proper)'' Komponenten enthält die ''Apache Commons:''<ref>[https://commons.apache.org/components.html ''Apache-Commons''-Komponenten]</ref> |
||
{| class="wikitable" |
{| class="wikitable" |
||
Zeile 16: | Zeile 16: | ||
!Web |
!Web |
||
| |
| |
||
* [ |
* [https://commons.apache.org/fileupload FileUpload] – für das Hochladen von Dateien in Webanwendungen |
||
* [ |
* [https://commons.apache.org/net Net] – Sammlung von Hilfsprogrammen und Protokollimplementierungen für Netzwerkkommunikation |
||
* [ |
* [https://commons.apache.org/el EL] – Interpreter für die ''[[JavaServer Pages#JSP 2.0|JSP 2.0]] Expression Language'' |
||
* [ |
* [https://commons.apache.org/email Email] – Bibliothek für das Versenden von E-Mails aus Java |
||
* [ |
* [https://commons.apache.org/proper/commons-imaging/ Imaging] – Bibliothek für das Lesen, Parsen und Schreiben diverser Bildformate (früher Sanselan genannt) |
||
* [ |
* [https://commons.apache.org/jexl Jexl] – ''Expression-Languag''e-Erweiterung der ''[[JavaServer Pages Standard Tag Library]]'' |
||
|- |
|- |
||
!XML |
!XML |
||
| |
| |
||
* [ |
* [https://commons.apache.org/betwixt Betwixt] – Services zum Mapping von ''JavaBeans'' nach XML und vice versa |
||
* [ |
* [https://commons.apache.org/digester Digester] – XML nach ''Java Mapping'' |
||
* [ |
* [https://commons.apache.org/jelly Jelly] – XML-basierte Scripting- und Processing-Engine |
||
* [ |
* [https://commons.apache.org/jxpath JXPath] – Werkzeuge zur Manipulation von ''Java Beans'' mittels ''XPath Syntax'' |
||
|- |
|- |
||
!Utilities |
!Utilities |
||
| |
| |
||
* [ |
* [https://commons.apache.org/proper/commons-bcel/ BCEL] – Bibliothek zur Erzeugung, Manipulation und Analyse von Java-Bytecode |
||
* [ |
* [https://commons.apache.org/beanutils BeanUtils] – Wrapper-Klassen für ''Java Reflection'' und ''Introspection'' zur Manipulation von ''Java Beans'' |
||
* [ |
* [https://commons.apache.org/proper/commons-bsf/ ''Bean Scripting Framework (BSF)''] – Schnittstelle zu Skriptsprachen, inkl. JSR-223 |
||
* [ |
* [https://commons.apache.org/proper/commons-csv/ CSV] – Komponente für das Lesen und Schreiben von [[CSV (Dateiformat)|CSV-Dateien]] |
||
* [ |
* [https://commons.apache.org/pool Pool] – generische Objekt-Pooling-Komponente |
||
* [ |
* [https://commons.apache.org/validator Validator] – Framework für die Definition von Validatoren und deren Regeln mittels XML-Dateien |
||
* [ |
* [https://commons.apache.org/daemon Daemon] – alternativer Mechanismus für den Aufruf von Unix-Daemon-ähnlichem Java-Code |
||
* [ |
* [https://commons.apache.org/discovery Discovery] – Tools für die Lokation von Ressourcen mittels Mapping von deren Ressourcenamen zu Service bzw. Referenzen |
||
* [ |
* [https://commons.apache.org/exec Exec] – API zur Behandlung externer Prozesse und Management der Ablaufumgebung in Java |
||
* [ |
* [https://commons.apache.org/launcher Launcher] – plattformneutraler Launcher für den Start von Applikationen aus Java |
||
* [ |
* [https://commons.apache.org/jci Java Compiler Interface (JCI)] – Bibliothek für das Kompilieren von Code in Java-Bytecode |
||
* [ |
* [https://commons.apache.org/modeler Modeler] – Tools zur einfachen Erzeugung von MBeans für die ''[[Java Management Extensions]]'' |
||
* [ |
* [https://commons.apache.org/proper/commons-ognl/ Object Graph Navigation Language (OGNL)] – API zur Navigation durch den Java-Objektbaum |
||
* [ |
* [https://commons.apache.org/scxml State Chart XML (SCXML)] – Implementierung einer ''State Engine,'' die gemäß [[SCXML]]-Spezifikation definierte Status und Statusübergänge ausführt |
||
* [ |
* [https://commons.apache.org/chain Chain] – Implementierung des ''[[Zuständigkeitskette|Chain of Responsibility]] Design Patterns'' |
||
|- |
|- |
||
!Konvertierungen |
!Konvertierungen |
||
| |
| |
||
* [ |
* [https://commons.apache.org/codec Codec] – Implementierung generischer Encoding-/Decoding-Algorithmen wie beispielsweise Phonetic, Base64, URL |
||
* [ |
* [https://commons.apache.org/compress Compress] – API für die Arbeit mit tar-, zip- und bzip2-Dateien |
||
|- |
|- |
||
!Java-API-Erweiterungen |
!Java-API-Erweiterungen |
||
| |
| |
||
* [ |
* [https://commons.apache.org/cli Command Line Interpreter (CLI)] – Parser für ''Command Line Arguments'' |
||
* [ |
* [https://commons.apache.org/configuration Configuration] – Zugriff auf Konfigurations- und Preferences-Dateien in verschiedenen Formaten |
||
* [ |
* [https://commons.apache.org/collections Collections] – Erweiterung des ''Java-Collections-Frameworks'', ab Version 4 mit Generics |
||
* [ |
* [https://commons.apache.org/dbcp Database Connection Pool (DBCP)] – Services für ''Datenbank Connection Pools'' |
||
* [ |
* [https://commons.apache.org/dbutils DbUtils] – Erweiterungen für JDBC |
||
* [ |
* [https://commons.apache.org/proper/commons-functor/ Functor] – Implementierung von Funktionsobjekten, Objekten, die Funktionen repräsentieren |
||
* [ |
* [https://commons.apache.org/io IO] – Sammlung an ''Input/Output Utilities'' |
||
* [ |
* [https://commons.apache.org/proper/commons-jcs/ Java Caching System (JCS)] – Framework für verteilte Caches |
||
* [ |
* [https://commons.apache.org/lang Lang] – Erweiterung der Funktionalitäten der Klassen aus java.lang |
||
* [ |
* [https://commons.apache.org/logging Logging] – Wrapper um eine Reihe von ''Logging Frameworks'' |
||
* [ |
* [https://commons.apache.org/math Math] – Komponenten für mathematische und statistische Funktionen |
||
* [ |
* [https://commons.apache.org/primitives Primitives] – Zusammenstellungen von primitiven Typen in Java ohne Autoboxing |
||
* [ |
* [https://commons.apache.org/proxy Proxy] – Bibliothek für die Erzeugung dynamischer Proxys |
||
* [ |
* [https://commons.apache.org/vfs VFS] – Komponente für das Behandeln von Dateien, FTP, SMB, Zip etc. als logisches, virtuelles Filesystem |
||
|} |
|} |
||
Zeile 102: | Zeile 102: | ||
== Weblinks == |
== Weblinks == |
||
* [ |
* [https://commons.apache.org/ ''The Apache Commons Project''] |
||
== Einzelnachweis == |
== Einzelnachweis == |
Version vom 25. Mai 2021, 11:05 Uhr

Apache Commons ist ein Projekt der Apache Software Foundation mit der Zielsetzung, allgemein verwendbare Klassenbibliotheken für die Programmiersprache Java zu erstellen. Da die Bibliotheken unter der Apache License Version 2.0 stehen, können sie auch in kommerziellen Projekten verwendet werden. Die Schwerpunkte liegen dabei auf der Unabhängigkeit von anderen Bibliotheken und für Server relevante Funktionen. Vor einer Umstrukturierung der Stiftung wurden die Bibliotheken unter dem Namen Jakarta Commons entwickelt.
Strukturierung
Da das Projekt aus sehr vielen einzelnen Bibliotheken besteht, die sich auf ein sehr begrenztes Aufgabenfeld beschränken, werden diese projektintern nach ihrem Reifezustand unterschieden. Bibliotheken, die den Status Proper (engl. ordentlich) erreicht haben, sind offizieller Bestandteil der Commons. Projekte, die bereits funktionsfähig sind, aber noch nicht die nötigen Kriterien erfüllen, werden in der Sandbox (engl. Sandkasten) geführt. Alle anderen Bibliotheken, die sich noch im Entwurf befinden oder deren Betreuung nicht sichergestellt ist, werden als Dormant (engl. schlummernd) kategorisiert.
Folgende offizielle (proper) Komponenten enthält die Apache Commons:[1]
Kategorie | Komponenten |
---|---|
Web |
|
XML | |
Utilities |
|
Konvertierungen | |
Java-API-Erweiterungen |
|
Allgemeine Bibliotheken
Zu den wichtigsten Bibliotheken gehört „Commons Collections“, welche das Java-Collections-Framework um viele hilfreiche Klassen zur Verwaltung von Datenbeständen erweitert. Die Bibliothek „Commons Lang“ erweitert die Grundfunktionen des Paketes java.lang, in welchem sich die grundlegenden Klassen von Java befinden, um viele nützliche Klassen und deren Methoden. Mit Hilfe von „Commons Logging“ wird eine einheitliche API für die verschiedenen Logging-Klassenbibliotheken, wie beispielsweise log4j oder java.util.logging geschaffen. Weitere allgemeine Erweiterungen der Standardbibliotheken von Java sind unter anderem:
- Commons BeanUtils
- Commons CLI
- Commons Configuration
- Commons Math
Bibliotheken für Webanwendungen
Einige der Bibliotheken sind speziell auf Webanwendungen zugeschnitten, um es Entwicklern zu erleichtern, häufig wiederkehrende Aufgaben mit geringen Aufwand umzusetzen. So stellt Commons Net viele bekannte Protokolle wie FTP, POP3 oder Telnet zur Verfügung, während Commons FileUpload für Servlets und Webanwendungen einen einfachen Mechanismus für das Hochladen von Dateien bereitstellt. Die folgende Auflistung zeigt einige weitere für Webanwendungen interessante Bibliotheken:
- Commons IO
- Commons Transaction
Nicht mehr dazu gehört Commons HttpClient, da dieser Bestandteil bereits im Jahr 2004 an das übergeordnete Jakarta-Projekt übergeben wurde und seit 2007 sogar zu einem eigenständigen Top-Level-Projekt aufstieg.
Bibliotheken für XML-Verarbeitung
Da auf Servern häufig Java Beans verwendet werden, bietet Commons Betwixt eine, in beiden Richtungen mögliche, Abbildung von XML-Strukturen auf Java Beans. Commons Digester ist auf die Initialisierung von Java-Objekten aus XML-Daten spezialisiert, während Commons Jelly die Ausführung einer XML-basierten Skriptsprache ermöglicht.
Bibliotheken für Datenbankzugriffe
Apache Commons DB-Utils bietet Erweiterungen und Vereinfachungen für den Zugriff auf Datenbanken mittels Java Database Connectivity (JDBC). Beispielsweise ermöglicht es die automatische Umwandlung der aus der Datenbank gelieferten Daten in JavaBeans oder schließt die Datenbankverbindungen automatisch. Damit wird der nötige Datenbankzugriffscode auf die wesentlichen Teile reduziert und somit verständlicher und wartbarer.
Eine Datenbankverbindung zu öffnen kann sehr lange dauern (teilweise mehrere Sekunden). Darum greifen die meisten Programme auf Datenbankverbindungspools zu, welche mehrere Datenbankverbindungen halten und die Verbindungen am Ende von Transaktionen nicht schließen, sondern für weitere Datenbankzugriffe offen halten. Apache Commons DBCP bietet so einen Pool von Datenbankverbindungen, basierend auf Apache Commons Pool, welches den Pool selbst verwaltet.
Literatur
- Henrik Hörning, Reidar Hörning, Torsten Curdt: Jakarta Commons. 1. Auflage. Software & Support, 2004, ISBN 3-935042-60-4 (367 S.).
- Timothy O'Brien: Jakarta Commons Cookbook. 1. Auflage. O'Reilly Media, Inc., 2004, ISBN 0-596-00706-X (400 S.).
- Christian Gross: Applied Software Engineering Using Apache Jakarta Commons. 1. Auflage. Charles River Media, 2003, ISBN 1-58450-246-0 (350 S.).