Différence entre: Framework, SKD , Librairie et Api

Messages postés
9
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2008
- - Dernière réponse :  Tibimac - 4 avril 2014 à 02:32
Tout d'abord, un grand merci à tous ceux qui liront ma question et, plus particulièrement, à ceux qui tenteront d'y répondre.


Ma question est absolue au vocabulaire utiliser par les développeurs .

Existe-t'il une différence et si oui, laquelle, entre les termes suivants :<li>API</li><li>Librairie
</li><li>Framework</li><li>SDK</li><li>.... y a t'il d'autre synonyme
</li>J'ai parfois l'impression que ces termes sont utilisés sans discernement...
merci de faire le point à ce conflit et,si possible, de donner des exemples concret (SDL, Qt, WIN32, DOT NET...ou autres)

Merci d'être le plus claire possible , je suis un GROS NULS ok ?

Merci encore !
Afficher la suite 

10 réponses

Meilleure réponse
1
Merci
Framework : le framework est plus un ensemble d'API car celui-ci donne généralement uniquement les en-tête des méthodes/fonctions et non pas leur implémentation, cette dernière étant généralement déjà compilé et évitant à quiconque de voir le fonctionnement (question de propriété intellectuelle et de sécurité).
Ceci-dit un framework contient plusieurs fichiers généralement et ces fichiers sont souvent des classes. Exemple le framework Cocoa (uniquement Objective-C) contient des centaines de classes (uniquement les en-têtes, ex : NSWindow, NSString, NSArray, NSButton... ) et contient plein d'API (CoreAnimation, CoreData, CoreImage, CoreVideo ...), ce framework fait appel à d'autres framework (AppKit, Foundation). Ce framework fait par exemple parti avec les autres cités du SDK pour Mac OS X.

Librairie : C'est un ensemble de fonctions fournies que tu peux utiliser pour gagner du temps dans ton dev. (jQuery par exemple. Il s'agit de un ou plusieurs fichiers qui contiennent un ensemble de fonctions ou classes que l'on peux utiliser et pour lesquelles le code est accessible.

API : Interface de programmation mis à ta disposition par un tiers pour accéder à son logiciel sans que tu ais besoin d'en avoir le code source (API Twitter par exemple: on connait le nom des méthodes, les arguments qu'elles prennent en entrée et ce qu'elles retournent mais on n'as pas accès au code qui implémente ces fonctions, pour rester sur l'exemple de l'API de Twitter cela évite que tout le monde voit comment se fait la connexion a la base de donnée car ce serait prendre un gros risque niveau sécurité. Une API peut ne pas avoir de langage précis et peut être utilisé dans plusieurs langages, sur twitter par exemple puisque n'importe quel langage peut faire une requête http et en récupérer le résultat. Mais elle peut aussi être spécifique à un format, MailJet qui est un service d'envoi de newsletter fourni une API PHP que l'on peut utiliser pour envoyer des newsletter via nos propres scripts PHP tout en passant par MailJet (via l'API) et donc retrouver les stats de cette newsletter sur le site MailJet alors que la newsletter est parti via un script PHP sans qu'on le fasse depuis leur site.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Tibimac
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
23
0
Merci
Salut,

Je vais tenter de répondre

API = Application Programming Interface (en gros les signatures des méthodes exposé exemple les API win32)
Librairie = Ensemble de classes (exemple .dll en windows, .so en unix, ) Permet un partage de fichier entre les applications.
Framework = Ensemble de librairies de librairies (framework dotnet, framework spring, framework strusts, ...)
SDK = Software developpement kit utilitaires pour développer dans un framework ou des API

Exemple dans le SDK dotnet tu as des outils pour decompiler les dll dotnet, pour analyser les performance, signer les assembly

Il y a des SDK pour office, java, ... et un peu pres tous les outils des grands éditeurs pour personnaliser leur outil,
ajout de format dans un logiciel, exemple ajout de nouvel fonction dans un logiciel ou automatisation de taches.

Apres tu as les DDK (driver developement kit) pour faire des drivers pour tes peripheriques)

Esperant avoir éclairer le problème.
Regardes les définitions dans wikipédia pour avoir des détails plus poussés sur ce vocabulaire.
 
Commenter la réponse de nhervagault
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13
0
Merci
RECTIF:
Librairrie: rien à voir avec la notion de "classe", simple paquet de code prêt à l'emploi, que soit sous forme compilée ou non.

Importante précision pour débutant sur cppfrance:
Framework au sens C++ DotNet c'est de l'interprété profond, aucun rapport avec du C ou du vrai C++, les 2 seuls produisant du code natif.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
9
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2008
0
Merci
Merci  pour vos deux réponse mais je crois que je suis encore plus perdu , si c'est possible d'utiliser des termes faciles compréhensible et technique pour quelqu'un qui ne connait que le langage proprement dit  ( jargon C / C++ comme: classes, fonctions, namespaces, entête,MACROS,compilateur,fichier objet,  ...etc ) commençant du plus simple au plus complexe . et donner plus d'exemple concret .
je sais je suis un peut paranoïaque mais je voudrais vraiment distinguer entre ces termes, ah et j'oublis encore qlq chose , c'est quoi une dll (en termes c++ plz ) ?
Merci encore .
      
Commenter la réponse de simpl_cool
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
23
0
Merci
Salut,

Comme indiquer il y a wikipedia pour completer mon message et creuser les differents termes.

