Die Bibliothek POCO

Es passiert mir leider doch immer wieder, dass ich mich frage:

Hey, warum erst jetzt?

Und damit meine ich eigentlich:

Wie konnte es passieren, dass ich bisher nie etwas von was-auch-immer gehört habe, obwohl ich es schon früher gut hätte gebrauchen können.

Die C++ Bibliothek POCO fällt auch in diese Kategorie.


Mit einigen C++ Bibliotheken habe ich so meine “philosophischen” Probleme. QT z.B. braucht ein ganzes Zusatzheer an Meta-Compilern und Fremdtools. MFC gibt’s nur für Windows, BOOST hält sich bei einigen Funktionen im Service/Daemon-Bereich zurück und setzt auf einige STL Antiquitäten auf, die ich gerne vermeiden möchte, usw. usw.

Vor allem fehlt mir bei vielen dieser Bibliotheken die Möglichkeit sie auf “exotischeren” Plattformen wie Windows CE oder Android einzusetzen.

Genau dieses Ziel hat POCO erreicht und das ist ein guter Grund, warum ich nun schon einige Unternehmensprojekte kennenlernen durfte, die auf POCO bei der Implementierung ihrer Software setzen.

(Damit erklärt sich für mich allerdings noch weniger, warum ich bis Anfang dieses Jahres noch nie darüber gestolpert bin.)

Neben seiner Kernbibliothek für

  • Delegates
  • Threads, Tasks und Synchronisierung
  • Prozesse und IPC
  • Streams und Formatierungen
  • Reguläre Ausdrücke
  • Dateien und Verzeichnisse
  • Datum und Uhrzeit
  • Typencontainer
  • Fehlerbehandlung
  • und vieles mehr

stehen zahlreiche weitere POCO-Kern basierte Bibliotheken bereit, z.B. für:

  • Krytographie
  • Datenbanken (ODBC, SQLite, Mongo, Redis, …)
  • XML und JSON
  • Typ-Varianten
  • Netzwerkprotokolle

Was ich an POCO sehr schätze ist die Tatsache, dass eben nicht alles (wie bei BOOST) durch Header-Implementierungen und Templates abgebildet wird, sondern dass viele Implementierungen entweder als statische oder dynamische Bibliothek zur Verfügung stehen.

Das ist bei sonders bei den Individualitäten von Windows, Linux, Windows CE und Android auch sehr notwendig.

Ich habe zwar vorerst nur Kleinigkeiten damit gemacht, doch sowohl die Dokumentation wie auch die Handhabung der Objekte ist vielversprechend.
Von daher: Daumen hoch für POCO


Hmm, was wäre wohl passiert, hätte ich POCO schon früher kennen gelernt?

Zugegeben, es hat viele Übereinstimmungen mit dem GATE Projekt, doch am Ende muss ich sagen, dass alleine die Prozessverwaltung mit nicht genügt hätte.

… also bleibe ich weiter beim GATE Ansatz und dessen Orientierung auf Service-nahe APIs.

Nichts desto trotz ist POCO ein guter Ansatz für eine Vielzahl an Softwareszenarien und bleibt auf jeden Fall auf meinem Schirm ;)


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!