Meta tags:
Headings (most frequently used words):
api, apis, contents, purpose, history, of, the, term, types, design, release, policies, documentation, dispute, over, copyright, protection, for, examples, see, also, references, further, reading, external, links, libraries, and, frameworks, operating, systems, remote, web, public, implications,
Text of the page (most frequently used words):
the (266), api (155), and (97), for (71), apis (61), that (56), software (48), retrieved (44), interface (38), web (35), programming (30), with (28), from (28), application (28), use (27), documentation (25), computer (23), system (23), are (23), this (21), google (21), 2016 (21), operating (20), java (20), can (20), 978 (20), oracle (19), isbn (19), data (17), 2020 (17), developers (16), object (16), language (16), not (16), term (16), may (15), such (15), also (14), services (14), interfaces (13), systems (13), doi (13), used (13), design (13), remote (13), other (12), library (12), public (12), was (11), microsoft (11), based (11), its (11), example (11), user (10), access (10), court (10), what (10), july (10), when (10), but (10), allow (10), code (9), wikipedia (9), inc (9), control (9), network (9), oriented (9), engineering (9), have (9), part (9), pdf (9), framework (9), how (9), service (9), applications (9), programmer (9), one (9), programs (9), all (8), case (8), february (8), tools (8), information (8), 2011 (8), libraries (8), new (8), main (8), were (8), has (8), their (8), parts (8), only (8), called (8), using (7), time (7), different (7), protection (7), history (7), content (7), program (7), than (7), would (7), computers (7), 2019 (7), 2012 (7), archived (7), original (7), martin (7), conference (7), august (7), 2015 (7), into (7), media (7), computing (7), windows (7), implementation (7), types (7), between (7), specification (7), weather (7), search (6), september (6), communication (6), international (6), file (6), 2021 (6), like (6), supreme (6), 2014 (6), more (6), 2013 (6), 2018 (6), 2010 (6), s2cid (6), 2009 (6), vol (6), which (6), internet (6), protocol (6), posix (6), database (6), graphics (6), common (6), set (6), because (6), these (6), will (6), written (6), while (6), view (5), about (5), page (5), description (5), memory (5), general (5), architectures (5), comparison (5), each (5), method (5), twitter (5), january (5), fair (5), over (5), ieee (5), december (5), 1145 (5), proceedings (5), source (5), architecture (5), standards (5), open (5), reilly (5), hardware (5), semantic (5), implement (5), provide (5), often (5), been (5), platform (5), well (5), could (5), details (5), changes (5), call (5), allows (5), idea (5), calls (5), hide (5), languages (4), toggle (4), contents (4), available (4), november (4), org (4), states (4), virtual (4), device (4), management (4), process (4), kernel (4), usage (4), format (4), links (4), known (4), out (4), machine (4), change (4), april (4), america (4), appeal (4), 1109 (4), empirical (4), knowledge (4), 4503 (4), workshop (4), uses (4), partner (4), apps (4), business (4), acm (4), modules (4), com (4), social (4), 2008 (4), 2000 (4), linux (4), 1987 (4), 2001 (4), 1968 (4), report (4), building (4), release (4), development (4), function (4), see (4), simple (4), many (4), including (4), purpose (4), did (4), copyright (4), article (4), itself (4), users (4), methods (4), describes (4), those (4), way (4), provides (4), internal (4), company (4), policies (4), rest (4), standard (4), another (4), paper (4), who (4), wilkes (4), wheeler (4), sensor (4), move (4), sidebar (4), table (3), policy (3), you (3), deprecated (3), parameters (3), 2025 (3), united (3), databases (3), journal (3), resource (3), space (3), just (3), distributed (3), instruction (3), carry (3), proposed (3), llc (3), institute (3), ruling (3), billion (3), android (3), end (3), monperrus (3), directives (3), should (3), 1007 (3), arxiv (3), reference (3), cite (3), research (3), science (3), akamai (3), financial (3), large (3), approaches (3), cloudflare (3), david (3), developer (3), get (3), 2017 (3), corba (3), gates (3), bill (3), interview (3), xxi (3), computerworld (3), october (3), frameworks (3), f2py (3), association (3), machinery (3), oclc (3), 4920 (3), scala (3), fielding (3), date (3), codd (3), 1974 (3), relational (3), english (3), afips (3), special (3), expanded (3), version (3), json (3), xml (3), early (3), document (3), binary (3), fortran (3), platforms (3), cross (3), examples (3), commands (3), same (3), had (3), possible (3), custom (3), read (3), include (3), classes (3), usually (3), number (3), presented (3), consistent (3), appearance (3), offers (3), intended (3), ways (3), state (3), trend (3), defined (3), considered (3), being (3), supported (3), particular (3), might (3), specific (3), companies (3), them (3), shipping (3), facilitate (3), current (3), related (3), multiple (3), resources (3), transfer (3), together (3), abi (3), much (3), compared (3), said (3), several (3), behavior (3), type (3), most (3), became (3), become (3), meaning (3), subroutine (3), connects (3), connection (3), mobile (2), legal (2), contact (2), privacy (2), text (2), under (2), additional (2), terms (2), site (2), organization (2), wikimedia (2), foundation (2), commons (2), 2026 (2), categories (2), errors (2), vague (2), ambiguous (2), articles (2), pages (2), short (2), wikidata (2), php (2), national (2), live (2), concepts (2), tape (2), fault (2), preemptive (2), sharing (2), thread (2), real (2), block (2), context (2), switch (2), embedded (2), features (2), share (2), list (2), external (2), there (2), calling (2), rather (2), url (2), convention (2), 2005 (2), talk (2), enable (2), form (2), fundamental (2), culture (2), objects (2), further (2), reading (2), lee (2), ars (2), technica (2), march (2), against (2), makes (2), law (2), copyrighted (2), judge (2), know (2), mezini (2), mira (2), working (2), mining (2), msr (2), annotations (2), study (2), patterns (2), measuring (2), help (2), citeseerx (2), james (2), usability (2), bibcode (2), cybercriminals (2), firms (2), analysis (2), scam (2), guava (2), core (2), notes (2), 642 (2), evolution (2), car (2), everywhere (2), private (2), strategy (2), ecosystem (2), 1994 (2), introduction (2), trends (2), place (2), anyway (2), mashups (2), june (2), javaworld (2), esber (2), barney (2), douglas (2), small (2), support (2), technology (2), guide (2), inversion (2), bindings (2), matthias (2), your (2), york (2), hyrum (2), extending (2), towards (2), roy (2), architectural (2), styles (2), jin (2), brenda (2), sahni (2), saurabh (2), shevat (2), amir (2), 2687 (2), designing (2), 1990 (2), networks (2), carl (2), malamud (2), sigmod (2), review (2), required (2), online (2), oxford (2), university (2), press (2), fall (2), joint (2), san (2), francisco (2), structures (2), techniques (2), bloch (2), joshua (2), restful (2), 2024 (2), product (2), needs (2), almost (2), modern (2), http (2), simply (2), work (2), references (2), name (2), request (2), shared (2), macintosh (2), cocoa (2), two (2), appeals (2), federal (2), circuit (2), granted (2), until (2), alsup (2), though (2), versions (2), having (2), any (2), permission (2), although (2), given (2), similar (2), cannot (2), widely (2), allowed (2), dispute (2), generate (2), typical (2), usages (2), contracts (2), metadata (2), behaviors (2), run (2), instance (2), updated (2), performance (2), take (2), works (2), traditional (2), files (2), via (2), structure (2), however (2), included (2), differs (2), found (2), client (2), need (2), words (2), significant (2), base (2), becomes (2), published (2), through (2), endpoints (2), sometimes (2), removed (2), backward (2), therefore (2), away (2), thus (2), stable (2), unstable (2), important (2), compatibility (2), implications (2), either (2), apple (2), directly (2), within (2), integrate (2), hiding (2), represents (2), modular (2), typically (2), messages (2), response (2), without (2), recent (2), concept (2), technologies (2), communities (2), representational (2), modification (2), proxy (2), result (2), corresponding (2), useful (2), abstraction (2), locally (2), manipulate (2), query (2), functions (2), local (2), invocation (2), compatible (2), older (2), advantage (2), field (2), ashton (2), tate (2), his (2), dos (2), conformant (2), implementing (2), unlike (2), built (2), contract (2), widespread (2), described (2), 1970s (2), located (2), procedure (2), expose (2), certain (2), first (2), free (2), display (2), make (2), invented (2), 1940s (2), cabinet (2), catalog (2), today (2), subroutines (2), even (2), upon (2), increase (2), message (2), bricks (2), joined (2), actions (2), portion (2), refer (2), person (2), pieces (2), here (2), upload (2), edit (2), norsk (2), bahasa (2), subsection (2), log (2), create (2), account (2), donate (2), menu (2), add, topic, cookie, statement, statistics, conduct, safety, contacts, disclaimers, apply, agree, registered, trademark, non, profit, creative, attribution, sharealike, license, rendered, parsoid, last, edited, utc, hidden, cs1, semi, protected, technical, https, index, title, oldid, 1374263741, yale, lux, israel, bnf, france, gnd, authority, pxe, cli, shell, usb, hal, supporting, partition, inode, attribute, defragmentation, boot, loader, storage, segmentation, ring, paging, bus, error, shortest, job, next, round, robin, multilevel, feedback, queue, fixed, priority, scheduling, algorithms, ipc, interrupt, cooperative, multitasking, loadable, module, driver, components, unikernel, rump, vkernel, multikernel, monolithic, microkernel, hybrid, exokernel, supercomputer, enough, hobbyist, disk, variants, timeline, forensic, audio, length, forrester, industry, task, cooking, recipe, opinion, textise, ondrejka, cory, 1853, keynoted, maritime, brussels, where, standardized, reporting, meteorological, let, efficient, accurate, collection, maury, innovation, argues, far, neutral, key, contemporary, understood, bucher, taina, 2047, 2390, issn, computational, intense, feeling, 956, petitioner, vkimber, lii, timothy, asks, overrule, disastrous, copyrights, decker, susan, bloomberg, businessweek, wins, revival, dollar, beats, rosenblatt, seth, cnet, sides, patent, justia, 1021, fed, cir, wired, tgdaily, says, drdobbs, bruch, marcel, 7th, repositories, 150, 1026918, 4244, 6802, 5463347, 141, subclassing, improve, reuse, sun, microsystems, eichberg, michael, tekes, elif, aware, 737, 8174618, s10664, 011, 9186, 1205, 6363, 703, maalej, waleed, robillard, 1282, tse, 1264, transactions, parnin, chris, treude, cristoph, 17751901, 0595, 1984701, 1984706, 2nd, parameter, dekel, uri, herbsleb, improving, pushing, 446, 4214, 2009icse, confr, 39d, school, takanashi, dean, venture, beat, attacking, mendez, diego, baudry, benoit, 13th, manipulation, 6890739, 4673, 5739, 6648183, 1307, 4062, evidence, scale, diversity, deprecate, github, shi, lin, zhong, hao, xie, tao, mingshu, lecture, 6603, 431, 19810, 19811, 3_29, 416, liew, zell, smashing, magazine, weissbrot, alison, adexchanger, boyd, mark, programmableweb, best, ternay, guerric, oct, boostcompanies, creating, economic, moat, garlan, shaw, mary, advances, parnas, 1972, 1058, 53856438, 361598, 361623, 1053, communications, criteria, decomposing, parr, ben, mashable, niccolai, world, enterprise, mashup, benslimane, djamal, schahram, dustdar, amit, sheth, mic, 110, 2008iic, 12e, 13b, generation, henning, michi, vinoski, steve, 1999, 201, 37927, addison, wesley, advanced, wilson, jeff, smart, proxies, rmi, bierhoff, kevin, cmu, compliance, stoughton, nick, usenix, update, lsb, manzi, jim, interviewed, paul, gillin, sr7, great, debate, 1986, favoritism, sr15, balancing, high, wire, success, west, joel, dedrick, jason, 112, pl00022278, standardization, rise, era, lewine, donald, 1991, associates, 937175, fayad, mohamed, fowler, emery, mastrangelo, luis, ponzanelli, luca, mocci, andrea, lanza, michele, hauswirth, nystrom, nathaniel, own, risk, unsafe, wild, 710, 3689, 2814270, 2814313, 695, sigplan, winters, titus, tom, manshreck, wright, eds, sebastopol, 1144086840, 8279, lessons, learned, sintes, tony, figueiredo, luiz, henrique, filho, waldemar, celes, 284, 59833827, 273, brazilian, seminar, ierusalimschy, roberto, odersky, spoon, lex, venners, www, artima, combining, dotsika, fefie, scaling, 342, 1016, ijinfomgt, 003, 335, phd, van, nostrand, reinhold, 294, 442, 00364, analyzing, novell, 1975, randall, rustin, ann, arbor, michigan, 113, 1175623233, 7418, 800297, 811532, lulu, 135, 68470, 527, theory, detailed, major, writings, subscription, participating, institution, membership, dictionary, cotton, ira, greatorex, frank, california, 544, 1175621908, 7899, 1476589, 1476661, 533, speech, qcon, infoq, brief, opinionated, washington, department, commerce, bureau, 1981, nbs, publication, 500, 81600004, lccn, 2027, mdp, 39015077587742, hdl, feasibility, jacobson, daniel, brail, greg, woods, dan, 4493, 2164, geewax, manning, 63835, 033, preface, love, clarke, steven, 2004, dobb, biehl, 5147, 3516, pedro, bruno, packt, publishing, 83763, 853, maintain, products, meet, lane, kin, hear, acronym, always, our, approach, readable, referred, around, long, began, taking, shape, 2000s, postman, intro, reddy, elsevier, 385004, perron, brian, luan, hui, zia, victor, bryan, goyal, kavin, demystifying, unlocking, power, models, 2410, 20211, xpcom, vendor, sdk, kit, raml, plugin, parsing, definitions, mangling, microservices, front, back, ends, foreign, dom, model, machines, broker, augmented, writer, testing, sdl, directmedia, layer, sapi, server, supports, multi, multiprocessing, unix, openmp, opengl, cpus, gpus, opencl, sound, openal, odbc, ehllapi, directx, carbon, interfacing, scsi, aspi, category, decided, favor, following, week, trial, jury, determined, reimplementation, constituted, vowed, decision, won, qualify, appealed, both, copyrightability, rulings, due, oral, hearings, delayed, covid, pandemic, overturned, question, whether, constitutes, left, unresolved, accept, claim, anyone, thereby, bar, others, writing, corporation, sued, acquired, reproduce, openjdk, project, ruled, victory, functional, symbols, copyrighting, william, driven, manner, observing, infer, then, templates, natural, mined, enriched, compiler, environment, handling, restrictions, limitations, covered, note, null, tends, comprehensive, challenge, writers, keep, carefully, potentially, yielding, bugs, safe, interest, clarity, scenarios, snippets, rationales, discussions, themselves, omitted, forms, instructional, documents, tutorials, variety, guides, functionalities, javadoc, pydoc, crucial, maintenance, traditionally, blogs, forums, websites, aiming, cover, everything, practical, purposes, contain, innovative, opportunistic, designers, element, diverse, annual, showcasing, growing, targeting, worldwide, witnessed, credential, violation, attacks, hostnames, 473, million, targeted, sector, organizations, declare, rescinded, means, candidate, modified, incompatible, transition, future, publicly, subject, documented, explicitly, soon, marked, beta, annotation, factor, stability, adding, break, clients, depend, releases, generally, accessible, everybody, providers, voxility, customers, resellers, infrastructure, ddos, stats, dashboard, controls, tokens, customer, status, validations, partners, approved, third, party, order, rides, exercise, quality, curating, revenue, stream, lyft, uber, vehicle, hire, releasing, members, impact, principle, role, enabling, understand, complexities, inside, attempts, expect, complex, piece, specifications, along, definition, extensible, markup, javascript, notation, added, ecommerce, focused, website, ordering, automatically, rates, enter, shipper, rate, historically, virtually, synonymous, moving, soa, direct, style, roa, movement, toward, rdf, promote, combination, created, dynamically, posted, locations, interact, ontology, soap, hypertext, maintaining, executed, invokes, remoting, acquires, return, value, regardless, connectivity, operate, remotely, appear, protocols, shown, strong, commitment, particularly, win32, newer, executable, setting, mode, unclear, richard, shaffer, situation, baseball, game, owns, bats, vendors, reportedly, received, smaller, told, him, rewrite, noted, successful, devote, mac, lotus, technologic, letter, berkeley, distribution, specify, specifies, aim, compiled, moreover, overall, flow, caller, hands, mechanism, normal, mediated, plugged, mapping, capabilities, implemented, binding, developing, generator, creation, python, swig, vary, depending, involved, consist, primarily, basic, routines, execute, handle, meanwhile, studies, show, tend, sufficient, does, matter, promise, observable, depended, somebody, class, lua, procedural, separation, compile, bytecode, single, implementations, none, abstract, prescribes, expected, actual, rules, recast, agents, ones, took, hold, exchange, kinds, broad, describing, overlap, proprietary, tim, berners, dissertation, outlined, contrasted, saw, commercial, adoption, beginning, continuing, now, irvine, again, dawn, 80s, programmers, wanted, elsewhere, 1990s, spread, competed, dcom, screenshot, nasa, observation, led, performing, tasks, technologist, introduced, treated, separately, professionals, observed, combined, sufficiently, rich, ansi, sparc, suffix, recorded, authors, describe, interaction, consisting, dealing, idiosyncrasies, replaced, independence, ing, people, coined, goal, independent, univac, 1108, book, contains, considers, latently, discovered, preparation, electronic, digital, british, scientists, worked, stored, organized, contained, incorporate, instructs, filing, punched, edsac, maurice, initially, facing, origin, still, reflected, broader, utility, diagram, 1978, proposing, expansion, beyond, alone, agreement, parties, provider, rely, remains, predictable, confidence, consider, transmitted, detect, conditions, reply, activates, forecasting, app, gathering, throughout, geographical, area, toys, analogous, they, composing, joining, integration, lego, metaphorically, connect, interlocking, blocks, designed, exposes, needed, hides, simplifies, opens, interactions, outside, communicate, across, boundary, mutually, agreed, signals, entities, visible, hood, originated, emerge, 1960s, 70s, exposing, find, keeping, later, pair, allowing, among, interoperability, contrast, incorporating, made, act, requests, explains, defines, offering, build, meets, redirects, apihelp, disambiguation, redirected, encyclopedia, item, mediawiki, projects, printable, download, print, export, legacy, parser, shortened, permanent, link, მარგალური, tiếng, việt, oʻzbekcha, ўзбекча, اردو, українська, türkçe, tagalog, ไทย, தமிழ், kiswahili, svenska, српски, srpski, shqip, slovenščina, slovenčina, srpskohrvatski, српскохрватски, русский, română, runa, simi, português, piemontèis, polski, bokmål, nynorsk, nederlands, melayu, монгол, മലയാളം, latviešu, lietuvių, 한국어, қазақша, ქართული, 日本語, italiano, ido, igbo, indonesia, հայերեն, magyar, hrvatski, हिन्दी, עברית, hausa, galego, gaeilge, nordfriisk, français, suomi, فارسی, euskara, eesti, español, esperanto, ελληνικά, deutsch, dansk, čeština, کوردی, català, bosanski, বাংলা, български, беларуская, boarisch, azərbaycanca, asturianu, العربية, top, personal, community, portal, learn, contribute, random, events, navigation, jump,
Text of the page (random words):
icular pair of systems or it may be a shared standard allowing interoperability among many systems the term api is often used to refer to web apis 3 which allow communication between computers that are joined by the internet there are also apis for programming languages software libraries computer operating systems and computer hardware apis originated in the 1940s though the term did not emerge until the 1960s and 70s purpose an api opens a software system to interactions from the outside it allows two software systems to communicate across a boundary an interface using mutually agreed upon signals 4 in other words an api connects software entities together unlike a user interface an api is typically not visible to users it is an under the hood portion of a software system used for machine to machine communication 5 a well designed api exposes only objects or actions needed by software or software developers it hides details that have no use this abstraction simplifies programming 6 metaphorically apis connect software like interlocking blocks building software using apis has been compared to using building block toys such as lego bricks software services or software libraries are analogous to the bricks they may be joined together via their apis composing a new software product 7 the process of joining is called integration 4 as an example consider a weather sensor that offers an api when a certain message is transmitted to the sensor it will detect the current weather conditions and reply with a weather report the message that activates the sensor is an api call and the weather report is an api response 8 a weather forecasting app might integrate with a number of weather sensor apis gathering weather data from throughout a geographical area an api is often compared to a contract it represents an agreement between parties a service provider who offers the api and the software developers who rely upon it if the api remains stable or if it changes only in predictable ways developers confidence in the api will increase this may increase their use of the api 9 history of the term a diagram from 1978 proposing the expansion of the idea of the api to become a general programming interface beyond application programs alone 10 the term api initially described an interface only for end user facing programs known as application programs this origin is still reflected in the name application programming interface today the term is broader including also utility software and even hardware interfaces 11 the idea of the api is much older than the term itself british computer scientists maurice wilkes and david wheeler worked on a modular software library in the 1940s for edsac an early computer the subroutines in this library were stored on punched paper tape organized in a filing cabinet this cabinet also contained what wilkes and wheeler called a library catalog of notes about each subroutine and how to incorporate it into a program today such a catalog would be called an api or an api specification or api documentation because it instructs a programmer on how to use each subroutine that the programmer needs 11 wilkes and wheeler s book the preparation of programs for an electronic digital computer contains the first published api specification joshua bloch considers that wilkes and wheeler latently invented the api because it is more of a concept that is discovered than invented 11 although the people who coined the term api were implementing software on a univac 1108 the goal of their api was to make hardware independent programs possible 12 the term application program interface without an ing suffix is first recorded in a paper called data structures and techniques for remote computer graphics presented at an afips conference in 1968 13 11 the authors of this paper use the term to describe the interaction of an application a graphics program in this case with the rest of the computer system a consistent application interface consisting of fortran subroutine calls was intended to free the programmer from dealing with idiosyncrasies of the graphics display device and to provide hardware independence if the computer or the display were replaced 12 the term was introduced to the field of databases by c j date 14 in a 1974 paper called the relational and network approaches comparison of the application programming interface 15 an api became a part of the ansi sparc framework for database management systems this framework treated the application programming interface separately from other interfaces such as the query interface database professionals in the 1970s observed these different interfaces could be combined a sufficiently rich application interface could support the other interfaces as well 10 this observation led to apis that supported all types of programming not just application programming by 1990 the api was defined simply as a set of services available to a programmer for performing certain tasks by technologist carl malamud 16 screenshot of web api documentation written by nasa the idea of the api was expanded again with the dawn of remote procedure calls and web apis as computer networks became common in the 1970s and 80s programmers wanted to call libraries located not only on their local computers but on computers located elsewhere these remote procedure calls were well supported by the java language in particular in the 1990s with the spread of the internet standards like corba com and dcom competed to become the most common way to expose api services 17 roy fielding s dissertation architectural styles and the design of network based software architectures at uc irvine in 2000 outlined representational state transfer rest and described the idea of a network based application programming interface that fielding contrasted with traditional library based apis 18 xml and json web apis saw widespread commercial adoption beginning in 2000 and continuing as of 2021 the web api is now the most common meaning of the term api 3 the semantic web proposed by tim berners lee in 2001 included semantic apis that recast the api as an open distributed data interface rather than a software behavior interface 19 proprietary interfaces and agents became more widespread than open ones but the idea of the api as a data interface took hold because web apis are widely used to exchange data of all kinds online api has become a broad term describing much of the communication on the internet 17 when used in this way the term api has overlap in meaning with the term communication protocol types libraries and frameworks the interface to a software library is one type of api the api describes and prescribes the expected behavior a specification while the library is an actual implementation of this set of rules a single api can have multiple implementations or none being abstract in the form of different libraries that share the same programming interface the separation of the api from its implementation can allow programs written in one language to use a library written in another for example because scala and java compile to compatible bytecode scala developers can take advantage of any java api 20 api use can vary depending on the type of programming language involved an api for a procedural language such as lua could consist primarily of basic routines to execute code manipulate data or handle errors while an api for an object oriented language such as java would provide a specification of classes and its class methods 21 22 hyrum s law states that with a sufficient number of users of an api it does not matter what you promise in the contract all observable behaviors of your system will be depended on by somebody 23 meanwhile several studies show that most applications that use an api tend to use a small part of the api 24 language bindings are also apis by mapping the features and capabilities of one language to an interface implemented in another language a language binding allows a library or service written in one language to be used when developing in another language 25 tools such as swig and f2py a fortran to python interface generator facilitate the creation of such interfaces 26 an api can also be related to a software framework a framework can be based on several libraries implementing several apis but unlike the normal use of an api the access to the behavior built into the framework is mediated by extending its content with new classes plugged into the framework itself moreover the overall program flow of control can be out of the control of the caller and in the framework s hands by inversion of control or a similar mechanism 27 28 operating systems an api can specify the interface between an application and the operating system 29 posix for example specifies a set of common apis that aim to enable an application written for a posix conformant operating system to be compiled for another posix conformant operating system linux and berkeley software distribution are examples of operating systems that implement the posix apis 30 microsoft has shown a strong commitment to a backward compatible api particularly within its windows api win32 library so older applications may run on newer versions of windows using an executable specific setting called compatibility mode 31 how much microsoft developers access to the company s operating systems internal apis is an advantage is unclear richard a shaffer of technologic computer letter in 1987 compared the situation to a baseball game in which microsoft owns all the bats and the field 32 and large vendors like lotus development and ashton tate reportedly received information about ms dos 5 0 that smaller software developers did not 33 ed esber of ashton tate said in a 1987 interview however that bill gates told him that his developers sometimes had to rewrite software based on early apis gates noted in the interview that microsoft s apple macintosh applications were more successful than those for ms dos because his company did not have to also devote resources to mac os 34 an api differs from an application binary interface abi in that an api is source code based while an abi is binary based for instance posix provides apis while the linux standard base provides an abi 35 36 remote apis remote apis allow developers to manipulate remote resources through protocols specific standards for communication that allow different technologies to work together regardless of language or platform for example the java database connectivity api allows developers to query many different types of databases with the same set of functions while the java remote method invocation api uses the java remote method protocol to allow invocation of functions that operate remotely but appear local to the developer 37 38 therefore remote apis are useful in maintaining the object abstraction in object oriented programming a method call executed locally on a proxy object invokes the corresponding method on the remote object using the remoting protocol and acquires the result to be used locally as a return value a modification of the proxy object will also result in a corresponding modification of the remote object 39 web apis main article web api when used in the context of web development an api is typically defined as a set of specifications such as hypertext transfer protocol http request messages along with a definition of the structure of response messages usually in an extensible markup language xml or javascript object notation json format an example might be a shipping company api that can be added to an ecommerce focused website to facilitate ordering shipping services and automatically include current shipping rates without the site developer having to enter the shipper s rate table into a web database while web api historically has been virtually synonymous with web service the recent when trend so called web 2 0 has been moving away from simple object access protocol soap based web services and service oriented architecture soa towards more direct representational state transfer rest style web resources and resource oriented architecture roa 40 part of this trend is related to the semantic web movement toward resource description framework rdf a concept to promote web based ontology engineering technologies web apis allow the combination of multiple apis into new applications known as mashups 41 in the social media space web apis have allowed web communities to facilitate sharing content and data between communities and applications in this way content that is created in one place can be dynamically posted and updated to multiple locations on the web 42 for example twitter s rest api allows developers to access core twitter data and the search api provides methods for developers to interact with twitter search and trends data 43 design the design of an api has significant impact on its usage 6 the principle of information hiding describes the role of programming interfaces as enabling modular programming by hiding the implementation details of the modules so that users of modules need not understand the complexities inside the modules 44 thus the design of an api attempts to provide only the tools a user would expect 6 the design of programming interfaces represents an important part of software architecture the organization of a complex piece of software 45 release policies apis are one of the more common ways technology companies integrate those that provide and use apis are considered as being members of a business ecosystem 46 the main policies for releasing an api are 47 private the api is for internal company use only partner only specific business partners can use the api for example vehicle for hire companies such as uber and lyft allow approved third party developers to directly order rides from within their apps this allows the companies to exercise quality control by curating which apps have access to the api and provides them with an additional revenue stream 48 public the api is available for use by the public for example microsoft makes the windows api public and apple releases its api cocoa so that software can be written for their platforms not all public apis are generally accessible by everybody for example internet service providers like cloudflare or voxility use restful apis to allow customers and resellers access to their infrastructure information ddos stats network performance or dashboard controls 49 access to such apis is granted either by api tokens or customer status validations 50 public api implications an important factor when an api becomes public is its interface stability changes to the api for example adding new parameters to a function call could break compatibility with the clients that depend on that api 51 when parts of a publicly presented api are subject to change and thus not stable such parts of a particular api should be documented explicitly as unstable ...
|