Classe : Represente en general un objet (exemple une voiture)
Methode : Represente ne general une action (exemple demarrer)
Membre / propriété : représente une propriété de la classe (marque, couleur, ...)
Entete : reprente le déclaration de la decription de la classe (nom des methodes, propriété) c'est les .h
Fichier source : represente l'implementation des methodes (exemple corps de la methode démarrer ce qui est fait)
Namespace : reunion de classes pour les organiser (exemple le namespace IO regroupe les manipulatrion de fichier classe dirctory, file, ...)
Macro : c'est un terme pour une substitution exemple  <tt>#define abs(x) ((x) < 0 ? - (x) : (x))
</tt>Compilateur : prend des fichiers source et entetes et les traduit en code machine
Fichier objet : fichier intermédiare issue du compilateur correspond à un source
Linker : lie les fichiers object en fichier exe ou librairie (dll ou so ou autre )

dll = http://fr.wikipedia.org/wiki/Dll#Windows

Espérant que ca te guides plus .

Mais il faut chercher un peu (cf reglement)

<tt>
</tt>
Commenter la réponse de nhervagault
Messages postés
9
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2008
0
Merci
ok je te remercie pour l'effort accompli mais je connais tous ces termes , ma question était de décrire les termes ( SDK , API, FRAMEWORK, LIBRARY, ...et autres) à partir des "termes C++" .

Exemple :
_________________________________________________________
- Une LIBRAIRIE est un ensemble de classes et de fonctions (compilés ou pas) prêts à être utilisées sous un projet (solution)... il existe des librairies propriétaires ( Ms DIRECT X ), gratuites( Qt ),open source ( SDL, OPEN GL ). les librairies nous évitent de réinventer la roue, elles nous permettent d'integrer du code (des fonctions) aus sein de notre programme pour faciliter la vie.par exemple au lieu d'écrire de multiple lignes de code pour afficher une fenetre avec un bouton avec du code c++ la librairie Qt nous permet de le faire en quelques lignes. exemple :
Exemple.cpp

#include <QApplication> // inclusion de l'entete de la librairie Qt
#include <QPushButton>

intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);

QWidgetfenetre;
fenetre.setFixedSize(300,150);

QPushButtonbouton("Je suisun bouton !",&fenetre);
bouton.setGeometry(60,50,180,70);

fenetre.show();

returnapp.exec();
}
_________________________________________________________

-un framework est un ensemble de ....( en terme C++  SVP )


 
j'espère avoir été assez clair , j'avoue que ma réponse prêter confusion.
Merci encore.
Commenter la réponse de simpl_cool
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
23
0
Merci
La différence entre librairie et framework

En général un framework est un ensemble de librairie mais les termes sont un peu KIFF KIFF,
framework est le nouveau terme pour une librairie applicative

On dit librairie QT ou librairie GTK
Mais en réalité c'est plus des framework
car ils sont la réunion de plusieurs librairies

Quand tu passes au-dessus de la classe c'est plus difficile de définir les termes.

SDK en c++, c'est par exemple gcc le compilateur + outils linker + ...
sans SDK tu ne peux pas programmer une application.

API c'est une fonction exposée par l'interface de programmation.
Donc des focntions publiques et en générales documentées dans la documentation du SDK

Exemple
QPushButtonbouton fait partie de l'api QT si tu veux parler en QT.

C'est une méthode exposée et documentée dans la doc de QT ;-)
Commenter la réponse de nhervagault
Messages postés
9
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2008
0
Merci
Merci beaucoup, je crois que je suis satisfait de cette dernière réponse,sauf pour la notion d'API(*)  , je te remercie pour le temps consacré à une aussi simple question, mais j'espère que d'autre personnes saurons faire distinctions entres ces termes après avoir lu ce topic.

Si quelqu'un veux ajouter un nouveau mot ou notion de programmation ce ne serais pas de refus .
merci [../auteur/NHERVAGAULT/84425.aspx nhervagault]et merci pour tout ceux qui aurons lu cette article.

(*) :
QPushButtonbouton est une class de la librairie Qt , on est

bien daccord sur ce point ;

est ce qu'on dit que :

QPushButtonbouton est une API du Framework Qt ?

ou bien

QPushBoutton est une Class de l'API Qt ?

je crois que la réponse à cette question conclura totalement
la confusion.
Commenter la réponse de simpl_cool
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
23
0
Merci
Oui, j'ai pas été assez précis

QPushBoutton est une classe de l'API
et
void setGeometry ( int x, int y, int w, int h )
Une méthode de l'api QT disponible sur la classe QPushButton

Comme je suis parti de l'idée des API win32 en C de windows. (qui ne sont pas objet)
Et oui en objet il y a les classes qui s'intercale ;-)
Commenter la réponse de nhervagault
Messages postés
9
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2008
0
Merci
Je résume donc :

_ framework est un ensemble(0) de librairie mais les termes sont un peu KIFF KIFF;
_ framework est le nouveau terme pour une librairie applicative;
_On dit librairie QT ou librairie GTK mais en réalité c'est plus des framework(1)
car ils sont la réunion de plusieurs librairies
(QPushBoutton est une classe de l'API(2) Qt)

de(2) Donc Qt est une API

de (1) et (2) Donc API ou FRAMEWORK c'est la même chose .
et FRAMEWORK et librairie sont presque la meme chose donc :

de (0) et (1) et (2) ===>

API = Librairie= Framework

...
Commenter la réponse de simpl_cool