POCO C++ Libraries

POCO C++ Libraries
Developer(s) Günter Obiltschnig et al.
Initial release 21 February 2005[1]
Stable release 1.6.0 / 22 December 2014[2]
Written in C++
Operating system windows
Type library or framework
License Boost Software License
Website pocoproject.org

The POCO C++ Libraries are a collection of open source class libraries for developing network-centric, portable applications in C++. POCO stands for POrtable COmponents. The libraries cover functionality such as threads, thread synchronization, file system access, streams, shared libraries and class loading, sockets and network protocols (HTTP, FTP, SMTP, etc.), and include an HTTP server, as well as an XML parser with SAX2 and DOM interfaces and SQL database access. The modular and efficient design and implementation makes the POCO C++ Libraries well suited for embedded development.

Overview

POCO is a collection of C++ libraries providing users with library support similar to that found in other development environments, like the Java Class Library, the .NET Framework or Apple's Cocoa. POCO is centered around network-centric application domains and developed with modern ANSI/ISO Standard C++ and C++ Standard Library facilities and techniques with emphasis on powerful functionality, ease of use, and consistency. Governed primarily by code quality, consistent style and unit testing POCO is highly portable Open Source software already ported to a variety of different platforms while being released under the Boost Software License.

Hierarchy of POCO C++ Libraries

POCO C++ Libraries are currently split into four core libraries with optional add-on libraries available with each release. The design and hierarchy of POCO C++ is considered well designed.[3][4] The five core component libraries cover the following areas that can be found in the basic edition:

Foundation
  • Platform abstraction - Eases porting issues of fundamental types, etc.
  • Memory management - RAII, auto_ptr, reference counting garbage collection, etc.
  • String utilities
  • Error handling - Extended exception classes
  • streams - Encoding and decoding and filtering support
  • threads - Concurrent processing support
  • Date and time - Date and time support including formatting and high precision timers
  • File system - Abstracted file system support
  • Logging - Application and system logging, filtering and logging strategies
  • Processes - Interprocess communication and memory sharing
  • shared libraries - Dynamic library support
  • Notifications - Abstracted notification support
  • Events - Abstracted event support and strategies
  • Crypt - Random number generation, Digests and encoding/decoding engines
  • Text - Unicode encoding support
  • Regular expressions - Based on Perl compatible regular expression
  • URI - Universal Resource Identifier support
  • UUID - Universally Unique Identifiers support and generators
  • Cache support - Abstracted strategy support
Net
  • sockets - Abstracted low level network support
  • Reactor pattern - Popular network abstraction pattern support
  • MIME messages - Encoding support
  • HTTP - High level HTTP support for client and servers
  • FTP - High level FTP support
  • Mail - POP3, SMTP stream based support
  • HTML - Form support
XML
JSON
  • APIs for reading and writing JSON
Util
  • Configuration files
  • Command line options
  • Tools and server application framework

One design goal of a many targeted decisions are based around POCO C++ providing an easy to use component library that works out of the box. POCO C++ Libraries are currently available in two package formats. These formats are the basic and the complete edition. While the complete edition covers NetSSL, Crypto, Zip and Data capabilities among others, the basic edition does not and thus eliminates the dependence on external facilities such as OpenSSL, ODBC and MySQL dependencies.

The open source nature of POCO enables and encourages development of additional library functionality. Design and development of existing and upcoming library support is driven by the pragmatic needs of the user base. Library additions take place in a sandbox development environment and are reviewed and integrated into the main library releases as approved by the core development team with input from contributors.

History

POCO C++ Libraries Users[5]

See also

Notes

External links