POCO C++ Libraries
From Seo Wiki - Search Engine Optimization and Programming Languages
|Developer(s)||Günter Obiltschnig et al.|
|Stable release||1.3.6p2 / January 15, 2010|
|Type||library or framework|
|License||Boost Software License|
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.
POCO is a collection of C++ libraries providing users the same similar library support that can be 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 . The four core component libraries cover the following areas that can be found in the economy package:
- 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
- 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 economy and the complete edition. While the complete edition covers NetSSL, Crypto, Zip and Data capabilities among others the economy package 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 pragmatic needs of the user base. Library additions take place in sandbox development environment, reviewed, and integrated into the main library releases as approved by the core development team with input from contributors.
- 2004 - Günter Obiltschnig started POCO with the development of the class libraries as the result of being dissatisfied by what was available on C++ class libraries for network centric programming.
- February 21, 2004 - The first public release on sourceforge which contained the Foundation and XML support libraries. At the time POCO was released under the Sleepycat license
- May 2005 - Aleksandar Fabijanic made the first contribution.
- January 19, 2006 - POCO 1.0 was released including the Net library.
- July 2006 - POCO was changed to the Boost license.
- May 2007 - POCO 1.3 was released including the Data library
POCO C++ Libraries Users 
- Appcelerator Titanium
- Schneider Electric Buildings (formerly TAC)
- CACE Technologies
- Medical Imaging Interaction Toolkit
- Boost, a large collection of C++ libraries
- POCO Official Website
- POCO SourceForge Project Page
- A Review on Poco C++ published on C++ Library Database
- POCO Official Website Documentation
- POCO Library Overview
- Why POCO is well implemented and designed?
- POCO Changelog covering time lines
- Aleksandar Fabijanic, Dynamic Any, Part 1, ACCU Overload 86 (August 2008)
- Aleksandar Fabijanic, Dynamic Any, Part 2, ACCU Overload 87 (October 2008)