Прикладний програмний інтерфейс


Прикладни́й програ́мний інтерфе́йс (інтерфейс програмування застосунків, інтерфейс прикладного програмування) (англ. Application Programming Interface, API) — набір визначень підпрограм, протоколів взаємодії та засобів для створення програмного забезпечення. Спрощено - це набір чітко визначених методів для взаємодії різних компонентів. API надає розробнику засоби для швидкої розробки програмного забезпечення. API може бути для веб-базованих систем, операційних систем, баз даних, апаратного забезпечення, програмних бібліотек.




Зміст





  • 1 Визначення


  • 2 Приклади API


  • 3 Детальний опис

    • 3.1 Документація


    • 3.2 Прикладний програмний інтерфейс у об'єктно-орієнтованих мовах


    • 3.3 Бібліотеки і платформи прикладних програмних інтерфейсів


    • 3.4 Прикладний програмний інтерфейс та протоколи


    • 3.5 Прикладний програмний інтерфейс спільного використання з допомогою віртуальної машини



  • 4 Прикладний програмний інтерфейс у WEB


  • 5 Політика впровадження


  • 6 Прикладні програмні інтерфейси та авторські права


  • 7 Див. також


  • 8 Посилання




Визначення |


Одним з найпоширеніших призначень API є надання набору широко використовуваних функцій, наприклад для малювання вікна чи іконок на екрані. Програмісти використовують переваги API у функціональності, таким чином їм не доводиться розробляти все з нуля. API є абстрактним поняттям — програмне забезпечення, що пропонує деякий API, часто називають реалізацією (англ. implementation) даного API. У багатьох випадках API є частиною набору розробки програмного забезпечення, водночас, набір розробки може включати як API, так і інші інструменти/апаратне забезпечення, отже ці два терміни не є взаємозамінювані.


Високорівневі API часто програють y гнучкості. Виконання деяких функцій нижчого рівня стає набагато складнішим, або навіть неможливим.



Приклади API |


  • Windows API

  • OpenGL

  • DirectX

  • GDI

  • MARF


Детальний опис |


Наприклад, в мові Java, якщо програміст хоче використовувати клас "Scanner" (клас, який зчитує інформацію від користувача у програмах, орієнтованих на текстові операції), він імпортує бібліотеку "java.util.Scanner", щоб використовувати методи класу "Scanner" (у даному прикладі nextLine() i close() ). Це приклад з API, що дозволяє взаємодіяти з бібліотеками в мові Java.


import java.util.Scanner;

public class Test
public static void main(String args)
System.out.println("Enter your name: ");
Scanner input = new Scanner(System.in);
String name = input.nextLine();
System.out.println("Your name is " + name + ".");
input.close();





Документація |


Безліч середовищ розробки програмного забезпечення надають документацію, пов'язану з ППІ (Прикладним Програмним Інтерфейсом) у деяких цифрових форматах, наприклад, Perl поставляється разом з програмою perldoc:


$ perldoc -f sqrt
sqrt EXPR
sqrt #Return the square root of EXPR. If EXPR is omitted, returns
#square root of $_. Only works on non-negative operands, unless
#you've loaded the standard Math::Complex module.

Мова python надає інструмент pydoc:


$ pydoc math.sqrt
Help on built-in function sqrt in math:
math.sqrt = sqrt(...)
sqrt(x)
Return the square root of x.

