Interface de programmation
![Page d'aide sur l'homonymie](../i/m/disambig_colour.svg.png)
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
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
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é
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
- Graph API de Facebook
- Google Maps API
Exemples en fonction du domaine applicatif
- graphismes 3D : OpenGL, Direct3 (partie de DirectX), Mantle (AMD)
- manipulation de documents XML : SAX (Simple API for XML) et DOM (Document Object Model)
- accès à des bases de données : ODBC, JDBC
- cartographie et SIG
Fonctions des interfaces de programmation en Java
Les interfaces de programmation peuvent avoir plusieurs fonctions. Par exemple, dans J2EE, on trouve les fonctions suivantes :
- API de communication synchrone / asynchrone
- API de connexions (annuaires, bases de données, progiciels de gestion intégrés)
- API de gestion des transactions
- API de gestion des courriels
- API de sérialisation par XML
- API d'analyse XML
- API de gestion des registres XML (par exemple ebXML)
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
Les interfaces de programmation peuvent véhiculer des métadonnées.
- Dans les interfaces prévues par les progiciels de gestion intégrée
- Exemples : Oracle 9i Metadata API et Relational metadata API de SAP
- Dans les langages de programmation
- Exemple du langage Java : API d'accès et de traitement des données enregistrées dans une source de données
- Dans les systèmes décisionnels
- Exemple : Métadonnées dans les API de SAS
- Dans les bases de données relationnelles
- Exemple : DB2 Cube
- Dans les applications d'ingénierie des connaissances
- Exemple : Loading metadata to Livelink using Bulk Loader API's (en)
- etc.
Notes et références
- 1 2 3 4 5 6 7 8 9 10 11 12 (en)Martin Reddy, API Design for C++, Elsevier - 2011,(ISBN 9780123850041)
- 1 2 3 (en)Jaroslav Tulach, Practical API Design: Confessions of a Java Framework Architect, Apress - 2008,(ISBN 9781430209744)
- ↑ (en)Joe Casad, Sams Teach Yourself Tcp/Ip in 24 Hours, Sams Publishing - 2004,(ISBN 9780672325656)
- 1 2 (en)Daniel Jacobson - Dan Woods - Greg Brail, APIs: A Strategy Guide, O'Reilly Media Inc. - 2011,(ISBN 9781449308926)
- ↑ (en)David A. Watt, Programming Language Design Concepts, John Wiley & Sons - 2004,(ISBN 9780470020470)
Voir aussi
Articles connexes
- Java EE
- Interface (informatique)
Liens externes
- (en) SAX, Simple API for XML
- (en) What is an API? Your guide to the Internet Business (R)evolution
- Portail de la programmation informatique
- Portail de l’informatique