POCO C Libraries
   HOME

TheInfoList



OR:

The POrtable COmponents (POCO) C++ Libraries are computer
software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consists ...
, a set of class
libraries A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
for developing
computer network A computer network is a set of computers sharing resources located on or provided by network nodes. The computers use common communication protocols over digital interconnections to communicate with each other. These interconnections are ...
-centric,
portable Portable may refer to: General * Portable building, a manufactured structure that is built off site and moved in upon completion of site and utility work * Portable classroom, a temporary building installed on the grounds of a school to provide a ...
applications in the programming language
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
. The libraries cover functions such as threads, thread synchronizing,
file system In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
access,
streams A stream is a continuous body of water, body of surface water Current (stream), flowing within the stream bed, bed and bank (geography), banks of a channel (geography), channel. Depending on its location or certain characteristics, a stream ...
,
shared libraries In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and su ...
and class loading,
Internet socket The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a '' network of networks'' that consists of private, pub ...
s, and network
communications protocol A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. The protocol defines the rules, syntax, semantics and synchr ...
s (
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
,
FTP The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data ...
,
SMTP The Simple Mail Transfer Protocol (SMTP) is an Internet standard communication protocol for electronic mail transmission. Mail servers and other message transfer agents use SMTP to send and receive mail messages. User-level email clients typical ...
, etc.), and include an
HTTP server An HTTP server is a computer (software) program (or even a software component included in an other program) that plays the role of a server in a client–server model by implementing the ''server part'' of the HTTP and/or HTTPS network protocol ...
, and an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
parser with SAX2 and
DOM Dom or DOM may refer to: People and fictional characters * Dom (given name), including fictional characters * Dom (surname) * Dom La Nena (born 1989), stage name of Brazilian-born cellist, singer and songwriter Dominique Pinto * Dom people, an et ...
interfaces and SQL database access. The modular and efficient design and implementation makes the libraries well suited for
embedded system An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is ''embedded'' as ...
development. The libraries are
free and open-source software Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
distributed under the
Boost Software License Boost is a set of libraries for the C++ programming language that provides support for tasks and structures such as linear algebra, pseudorandom number generation, multithreading, image processing, regular expressions, and unit testing. It conta ...
1.0.


Overview

POCO is a set of C++ libraries providing users with library support similar to that found in other development environments, like the
Java Class Library The Java Class Library (JCL) is a set of dynamically loadable libraries that Java Virtual Machine (JVM) languages can call at run time. Because the Java Platform is not dependent on a specific operating system, applications cannot rely on any of ...
,
.NET Framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
, 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, and already ported to a variety of different platforms.


History


Library hierarchy

