OTP is a collection of useful
middleware,
libraries, and
tools
A tool is an object that can extend an individual's ability to modify features of the surrounding environment or help them accomplish a particular task. Although many animals use simple tools, only human beings, whose use of stone tools dates ba ...
written in the
Erlang programming language. It is an integral part of the
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
distribution of Erlang. The name OTP was originally an acronym for Open Telecom Platform, which was a branding attempt before
Ericsson released Erlang/OTP as open source. However neither Erlang nor OTP is specific to telecom applications.
The OTP distribution is supported and maintained by the OTP product unit at
Ericsson, who released Erlang/OTP as
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
in the late 90s, to ensure its independence from a single vendor and to increase awareness of the language.
It contains:
*an Erlang
interpreter (which is called ''
BEAM
Beam may refer to:
Streams of particles or energy
*Light beam, or beam of light, a directional projection of light energy
**Laser beam
*Particle beam, a stream of charged or neutral particles
**Charged particle beam, a spatially localized grou ...
'');
*an Erlang
compiler;
*a protocol for communication between servers (nodes);
*a
CORBA Object Request Broker;
*a static analysis tool called Dialyzer;
*a distributed database server (
Mnesia
Mnesia is a distributed, soft real-time database management system written in the Erlang programming language. It is distributed as part of the Open Telecom Platform.
Description
As with Erlang, Mnesia was developed by Ericsson for soft real ...
); and
*many other libraries.
History
Early days
Originally named Open System, it was started by
Ericsson in late 1995 as a
prototype system that aimed to select from a range of appropriate programming technologies and
system components, including computers,
languages
Language is a structured system of communication. The structure of a language is its grammar and the free components are its vocabulary. Languages are the primary means by which humans communicate, and may be conveyed through a variety of met ...
,
databases and management systems, to support a remote access system being developed at Ericsson.
[B. Däcker (2000) Concurrent Functional Programming for Telecommunications: A Case Study of Technology Introduction](_blank)
/ref> In the same year, following the collapse of another gigantic C++-based project, Open System was ordered to provide support when it restarted from scratch using Erlang. The result was the highly successful AXD301 system, a new ATM switch
Asynchronous Transfer Mode (ATM) is a telecommunications standard defined by American National Standards Institute (ANSI) and ITU-T (formerly CCITT) for digital transmission of multiple types of traffic. ATM was developed to meet the needs of ...
, announced in 1998. Open System system was later named Open Telecom Platform (OTP) when the first prototype was delivered in May 1996. OTP has also become a specific product unit within Ericsson since then, providing management, support and further development.
The early OTP system components in 1998:
* Distributed application management
* SASL - error logging, release handling
* OS resource monitoring
* EVA - protocol independent event/alarm handling
* Mnesia
Mnesia is a distributed, soft real-time database management system written in the Erlang programming language. It is distributed as part of the Open Telecom Platform.
Description
As with Erlang, Mnesia was developed by Ericsson for soft real ...
- real-time active data replication
* SNMP - operations and maintenance interface
* INETS - simple HTTP support
A key subsystem in OTP is the System Architecture Support Libraries (SASL), which gave a framework for writing applications. The early version of SASL provided:
* Start-up scripts
* An application concept
* Behaviours (design patterns)
* Error handling
* Debugging
* High-level software upgrade in runtime without shutdown
The behaviours provide programmers with yet higher abstractions for efficient program design. The early version included:
* Supervision
* Servers
* Event handling
* Finite-state machines
OTP Components
The OTP components can be divided into six categories:
* Basic Applications - Basic Erlang/OTP functionality.
** Compiler A compiler for Erlang modules.
** Kernel Functionality necessary to run Erlang/OTP itself.
** SASL (System Architecture Support Libraries) A set of tools for code replacement and alarm handling etc.
** Stdlib The standard library.
*Operations and Maintenance - OAM both of the system developed by the user and of Erlang/OTP itself.
** EVA A multi-featured event and alarm handler.
** OS_Mon A monitor which allows inspection of the underlying operating system.
** SNMP SNMP support including a MIB compiler and tools for creating SNMP agents.
* Interface and Communication - Interoperability and protocols support.
** Asn1 Support for ASN.1.
** Comet A library that enables Erlang/OTP to call COM objects on windows
** Crypto Cryptographical support
** Erl_Interface Low level interface to C.
** GS A graphics system used to write platform independent user interfaces.
** Inets A set of services such as a web server and a FTP client.
** Jinterface Low level interface to Java.
** SSL Secure Socket Layer (SSL), interface to UNIX BSD sockets
* Database Management.
** QLC Query language support for Mnesia DBMS.
** Mnesia A heavy duty real-time distributed database.
** ODBC ODBC database interface.
* CORBA services and IDL compiler.
** cosEvent Orber OMG Event Service.
** cosNotification Orber OMG Notification Service.
** cosTime Orber OMG Timer and TimerEvent Services.
** cosTransactions Orber OMG Transaction Service.
** IC IDL compiler
** Orber A CORBA object request broker.
* Tools.
** Appmon A utility used to view OTP applications.
** Debugger For debugging and testing of Erlang programs.
** Parsetools A set of parsing and lexical analysis tools.
** Pman A process manager used to inspect the state of an Erlang/OTP system.
** Runtime_Tools Tools to include in a production system.
** Toolbar A tool bar simplifying access to the Erlang/OTP tools.
** Tools A set of programming tools including a coverage analyzer etc.
** TV An ETS and Mnesia graphical table visualizer.
Applications in OTP
As of OTP 18.2, the following applications are included in the Erlang/OTP distribution:
* asn1
* common_test
* compiler
* cosEvent
* cosEventDomain
* cosFileTransfer
* cosNotification
* cosProperty
* cosTime
* cosTransactions
* crypto
* debugger
* dialyzer
* diameter
* edoc
* eldap
* erl_docgen
* erl_interface
* erts
* et
* eunit
* gs
* hipe
* ic
* inets
See also
*RabbitMQ
RabbitMQ is an open-source message-broker software (sometimes called message-oriented middleware) that originally implemented the Advanced Message Queuing Protocol (AMQP) and has since been extended with a plug-in architecture to support Str ...
* Couchbase Server
* Riak
References
{{Reflist
Erlang (programming language)