Interface de programmation

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir API.

En informatique, une interface de programmation (souvent désignée par le terme API pour Application Programming Interface) est un ensemble normalisé de classes, de méthodes ou de fonctions qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels. Elle est offerte par une bibliothèque logicielle ou un service web, le plus souvent accompagnée d'une description qui spécifie comment des programmes consommateurs peuvent se servir des fonctionnalités du programme fournisseur.

Dans l'industrie contemporaine du logiciel, les applications informatiques se servent de nombreuses interfaces de programmation, la programmation se fait en réutilisant des briques de fonctionnalités fournies par des logiciels tiers. Cette construction par assemblage nécessite pour le programmeur de connaître la manière d’interagir avec les autres logiciels, qui dépend de leur interface de programmation. Le programmeur n'a pas besoin de connaître les détails de la logique interne du logiciel tiers, et celle-ci n'est généralement pas documentée par le fournisseur.

Des logiciels tels que les systèmes d'exploitation, les systèmes de gestion de base de données, les langages de programmation, ou les serveurs d'applications comportent une interface de programmation.

Description[modifier | modifier le code]

Une interface de programmation est une façade clairement délimitée par laquelle un logiciel offre des services à d'autres logiciels[1]. L'objectif est de fournir une porte d'accès à une fonctionnalité en cachant les détails de la mise en œuvre[1]. Une interface de programmation comporte typiquement des classes, des méthodes ou des fonctions, des types de données et des constantes[1]. Une interface de programmation est typiquement mise en œuvre par une bibliothèque logicielle qui fournit une solution à un problème informatique en faisant abstraction de son fonctionnement[1].

La description de l'interface de programmation spécifie comment des clients peuvent interagir avec un logiciel[1] en mettant l'accent sur les fonctionnalités offertes par le logiciel et en cachant les détails de son fonctionnement[1]. Une interface de programmation peut être utilisée dans de nombreux programmes et sert alors de jeu de construction, offrant des pièces de fonctionnalités qui peuvent être incorporées dans des applications[1]. Les programmeurs créent des interfaces de programmation pour les autres programmeurs, pour l'industrie informatique, mais aussi parfois pour leurs propres besoins[1].

Utilisation[modifier | modifier le code]

La création et l'utilisation des interfaces de programmation est un sujet incontournable de la programmation contemporaine[1]. Une application se sert typiquement de nombreuses interfaces de programmation; mises en œuvre par des bibliothèques logicielles qui peuvent elles-mêmes se servir d'autres interfaces de programmation[1].

En architecture orientée services les applications peuvent dépendre de fonctionnalités tierces offertes par des logiciels via des interfaces de programmation mises en œuvre par des services web[1].

Les interfaces de programmation permettent de gagner du temps par la collaboration et la spécialisation des équipes de développement de logiciel. Par exemple aujourd'hui plus personne n'écrit un SGBD maison pour une application informatique. Les programmeurs réutilisent les SGBD existants dans le commerce, fournis par des entreprises spécialisées dans ce type de produit, et se concentrent sur la logique propre à leur application. De nombreux produits d'infrastructure sont ainsi disponibles sous forme de framework ou de bibliothèque[2].

Une interface de programmation permet par exemple à un programme d'accéder aux services offerts par le système d'exploitation qui héberge le programme. L'interface sockets est un exemple classique d'interface de programmation qui permet à un programme d'exploiter les possibilités de la couche réseau du système d'exploitation[3].

Une des interfaces les plus connues est la Windows API. C'est une collection de fonctions, de types de données et de constantes, en langage de programmation C, qui permet à des programmeurs de créer des applications pour les systèmes d'exploitation Windows. Elle offre la possibilité de manipuler des fichiers, des processus, communiquer par les réseaux et manipuler des interfaces graphiques[1].

Le marché[modifier | modifier le code]

Dans l'industrie contemporaine du logiciel, les applications informatiques se servent typiquement de nombreux logiciels tiers tels que par exemple un système d'exploitation, des bibliothèques standard, des serveurs d'application. Chacun de ces produits a sa propre interface de programmation. Ainsi chaque programmeur impliqué dans le développement de tels produits est impliqué, consciemment ou non, dans le business des interfaces de programmation[2]. Du point de vue business une interface de programmation est un contrat par lequel un fournisseur de fonctionnalité décrit son offre, les fonctionnalités qu'il offre et les éventuelles limitations[4].

La construction par assemblage de logiciels nécessite pour le constructeur de savoir comment les pièces interagissent entre elles. Celui qui réalise l'assemblage n'a pas besoin de connaitre tous les détails des mécanismes internes d'une pièce, du moment qu'il connait son interface de programmation[2]. L'interface de programmation est le minimum qu'un programmeur a besoin de connaitre pour pouvoir se servir d'une pièce de logiciel tierce. Pour une fonction c'est le nom de celle-ci, les paramètres et le type du résultat, ainsi que les effets observables de la fonction[5].

Une interface de programmation est distribuée sur le marché comme un produit logiciel ordinaire, régulièrement amélioré. La mise en œuvre des fonctionnalités utilisables à travers l'interface de programmation peut changer régulièrement, tout en maintenant la façade conforme au contrat[4].

Exemples d'API[modifier | modifier le code]

  • Graph API de Facebook
  • Google Maps API

Exemples en fonction du domaine applicatif[modifier | modifier le code]

Fonctions des interfaces de programmation en Java[modifier | modifier le code]

Les interfaces de programmation peuvent avoir plusieurs fonctions. Par exemple, dans J2EE, on trouve les fonctions suivantes :

Des API peuvent servir à simplifier l'accès à d'autres API

  • API JAXP permet facilement l'accès à différentes implémentations des API SAX et DOM (XML4J, Apache Xerces).

Données véhiculées[modifier | modifier le code]

Les interfaces de programmation peuvent véhiculer des métadonnées.

Exemples : Oracle 9i Metadata API et Relational metadata API de SAP
Exemple du langage Java : API d'accès et de traitement des données enregistrées dans une source de données
Exemple : Métadonnées dans les API de SAS
Exemple : DB2 Cube
Exemple : Loading metadata to Livelink using Bulk Loader API's (en)
  • etc.

Notes et références[modifier | modifier le code]

  1. a, b, c, d, e, f, g, h, i, j, k et l (en)Martin Reddy, API Design for C++, Elsevier - 2011,(ISBN 9780123850041)
  2. a, b et c (en)Jaroslav Tulach, Practical API Design: Confessions of a Java Framework Architect, Apress - 2008,(ISBN 9781430209744)
  3. (en)Joe Casad, Sams Teach Yourself Tcp/Ip in 24 Hours, Sams Publishing - 2004,(ISBN 9780672325656)
  4. a et b (en)Daniel Jacobson - Dan Woods - Greg Brail, APIs: A Strategy Guide, O'Reilly Media Inc. - 2011,(ISBN 9781449308926)
  5. (en)David A. Watt, Programming Language Design Concepts, John Wiley & Sons - 2004,(ISBN 9780470020470)

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]