, POCO C++ Libraries are 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. 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 – Resource Acquisition Is Initialization (RAII), auto_ptr, reference counting garbage collection, etc. :* String utilities :* Error handling – Extended exception classes :*
streams A stream is a continuous body of water, body of surface water Current (stream), flowing within the stream bed, bed and bank (geography), banks of a channel (geography), channel. Depending on its location or certain characteristics, a stream ...
– 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 In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
– Abstracted file system support :* Logging – Application and system logging, filtering and logging strategies :* Processes – Interprocess communication and memory sharing :*
shared libraries In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and su ...
– 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 A regular expression (shortened as regex or regexp; sometimes referred to as rational expression) is a sequence of characters that specifies a search pattern in text. Usually such patterns are used by string-searching algorithms for "find" or ...
– Based on Perl compatible regular expression :*
URI Uri may refer to: Places * Canton of Uri, a canton in Switzerland * Úri, a village and commune in Hungary * Uri, Iran, a village in East Azerbaijan Province * Uri, Jammu and Kashmir, a town in India * Uri (island), an island off Malakula Islan ...
– Universal Resource Identifier support :*
UUID A universally unique identifier (UUID) is a 128-bit label used for information in computer systems. The term globally unique identifier (GUID) is also used. When generated according to the standard methods, UUIDs are, for practical purposes, un ...
– Universally Unique Identifiers support and generators :* Cache support – Abstracted strategy support ;Net :* sockets – Abstracted low level network support :*
Reactor pattern The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronous ...
– Popular network abstraction pattern support :*
MIME Multipurpose Internet Mail Extensions (MIME) is an Internet standard that extends the format of email messages to support text in character sets other than ASCII, as well as attachments of audio, video, images, and application programs. Message ...
messages – Encoding support :*
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
– High level HTTP support for client and servers :*
FTP The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data ...
– High level FTP support :* Mail – POP3, SMTP stream based support :*
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScri ...
– Form support ;XML :* SAX2 :*
Document Object Model The Document Object Model (DOM) is a cross-platform and language-independent interface that treats an XML or HTML document as a tree structure wherein each node is an object representing a part of the document. The DOM represents a document wi ...
(DOM) :*
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
writer ;JSON :* APIs for reading and writing
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other ser ...
;Util :* Configuration files :* Command line options :* Tools and server application framework One design goal of many targeted decisions are based around POCO C++ providing an easy to use component library that works out of the box. , the libraries are available in two package formats: the ''basic'' and the ''complete'' editions. The complete edition covers NetSSL, Crypto, Zip, and Data abilities, among others. The basic edition does not, and thus eliminates dependence on external facilities such as OpenSSL, ODBC, and MySQL dependencies. Being open source enables and encourages development of further library functions. Design and development of existing and upcoming library support is driven by the pragmatic needs of the user base. Library additions occur 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.


Release history

* 2004 – Günter Obiltschnig began POCO by developing the class libraries because of being dissatisfied by what was available in C++ class libraries for network centric programming. * February 21, 2005 – The first public release on
SourceForge SourceForge is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirrorin ...
, under the Sleepycat License, contained the Foundation and XML support libraries. * May 2005 – Aleksandar Fabijanic made the first contribution. * January 19, 2006 – POCO 1.0 was released, including the Net library. * July 2006 – POCO was relicensed 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. * March 2016 – POCO 1.7 was released, including many improvements. * March 2018 - POCO 1.9 was released, including support for internationalized Domain Names and additions to supported text encodings.


Users

Users include: *
Appcelerator Titanium Titanium SDK is an open-source framework that allows the creation of native mobile applications on platforms iOS and Android from a single JavaScript codebase. Titanium SDK is presently developed by non-profit software foundation TiDev, Inc. I ...
*
Schneider Electric Schneider Electric SE is a French multinational company that specializes in digital automation and energy management. It addresses homes, buildings, data centers, infrastructure and industries, by combining energy technologies, real-time automation ...
Buildings (formerly TAC) * CACE Technologies * Mantid * Medical Imaging Interaction Toolkit *
OpenFrameworks openFrameworks is an open source toolkit designed for creative coding founded by Zachary Lieberman, Theo Watson and Arturo Castro. OpenFrameworks is written in C++ and built on top of OpenGL. It runs on Microsoft Windows, macOS, Linux, iOS, ...
* GLUEscript * SeguriData * Aysso Systems * Tonido * Gladinet * US Army's Communications Realism Appliance (CRA)


See also

*
Adaptive Communication Environment The Adaptive Communication Environment (ACE) is an open source software framework used for network programming. It provides a set of object-oriented C++ classes designed to help address the inherent complexities and challenges in network programmi ...
(ACE) *
Boost (C++ libraries) Boost, boosted or boosting may refer to: Science, technology and mathematics * Boost, positive manifold pressure in turbocharged engines * Boost (C++ libraries), a set of free peer-reviewed portable C++ libraries * Boost (material), a material ...
, a large set of C++ libraries * Loki (C++) * List of C++ template libraries * List of C++ multi-threading libraries


Notes


External links

* *
POCO Changelog covering time lines
{{Web server software C++ libraries Software using the Boost license Web server software