Java поставляється з документацією організованою в HTML сторінки (JavaDoc формат), в той час як Microsoft розподіляє ППІ документацію для своїх мов (Visual C++, C#, Visual Basic, F#, і т. ін.), вбудовані в довідкову систему Visual Studio.



Прикладний програмний інтерфейс у об'єктно-орієнтованих мовах |


В об'єктно-орієнтованих мовах, прикладний програмний інтерфейс зазвичай включає в себе опис набору визначень класу, з набором форм поведінки, пов'язаних з цими класами. Це абстрактне поняття пов'язане з реальними функціями, які надані або надаватимуться, класами, які реалізуються в методах класу.


Прикладний програмний інтерфейс в даному випадку можна розглядати як сукупність всіх методів, які публічно доступні в класах (зазвичай званий інтерфейс класу). Це означає, що прикладний програмний інтерфейс вказує методи, за допомогою яких взаємодіє з об'єктами, отриманими з визначень класів і обробляє їх.


У більш загальному плані можна визначити Прикладний Програмний Інтерфейс як сукупність усіх видів об'єктів, які можна вивести з визначення класу, і пов'язаних з ними можливих варіантів поведінки.


Наприклад: клас, що представляє Stack, може просто виставити публічно два методи Push() (для додавання нового елемента в стек ) і Pop() (для вилучення останнього пункту, ідеально розташований на вершині стека).


У цьому випадку Прикладний Програмний Інтерфейс може бути інтерпретованим як два методи pop() і push(), або, більш широко, використовується варіант, коли можна використовувати елемент типу Stack, який реалізує поведінку стека, надаючи йому можливість для додавання / видалення елементів з вершини. Друга інтерпретація видається більш доречною в дусі об'єктно-орієнтованого підходу.


Якість документації, пов'язаної з Прикладним Програмним Інтерфейсом, є часто ключовим фактором, що визначає його успішність з точки зору простоти використання.



Бібліотеки і платформи прикладних програмних інтерфейсів |


ППІ, як правило, пов'язаний із бібліотеками програмного забезпечення: ППІ описує і вказує очікувану поведінку в той час, як бібліотека є фактичною реалізацією даного набору правил. Один ППІ може мати декілька реалізацій (або жодної, будучи абстрактним) у вигляді різних бібліотек, які мають такий же інтерфейс.


Прикладний програмний інтерфейс також може бути пов'язаним з платформами програмування: платформа може бути заснована на кількох бібліотеках реалізує декілька інтерфейсів ППІ, але на відміну від звичайного використання ППІ, доступ до поведінки вбудований в платформу опосередкований шляхом розширення його змісту новими класами і вставлений в саму платформу. Крім того, загальний потік управління програми може бути під контролем абонента.



Прикладний програмний інтерфейс та протоколи |


Прикладний програмний інтерфейс може бути також реалізацією протоколу.


Коли ППІ реалізує протокол, він може бути заснованим на проксі-методах віддалених викликів, що засновані на протоколі зв'язку. Роль ППІ може заключатися саме в тому, щоб приховати деталі транспортного протоколу. Наприклад: RMI є ППІ, який реалізує протокол або JRMP IIOP як RMI-IIOP.


Протоколи, як правило, розподіляються між різними технологіями і зазвичай дозволяють різним технологіям обмінюватися інформацією, діючи як абстракція між двома світами. ППІ, як правило, є специфічним для конкретної технології: звідси, інтерфейси даної мови не можуть бути використані на інших мовах, якщо виклики функції не будуть перетворені з конкретної адаптації бібліотеки.



Прикладний програмний інтерфейс спільного використання з допомогою віртуальної машини |


Деякі мови, серед яких такі, що працюють на віртуальних машинах (наприклад: мови, сумісні з NET CLI середовища CLR і JVM сумісних мов у віртуальній машині Java) можуть ділитися програмними інтерфейсами.


У цьому випадку віртуальна машина дозволяє мові взаємодії завдяки спільному знаменнику віртуальної машини, що абстрагується від конкретної мови, використовувати проміжний байт-код і його мову.



Прикладний програмний інтерфейс у WEB |


При використанні прикладного програмного інтерфейсу в контексті веб-розробки, як правило, ППІ визначається набором повідомлень запиту HTTP, також визначається структура повідомлень-відповідей, зазвичай у розширенні мови розмітки XML або в форматі об'єктного запису JavaScript (JSON). У той час як прикладний програмний інтерфейс у Web історично був практично синонімом для веб-служби, останнім часом тенденція змінилась (так званий Web 2.0) на відхід від Simple Object Access Protocol (SOAP) на основі веб-сервісів і сервіс-орієнтованої архітектури (SOA) на більш прямі передачі репрезентативного стану (REST) стилів веб-ресурсів та ресурсів-орієнтованої архітектури (ROA). Частина цієї тенденції пов'язана з рухом Семантичного веб-ресурсу до Опису Платформ (RDF), Концепції розвитку веб-технологій інженерних онтологій. Прикладні програмні інтерфейси у Web, що дозволяють комбінувати декількома прикладними програмними інтерфейсами в нові додатки називають гібридними.



Політика впровадження |


Існує два основних варіанти впровадження прикладного програмного інтерфейсу:


1. Захист інформації про програмний інтерфейс від широкого загалу. Наприклад, компанія Sony дозволила розробляти програмний інтерфейс для PlayStation 2 лише ліцензованим розробникам. Це дозволило Sony контролювати, хто розробляв ігри для PlayStation 2. Такий варіант дозволяє компаніям переважаючий контроль якості за випуском продукції, і також надає можливості для додаткового доходу від ліцензування.


2. Розробка програмного інтерфейсу існує також у вільному доступі. Наприклад, компанія Microsoft робить програмний інтерфейс до Microsoft Windows загально доступним, а компанія Apple, у свою чергу, впроваджує прикладні програмні інтерфейси Carbon та Cocoa, для того, щоб дозволити писати програмне забезпечення під свої платформи.



Прикладні програмні інтерфейси та авторські права |


У 2010 році Oracle подала до суду на Google, за поширення нової версії Java, вбудованої у нову версію ОС Android без дозволу на використання JavaAPI, хоча аналогічний договір був наданий на використання проекту OpenJDK. Суддя виніс рішення у справі Oracle проти Google, про те, що даний програмний інтерфейс не може бути захищеним авторськими правами у США.



Див. також |


  • Комп'ютерна термінологія

  • Операційна система

  • Застосунок

  • Додаток


Посилання |


  • Wikipedia API




Popular posts from this blog

AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

Алба-Юлія

Захаров Федір Захарович