|
LinuxHPC.org/Cluster Builder 1.3
Application Programming Interface (API) |
|||
|
By LinuxHPC.org and Cluster Resources
|
|||
|
An application programming interface (API) is the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them. Description One of the primary purposes of an API is to describe how computer applications and software developers may access a set of (usually third party) functions (for example, within a library) without requiring access to the source code of the functions or library, or requiring a detailed understanding or the functions' internal workings. The software which provides the functionality described by the API is said to be an implementation of the API. The API itself is abstract, as it is an interface. A reference implemention of an API is the implementation created by the designer of the API, or one which other implementations of the API are expected to be compared against. For example, an API might describe how an application may call an icon-drawing function within a graphics library, for display icons in the screen. A programmer can write a program which calls the icon-drawing function described in the API. When compiled the compiler will link against the API. When executed, the program will use the implemention of the API (a library) to draw the icon. Uses Computer programs often use the operating system's API to allocate memory and access files. Many types of systems and applications provide and implement APIs, such as graphics systems, databases, networks, web services, and even some computer games. In many instances, an API is often a part of a Software development kit (SDK). An SDK may include an API as well as other tools and perhaps even some hardware, so the two terms are not strictly interchangeable. Design Models There are various design models for APIs. Interfaces intended for the fastest execution often consist of sets of functions, procedures, variables and data structures. However, other models exist as well, such as the interpreter used to evaluate expressions in ECMAScript/JavaScript or in the abstraction layer, which relieves the programmer from needing to know how the functions of the API relate to the lower levels of abstraction. This makes it possible to redesign or improve the functions within the API without breaking code that relies on it. Implementation An API that does not require royalties for access and usage is called "open." The APIs provided by Free software (such as all software distributed under the GNU General Public License, for example glibc), are open by definition, since anyone can look into the source of the software and figure out the API. Although usually authoritative "reference implementations" exist for an API (such as Microsoft Windows for the Win32 API), there's nothing that prevents the creation of additional implementations. For example, most of the Win32 API can be provided under a UNIX system using software called Wine. It is generally lawful to analyze API implementations in order to produce a compatible one. This technique is called reverse engineering for the purposes of interoperability. However, the legal situation is often ambiguous, so that care and legal counsel should be taken before the reverse engineering is carried out. For example, while APIs usually do not have an obvious legal status, they might include patents that may not be used until the patent holder gives permission. All text used in this article is available under the GNU Free Documentation License. It uses material from the Wikipedia article "Application Programming Interface".
|
||
| © 2010 Adaptive Computing | |||