Menu
jeuxvideo.com / Actualités à la une / Derniers dossiers / Au Clair de la Tech : Voyage au cœur des API, et de la guerre d'influence qu'elles vont engendrer dans le jeu vidéo /

Au Clair de la Tech : L’émergence des API - Au Clair de la Tech : Voyage au cœur des API, et de la guerre d'influence qu'elles vont engendrer dans le jeu vidéo

Page Dossier
Au Clair de la Tech : L’émergence des API
Au Clair de la Tech : L’émergence des API
PC PS4 ONE PS3 360 iOS Android
Partager sur :

Encore une fois, nous allons commencer par un peu d’histoire. Car même si le monde des nouvelles technologies évolue très vite, de nombreux concepts encore largement utilisés aujourd’hui ont leurs racines profondément ancrées dans les débuts de l’informatique. Et c’est justement le cas des API.

Ainsi, quand les ordinateurs sont devenus programmables et de plus en plus puissants, les développeurs se sont mis à écrire des logiciels de plus en plus complexes, afin d’exploiter ces nouvelles capacités offertes par le matériel. Mais réécrire l’intégralité d’un code à chacune de ses itérations s’est vite révélé être un travail aussi long et fastidieux qu’inutile, constituant par la même un véritable frein à l’augmentation de la complexité des programmes.

Partant de ce constat, les développeurs ont donc commencé à mettre en commun des bouts de codes appelés « fonctions », « procédures » ou encore « routines » pour pouvoir les réutiliser d’un programme à un autre. Par exemple, pour afficher du texte à l’écran, plutôt que d’écrire dans chaque programme un bout de code allant recopier le texte à afficher dans la zone mémoire mappée sur la mémoire vidéo, il suffisait d’utiliser une fonction « externe » effectuant cette opération.

Les (nombreuses) API disponibles au sein du langage Java

Au Clair de la Tech : L’émergence des API

De fil en aiguille, les langages de programmation se sont mis à définir, en plus de leur syntaxe, des bibliothèques de fonctions de base accessibles à tous les programmes écrits dans ce langage. Les premières API étaient nées. Elles se sont depuis largement enrichies et multipliées (il existe des milliers d’API), tout en embarquant dans leur définition bien plus que de simples fonctions : elles définissent désormais aussi des structures de données, des formats de fichiers, des protocoles de communication, etc… En plus des fonctions de base fournies directement par l’API du langage de programmation, les systèmes d’exploitation embarquent eux aussi des API, accessibles via différents langages de programmation, et permettant en général des opérations bien plus complexes et plus spécialisées que les fonctions des API des langages. Par exemple, les API Windows offrent des fonctions permettant d’aller lire ou écrire dans la base de registre, ou d’afficher une icône à côté de l’horloge.

« Cartographie » des API pour les applications Windows Modern UI

Au Clair de la Tech : L’émergence des API

Cette plus grande facilité de programmation offerte par ces API système n’est toutefois pas sans contrepartie : très logiquement, le portage d’un logiciel devient plus compliqué, puisqu’il faut en réécrire toutes les portions utilisant des API système (à noter que dans le monde Unix, il existe une API système standardisée, l’API POSIX, qui permet le portage d’un système à l’autre, et même, dans une certaine mesure, vers Windows, qui supporte une partie de l’API POSIX depuis l’arrivée de Windows NT). Par exemple, si un développeur opte pour la solution facile du stockage des paramètres de son logiciel dans la base de registre via l’API Windows, il devra mettre en place un autre système de stockage s’il veut porter son application sous Linux.

Des API « indépendantes » ont également rapidement fait leur apparition. Ni liées à un langage de programmation, ni liées à un système d’exploitation, elles sont souvent très spécialisées, comme par exemple les API permettant de développer des plug-ins pour une application, de manipuler des grands nombres, ou encore des API d’abstraction du matériel destinées à faire des rendus 3D sans avoir à se soucier du type de carte graphique utilisée (HAL, Hardware Abstraction Layer).

