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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Визначення[ред.ред. код]

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

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

Приклади API[ред.ред. код]

Детальний опис[ред.ред. код]

Наприклад, в мові Java, якщо програміст хоче використовувати клас "Scanner" (клас, який зчитує інформацію від користувача у програмах, орієнтованих на текстові операції), він би імпортував бібліотеку "java.util.Scanner", щоб використовувати сканер класу. Це приклад з 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#, etc...), вбудовані в довідкову систему 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, про те, що даний програмний інтерфейс не може бути захищеним авторськими правами у США.

Див. також[ред.ред. код]

Посилання[ред.ред. код]


Комп'ютер Це незавершена стаття про комп'ютери.
Ви можете допомогти проекту, виправивши або дописавши її.