This articleneeds additional citations forverification.(March 2022) |
Aninterface description languageorinterface 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 are usually used to describedata typesand interfaces in alanguage-independentway, for example, between those written inC++and those written inJava.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Component-based-Software-Engineering-example2.png/220px-Component-based-Software-Engineering-example2.png)
IDLs are commonly used inremote procedure callsoftware. In these cases the machines at either end of thelinkmay be using differentoperating systemsand computer languages. IDLs offer a bridge between the two different systems.
Software systems based on IDLs includeSun'sONC RPC,The Open Group'sDistributed Computing Environment,IBM'sSystem Object Model,theObject Management Group'sCORBA(which implements OMG IDL, an IDL based on DCE/RPC) andData Distribution Service,Mozilla'sXPCOM,Microsoft'sMicrosoft RPC(which evolved intoCOMandDCOM),Facebook'sThriftandWSDLfor Web services.
Examples
edit- AIDL:Java-based, forAndroid;supports local and remote procedure calls, can be accessed from native applications by calling throughJava Native Interface(JNI)
- Apache Thrift:fromApache,originally developed byFacebook
- Avro IDL:for the Apache Avro system
- ASN.1
- Cap'n Proto:created by its former maintainer, avoids some of the perceived shortcomings ofProtocol Buffers.
- Concise Data Definition Language(CDDL, RFC 8610):[1]A Notation forCBORandJSONdata structures
- CortoScript:Describe data and/or interfaces for systems that requireSemantic interoperability
- Etch:Cisco's Etch Cross-platform Service Description Language
- Extensible Data Notation(EDN):Clojuredata format, similar to JSON
- FlatBuffers:Serialization format fromGooglesupporting zero-copy deserialization
- Franca IDL:the open-source Franca interface definition language
- FIDL:Interface description language for theFuchsia Operating Systemdesigned for writing app components inC,C++,Dart,GoandRust.[2]
- IDL specification language:the original Interface Description Language
- IPL:Imandra Protocol Language
- JSONWeb-Service Protocol (JSON-WSP)
- Lightweight Imaging Device Interface Language
- Microsoft Interface Definition Language(MIDL): the Microsoft extension of OMG IDL to add support forComponent Object Model(COM) andDistributed Component Object Model(DCOM)
- OMG IDL:standardized byObject Management Group,used inCORBA(for DCE/RPC services) andDDS(fordata modeling), also selected by the W3C for exposing the DOM of XML, HTML, and CSS documents
- OpenAPI Specification:a standard forWeb APIs,used bySwaggerand other technologies.
- Open Service Interface Definitions
- Protocol Buffers:Google's IDL
- RESTful Service Description Language(RSDL)
- Smithy:An AWS-invented protocol-agnostic interface definition language.
- Specification Language forInternet Communications Engine(Ice:Slice)
- Universal Network Objects:OpenOffice.org's component model
- Web Application Description Language(WADL)
- Web IDLbyWHATWG: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 forX Window System
- Cross Platform Interface Description Language (XPIDL): Mozilla's way to specify XPCOM interfaces
See also
editReferences
edit- ^Birkholz, H.; Vigano, C.; Bormann, C. (2019)."Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures".RFC Editor.doi:10.17487/RFC8610.S2CID195857027.Retrieved2022-05-24.
- ^"FIDL Overview".Fuchsia.Retrieved2022-02-23.