Différence entre: Framework, SKD , Librairie et Api
simpl_cool
Messages postés9Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention18 octobre 2008
-
16 oct. 2008 à 18:09
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 !
A voir également:
Différence entre librairie et bibliothèque
Différence entre bibliothèque et librairie - Meilleures réponses
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.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 16 oct. 2008 à 23:18
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.
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 17 oct. 2008 à 00:15
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.
simpl_cool
Messages postés9Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention18 octobre 2008 17 oct. 2008 à 22:04
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 .
Vous n’avez pas trouvé la réponse que vous recherchez ?
simpl_cool
Messages postés9Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention18 octobre 2008 17 oct. 2008 à 23:23
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>
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 17 oct. 2008 à 23:51
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 ;-)
simpl_cool
Messages postés9Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention18 octobre 2008 18 oct. 2008 à 00:36
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.
simpl_cool
Messages postés9Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention18 octobre 2008 18 oct. 2008 à 01:37
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 :
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 17 oct. 2008 à 22:22
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 )