Unterschied library und framework?

3 Antworten

Ein Framework ist wie ein Grundgerüst. Bildlich gesehen kannst du es mit einem Frankensteinmonster vergleichen. Das setzt sich aus einzelnen Teilkomponenten (Organe, Beine, Arme, ...) zusammen (das ist das Framework), die seinen Körper funktionstüchtig machen. Das heißt, hierbei könnten auch verschiedene Programmbibliotheken eingesetzt werden, die je Modul ihre Funktionalität beisteuern.

Die Steuerungsaufgabe übernimmt das eingesetzte Gehirn. Es steht in meinem Bildnis symbolisch für die Anwendungslogik, die du als Frameworknutzer definieren würdest. Es wird eine direkte Verbindung mit dem Körper hergestellt, um auf dessen Funktionen zugreifen zu können.

Die Aufrufkette/Kontrolle geht allerdings vom Framework aus. Das heißt, einzelne Module/Funktionalitäten können auch unabhängig vom Anwendungskern arbeiten und die Logiken vom Anwendungskern werden nur bei Bedarf aufgerufen. Das Framework gibt eine gewisse Programmstruktur vor.

Dazu ein einfaches, praktisches Beispiel:

Ein Framework könnte das Grafikrendering für ein Spiel übernehmen. Dazu definiert es eine Game Loop und bietet zudem etliche Funktionalitäten, die beim Zeichnen von Formen u.ä. hilfreich sind.

while (true) {
  draw();
  wait();
}

Die konkrete Definition der Funktion draw allerdings wird durch den Anwendungskern definiert, den der Nutzer des Frameworks implementiert. Das Framework hat die Programmkontrolle. Es entscheidet selbst, wann und wo es die draw-Funktion aufruft. In diesem Beispiel bei jedem Zyklus der Schleife.

Oft ist ein Framework auf ein ganz spezielles, höher liegendes Ziel / eine ganz bestimmte höhere Funktionalität ausgerichtet. ASP.NET oder Rails beispielsweise geben für die Entwicklung von Webanwendungen eine Struktur sowie Grundfunktionalitäten (Routing, Filter/Validation, Features rund um Security, ...) vor oder Bootstrap ist ein bekanntes CSS-Framework, mit dem die Entwicklung von responsive Webseiten erleichtert wird.

Eine (Programm-)Bibliothek wiederum ist ein zusammengefasstes Bündel von Programmcode (Klassen, Funktionen, ...), welche Lösungen für ein Problem (oder mehrere Probleme, die unter ein Thema untergeordnet werden können) anbieten. Als Beispiel könnte man die Axios-Bibliothek benennen. Sie stellt dem Anwender einfache Methoden zur Verfügung, um HTTP-Requests zu verschicken.

Bibliotheken können separat zur konkreten Anwendungslogik gehalten werden. Sie sind unabhängig von ihr. Die Aufrufkontrolle geht daher vom Nutzer der Bibliothek aus. Er entscheidet, ob und welche Funktionen der eingebundenen Bibliothek wo und wann aufgerufen werden.

WeissBrot965 
Fragesteller
 10.09.2023, 21:03

Vielen Dank für die ausführliche Antwort :)

0

Eine Library stellt Codestücke zur Verfügung, jedoch ist dem Entwickler normalerweise völlig freigestellt, wie er sie verwendet. Hat man zum Beispiel eine Hash-Library, dann gibt es bestimmte Funktionen um Hashs zu berechnen, die aber normalerweise nicht groß zusammenhängen bzw. auf eine ganz bestimmte Weise genutzt werden. Hinter einem Framework steht ein größerer Plan und der Programmierer muss genau lernen, wie man das Framework benutzt, da kann man normalerweise nicht einfach einzelne Funktionen benutzen sondern alles steht in einem größeren Zusammenhang, z.B. gibt es Frameworks für Website-Backends, da spielen die einzelnen Funktionen zusammen, damit man am Ende eine einzelne Website hat und man benutzt nicht einfach einzelne Funktionen

WeissBrot965 
Fragesteller
 10.09.2023, 19:12

Okay, aber three js ist doch auch nur eine library, allerdings benutzt man bei der 3d entwicklung im Prinzip nur Funktionen von three js. Warum ist es dann eine library?

Mit freundlichen Grüßen

0
Nic0LP  10.09.2023, 19:26
@WeissBrot965

Three js kenn ich kaum deswegen kann ich es nur ungefähr beantworten, aber 1. können Library und Framework schon auch fließend ineinander übergehen und 2. würde ich sagen kann man three js schon auch gut abgekapselt in einem größeren System verwenden um z.B. nur ein 3D-Modell zu rendern und das war's. Ein framework ist allumfassender

0

Library ist eine Sammlung von Funktionen, auf die der Entwickler zugreift, wenn er sie benötigt. Ein Frameworks gibt eine Struktur und Designmuster, Best Practises vor.

Bei der Library bestimmt man, wann genau eine Funktion genutzt werden soll. Ein Framwork wird konstant genutzt

WeissBrot965 
Fragesteller
 10.09.2023, 19:12

Okay, aber three js ist doch auch nur eine library, allerdings benutzt man bei der 3d entwicklung im Prinzip nur Funktionen von three js. Warum ist es dann eine library?

Mit freundlichen Grüßen

0
regex9  10.09.2023, 20:50
@WeissBrot965

Als Anwender von ThreeJS bist du derjenige, der dessen Funktionen aufruft und den Programmstart initiiert. ThreeJS stellt keine Grundstruktur bereit, in der du einfach nur deine Anwendungslogik einsetzen musst. Stattdessen musst du selbst Objekte wie Scene und Renderer anlegen.

1