L’utilisation d’API a également un autre avantage, au-delà du gain de temps dans le développement : l’utilisation de bibliothèques de fonctions partagées a permis une certaine uniformisation des interfaces des logiciels. Ainsi, en utilisant les mêmes API pour présenter les données ou pour demander des entrées, deux programmes présentent une interface similaire à l’utilisateur, ce qui permet de simplifier leur prise en main (l’utilisateur pouvant plus facilement prendre ses marques) et donne une cohérence d’ensemble aux différentes applications installées sur un ordinateur. Avec un peu d’habitude, il est même parfois possible de reconnaitre quelles API ont été utilisées pour l’interface d’un logiciel.

Google doit sans doute une partie du succès de ses produits aux nombreuses API

Au Clair de la Tech : L’émergence des API

Plus récemment, c’est au niveau des services en ligne qu’on a pu observer une explosion du nombre de nouvelles API. Les services les plus populaires proposent en effet quasiment tous une API, accessible via des requêtes web (WebService, REST…), pour permettre à des développeurs de créer facilement des applications s’interfaçant avec ces services. Ainsi, on trouve par exemple des applications en ligne de commande permettant d’automatiser l’envoi de photos vers un compte Google Photos via les API du géant de la recherche.

L’API Unity permet de cibler toutes les plateformes majeures quasiment sans ada

Au Clair de la Tech : L’émergence des API

Notons enfin qu’avec le temps, le concept d’API a été poussé à un tel niveau, que l’on trouve aujourd’hui des API … servant à utiliser d’autres API ! Cette architecture se justifie par le besoin de réaliser des applications multiplateformes s’intégrant convenablement avec les différents OS sur lesquelles elles sont portées. Comme chaque plateforme a ses propres API systèmes, le portage nécessiterait en théorie de réécrire toutes les portions de l’application ayant besoin d’accéder aux API systèmes. Et c’est là qu’interviennent les API intermédiaires : elles proposent des fonctions équivalentes à celles proposées par les principales API systèmes et implémentent ensuite ces fonctions en utilisant les API systèmes.

Dès lors qu’il se limite aux fonctions de ces API intermédiaires, le développeur pourra ainsi intégrer son application sur tous les systèmes sur lesquelles ces API ont été portées, sans qu’il n’ait rien à réécrire. Parmi ces API destinées à faciliter le portage, on peut citer par exemple Qt, utilisée par de nombreuses applications, ou encore, dans le monde du jeu vidéo, l’API du moteur de jeu Unity, qui permet notamment une abstraction de l’API 3D du système (Direct3D sous Windows, OpenGL sur la plupart des autres OS), et qui est aujourd’hui très populaires chez les développeurs de jeux indépendants, à qui il facilite la mise à disposition de jeux sous Android, iOS, Linux, OS X et Windows. Ces facilités profitent aujourd’hui largement au monde du jeu vidéo, en dynamisant la scène indépendante, ce qui contraste fortement avec l’époque des débuts de la 3D, où les limitations des API dédié, encore balbutiantes, rendaient souvent les choses très compliquées et obligeait bien souvent les développeurs à faire plusieurs versions distinctes de leur code.

Mis à jour le 08/03/2016

COMMENTAIRES

Vous devez être connecté pour poster un commentaire.
nobulle
nobulle
MP
le 07 mars 2016 à 14:36

Tres bon dossier. Bravo JVC

Lire la suite...
Top commentaires
nobulle
nobulle
MP
le 07 mars 2016 à 14:36

Tres bon dossier. Bravo JVC

Lire la suite...
Sommaire Dossier
  • Au Clair de la Tech : L’émergence des API
  • Au Clair de la Tech : Le cas de la 3D : quand les API dictent l’évolution du matériel
  • Au Clair de la Tech : Le retour au bas niveau : la revanche de Khronos ?