Jump to content

POCO C++ Libraries

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 178.188.246.250 (talk) at 13:18, 2 May 2016 (updated latest release). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

POCO C++ Libraries
Developer(s)Günter Obiltschnig et al.
Initial release21 February 2005; 19 years ago (2005-02-21)[1]
Stable release
1.7.3 / 2 May 2016; 8 years ago (2016-05-02)[2]
Repository
Written inC++
Operating systemCross-platform
Typelibrary or framework
LicenseBoost Software License
Websitepocoproject.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 on 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 five 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

  • 2004 - Günter Obiltschnig started POCO with the development of the class libraries as the result of being dissatisfied by what was available in C++ class libraries for network centric programming.
  • February 21, 2005 - The first public release on Sourceforge, which contained the Foundation and XML support libraries. POCO was released under the Sleepycat license at the time.
  • May 2005 - Aleksandar Fabijanic made the first contribution.
  • January 19, 2006 - POCO 1.0 was released, including the Net library.
  • July 2006 - POCO was re-licensed under the Boost license.
  • May 2007 - POCO 1.3 was released, including the Data library
  • December 2010 - POCO 1.4 was released, including many improvements.
  • December 2014 - POCO 1.6 was released, including the JSON and MongoDB libraries and many other improvements.

POCO C++ Libraries Users[5]

See also

Notes

  1. ^ February 21, 2005 - The first public release on Sourceforge, which contained the Foundation and XML support libraries. POCO was released under the Sleepycat license at the time.
  2. ^ "Release 1.7.3 is available". pocoproject.org. 02 May 2016. Retrieved 03 May 2016. {{cite web}}: Check date values in: |access-date= and |date= (help)
  3. ^ http://cppdepend.wordpress.com/2009/09/24/why-poco-is-well-implemented-and-designed/
  4. ^ http://accu.org/content/conf2009/ACCU2009_Bernhard_Merkle_StopTheSoftwareArchitectureErosion.pdf
  5. ^ http://pocoproject.org/forum/viewtopic.php?f=11&t=3826&sid=d4ba687212ee105852f927e4ce8a5023
  6. ^ "C++ Portable Types Library". Archived from the original on 2007. {{cite web}}: Check date values in: |archivedate= (help)
  7. ^ C++ Portable Types Library (PTypes) on SourceForge