Api (інтерфейс програмування додатків) - програми - каталог статей - progfile project

Інтерфейс прикладного програмування (іноді інтерфейс програмування додатків) (англ. Application Programming Interface, API [ей-пі-ай]) - набір готових класів, функцій, структур і констант, що надаються додатком (бібліотекою, сервісом) для її використання в зовнішніх програмних продуктах .

API як засіб інтеграції додатків

API визначає функціональність, яку надає програма (модуль, бібліотека), при цьому API дозволяє абстрагуватися від того, як саме ця функціональність реалізована.

Якщо програму (модуль, бібліотеку) розглядати як чорний ящик, то API - це безліч «ручок», які доступні користувачеві даного ящика, які він може крутити і смикати.

Програмні компоненти взаємодіють один з одним за допомогою API. При цьому зазвичай компоненти утворюють ієрархію - високорівневі компоненти використовують API низькорівневих компонентів, а ті, в свою чергу, використовують API ще більш низькорівневих компонентів.

За таким принципом побудовані протоколи передачі даних по Internet. Стандартний протокол Internet (мережева модель OSI) містить 7 рівнів (від фізичного рівня передачі пакетів біт до рівня протоколів програм, подібних протоколів HTTP і IMAP). Кожен рівень користується функціональністю попереднього рівня передачі даних і, в свою чергу, надає потрібну функціональність наступного рівня.

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

API бібліотеки функцій і класів включає в себе опис сигнатур і семантики функцій.

Наприклад, в мові програмування Сі ++ проста функція однозначно розпізнається компілятором по її імені та послідовності типів її аргументів, що становить сигнатуру функції в цій мові. Якщо функція є методом деякого класу, то в сигнатурі братиме участь і ім'я класу.

У мові програмування Java сигнатуру методу складає його ім'я і послідовність типів параметрів; тип значення в сигнатурі не бере.

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

API операційних систем. Проблеми, пов'язані з різноманіттям API

Практично всі операційні системи (Unix, Windows, Mac OS, і т. Д.) Мають API, за допомогою якого програмісти можуть створювати додатки для цієї операційної системи. Головний API операційних систем - це безліч системних викликів.

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

З іншого боку, відмінності в API різних операційних систем істотно ускладнюють перенесення додатків між платформами. Існують різні методи обходу цієї складності - написання «проміжних» API (API графічних інтерфейсів Qt, Gtk, і т. П.), Написання бібліотек, які відображають системні виклики однієї ОС в системні виклики інший ОС (такі середовища виконання, як Wine, cygwin , і т. п.), введення стандартів кодування в мовах програмування (наприклад, стандартна бібліотека мови C), написання різних мов, що реалізуються на різних платформах (sh, python, perl, php, tcl, Java, і т. д.)

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

При цьому практично на кожному з рівнів реально існує кілька можливих альтернативних API. Наприклад: ми могли б писати вихідний документ не на HTML, а на LaTeX, для відображення могли б використовувати будь-який браузер. Різні браузери, взагалі кажучи, використовують різні HTML-бібліотеки, і, крім того, все це може бути (взагалі кажучи) зібрано з використанням різних бібліотек примітивів і на різних операційних системах.

Основними труднощами існуючих багаторівневих систем API, таким чином, є:
Складність портування програмного коду з однієї системи API на іншу (наприклад, при зміні ОС);
Втрата функціональності при переході з нижчого рівня на вищий. Грубо кажучи, кожен «шар» API створюється для полегшення виконання деякого стандартного набору операцій. Але при цьому реально не може, або стає принципово неможливим виконання деяких інших операцій, які надає більш низький рівень API.

Найбільш відомі API


API операційних систем
POSIX
Windows API
Cocoa
Linux Kernel API
OS / 2 API
Amiga ROM Kernel

API графічних інтерфейсів
OpenGL
OpenVG
X11
Qt
GTK
Motiff
Tk
GDI
GDI +
Direct3D (частина DirectX)
DirectDraw (частина DirectX)
Zune
SDL

API звукових інтерфейсів
DirectSound (частина DirectX)
DirectMusic (частина DirectX)
OpenAL

API аутентифікаційних систем
BioAPI
PAM

Схожі статті