OTP is a collection of useful middleware, libraries, and tools written in the Erlang programming language. It is an integral part of the open-source 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.[2][3]
Developer(s) | Ericsson |
---|---|
Initial release | 1998 |
Stable release | 27.1.2[1]
/ 17 October 2024 |
Repository | |
Written in | Erlang |
Operating system | Cross-platform |
Platform | Cross-platform |
Type | Programming Framework (middleware, libraries, tools, database) |
License | Apache License 2.0 (since OTP 18.0) Erlang Public License 1.1 (earlier releases) |
Website | www |
The OTP distribution is supported and maintained by the OTP product unit at Ericsson, who released Erlang/OTP as open-source in the late 1990s, to ensure its independence from a single vendor and to increase awareness of the language.
It contains:
- an Erlang interpreter (which is called BEAM);[4]
- 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); and
- many other libraries.
History
editEarly days
editOriginally 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, databases and management systems, to support a remote access system being developed at Ericsson.[5] 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.[2] The result was the highly successful AXD301 system, a new ATM switch, announced in 1998. Open 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:[5]
- Distributed application management
- SASL - error logging, release handling
- OS resource monitoring
- EVA - protocol independent event/alarm handling
- Mnesia - 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:[5]
- 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:[5]
- Supervision
- Servers
- Event handling
- Finite-state machines
OTP Components
editThe OTP components can be divided into six categories:[6]
- 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
editAs of OTP 18.2, the following applications are included in the Erlang/OTP distribution:[7]
- 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
editReferences
edit- ^ "Release 27.1.2". 17 October 2024. Retrieved 17 October 2024.
- ^ a b "M. Logan, E. Merritt, and R. Carlsson (2010) Erlang and OTP in Action" (PDF).
- ^ Erlang Solutions (1 March 2013). "OTP, the Middleware for Concurrent Distributed Scalable Architectures". Archived from the original on 2021-12-20 – via YouTube.
- ^ "Erlang -- Compilation and Code Loading". erlang.org. Retrieved 2017-12-21.
- ^ a b c d B. Däcker (2000) Concurrent Functional Programming for Telecommunications: A Case Study of Technology Introduction
- ^ "Erlang -- Introduction". erlang.org.
- ^ "Erlang Programming Language". www.erlang.org.