An interface description language or interface definition language (IDL), is a generic term for a language that lets a program or object written in one language communicate with another program written in an unknown language. IDLs describe an interface in a
language-independent way, enabling communication between software components that do not share one language, for example, between those written in
C++ and those written in
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
.
IDLs are commonly used in
remote procedure call software. In these cases the machines at either end of the ''link'' may be using different
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s and computer languages. IDLs offer a bridge between the two different systems.
Software systems based on IDLs include
Sun's ONC RPC,
The Open Group
The Open Group is a global consortium that seeks to "enable the achievement of business objectives" by developing "open, vendor-neutral technology standards and certifications." It has over 840 member organizations and provides a number of servi ...
's
Distributed Computing Environment,
IBM's
System Object Model, the
Object Management Group
The Object Management Group (OMG) is a computer industry standards consortium. OMG Task Forces develop enterprise integration standards for a range of technologies.
Business activities
The goal of the OMG was a common portable and interoperab ...
's
CORBA (which implements OMG IDL, an IDL based on DCE/RPC) and
Data Distribution Service,
Mozilla
Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, w ...
's
XPCOM,
Microsoft
Microsoft Corporation is an American multinational corporation, multinational technology company, technology corporation producing Software, computer software, consumer electronics, personal computers, and related services headquartered at th ...
's
Microsoft RPC (which evolved into
COM and
DCOM),
Facebook
Facebook is an online social media and social networking service owned by American company Meta Platforms. Founded in 2004 by Mark Zuckerberg with fellow Harvard College students and roommates Eduardo Saverin, Andrew McCollum, Dustin ...
's
Thrift
Thrift may refer to:
* Frugality
* A savings and loan association in the United States
* Apache Thrift, a remote procedure call (RPC) framework
* Thrift (plant), a plant in the genus ''Armeria''
* Syd Thrift (1929–2006), American baseball exec ...
and
WSDL
The Web Services Description Language (WSDL ) is an XML-based interface description language that is used for describing the functionality offered by a web service. The acronym is also used for any specific WSDL description of a web service (also ...
for Web
services.
Examples
AIDL Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
-based, for
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
; supports local and remote procedure calls, can be accessed from native applications by calling through
Java Native Interface (JNI)
*
Apache Thrift: from
Apache, originally developed by
Facebook
Facebook is an online social media and social networking service owned by American company Meta Platforms. Founded in 2004 by Mark Zuckerberg with fellow Harvard College students and roommates Eduardo Saverin, Andrew McCollum, Dustin ...
*
Avro IDL: for the Apache Avro system
*
Concise Data Definition Language (CDDL, RFC 8610): A Notation for
CBOR and
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 s ...
data structures
*
CortoScript: Describe data and/or interfaces for systems that require
Semantic interoperability
*
Etch: Cisco's Etch Cross-platform Service Description Language
*
Extensible Data Notation (EDN):
Clojure data format, similar to JSON
*
FlatBuffers: Serialization format from
Google
Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
supporting zero-copy deserialization
*
Franca IDL
Franca Interface Definition Language (Franca IDL) is a formally defined, text-based interface description language. It is part of the Franca framework, which is a framework for definition and transformation of software interfaces. Franca applies ...
: the open-source Franca interface definition language
FIDL Interface description language for the
Fuchsia Operating System designed for writing app components in
C,
C++,
Dart
Dart or DART may refer to:
* Dart, the equipment in the game of darts
Arts, entertainment and media
* Dart (comics), an Image Comics superhero
* Dart, a character from ''G.I. Joe''
* Dart, a ''Thomas & Friends'' railway engine character
* D ...
,
Go and
Rust
Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH), ...
.
*
IDL specification language
IDL (''Interface Description Language'') is a software interface description language (also referred to as Interface Descriptor Language) created by William Wulf and John Nestor of Carnegie Mellon University
Carnegie Mellon University (CMU) ...
: the original Interface Description Language
IPL Imandra Protocol Language
*
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 s ...
Web-Service Protocol (
JSON-WSP)
*
Lightweight Imaging Device Interface Language
Lightweight Imaging Device Interface Language (abbr. LIDIL) is a printer interface definition language used in more recent Hewlett-Packard
The Hewlett-Packard Company, commonly shortened to Hewlett-Packard ( ) or HP, was an American multina ...
*
Microsoft Interface Definition Language (MIDL): the Microsoft extension of OMG IDL to add support for
Component Object Model (COM) and
Distributed Component Object Model
Distributed Component Object Model (DCOM) is a proprietary Microsoft technology for communication between software components on networked computers. DCOM, which originally was called "Network OLE", extends Microsoft's COM, and provides the comm ...
(DCOM)
*
OMG IDL
The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between sys ...
: standardized by
Object Management Group
The Object Management Group (OMG) is a computer industry standards consortium. OMG Task Forces develop enterprise integration standards for a range of technologies.
Business activities
The goal of the OMG was a common portable and interoperab ...
, used in
CORBA (for DCE/RPC services) and
DDS (for data modeling), also selected by the W3C for exposing the DOM of XML, HTML, and CSS documents
*
OpenAPI Specification: a standard for REST interfaces, used by
Swagger
A swagger or swagga is a swaggering gait.
Swagger also may refer to:
* Swagger or swagman, a transient labourer in Australia and New Zealand
* Swagger (software), a specification for defining the interface of a REST web service now known as Open ...
and other technologies.
*
Open Service Interface Definitions
*
Protocol Buffers:
Google
Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
's IDL
*
RESTful Service Description Language (RSDL)
* Specification Language for
Internet Communications Engine
The Internet Communications Engine, or Ice, is an open-source RPC framework developed by ZeroC. It provides SDKs for C++, C#, Java, JavaScript, MATLAB, Objective-C, PHP, Python, Ruby and Swift, and can run on various operating systems, incl ...
(Ice:
Slice
Slice may refer to:
*Cutting
Food and beverage
*A portion of bread, pizza, cake, or meat that is cut flat and thin:
:*Sliced bread
:*Pizza by the slice, a fast food dish
*Slice (drink), a line of fruit-flavored soft drinks
In Australia and New ...
)
*
Universal Network Objects:
OpenOffice.org's component model
*
Web Application Description Language (WADL)
*
Web IDL: can be used to describe interfaces that are intended to be implemented in web browsers
*
Web Services Description Language (WSDL)
*
XCB: X protocol description language for
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
* Cross Platform Interface Description Language (
XPIDL
Cross Platform Interface Description Language (XPIDL) is the interface definition language developed by Mozilla.org to specify XPCOM Cross Platform Component Object Model (XPCOM) is a cross-platform component model from Mozilla. It is similar to M ...
): Mozilla's way to specify XPCOM interfaces
See also
*
Component-based software engineering
Component-based software engineering (CBSE), also called component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a giv ...
*
Interface-based programming
Interface-based programming, also known as interface-based architecture, is an architectural pattern for implementing modular programming at the component level in an object-oriented programming language which does not have a module system. An ...
*
Java Interface Definition Language
*
List of computing and IT abbreviations
This is a list of computing and IT acronyms, initialisms and abbreviations.
0–9
* 1GL—First-Generation Programming Language
* 1NF—First Normal Form
* 10B2—10BASE-2
* 10B5—10BASE-5
* 10B-F—10BASE-F
* 10B-FB—10BASE-FB
* 10B ...
*
Universal Interface Language {{no footnotes, date=December 2016
A Universal Interface Language is a language that allows for an interchange of deep information between objects. It does this by allowing an object to experiment on another object to determine what it thinks the ob ...
*
User interface markup language
References
{{Reflist
External links
Documenting Software Architecture: Documenting Interfaces(PDF)
OMG Specification of OMG IDL
Data modeling languages
Remote procedure call
Specification languages
Domain-specific programming languages