Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Pakete, Bibliotheken und Frameworks unterscheiden

Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Pakete, Bibliotheken und Frameworks unterscheiden

Was ist nun der Unterschied zwischen Bibliotheken und Frameworks? Bibliotheken sind hierbei die einfacher zu verstehende Kategorie. Bibliotheken bieten einfach nur eine Sammlung von Funktionen an, die Sie aufrufen können, z.B. um Berechnungen durchzuführen oder Texte in eine Datei zu schreiben. Die Bibliotheken bieten Ihnen hierfür eine Schnittstelle an, die Sie dann als Klassen oder eventuell auch als Funktionen aufrufen, ohne Ihren eigenen Code dafür besonders modifizieren zu müssen. Die Nutzung einer Bibliothek fühlt sich in aller Regel so an, als würde man seinen eigenen Code aufrufen, nur dass es eben nicht der eigene Code ist. Beispiele für JavaScript-Bibliotheken sind z.B. ApexCharts.js oder Chart.js zur grafischen Visualisierung von Daten oder z.B. D3.js zur Datenmanipulation. Frameworks verhalten sich demgegenüber anders. Sie rufen Ihren Code auf und definieren dabei Schnittstellen, die Ihr Code ausfüllen muss, damit er in das Framework eingebettet werden kann. Damit diktieren Ihnen Frameworks ein Stück weit, wie Ihr Code auszusehen hat, wodurch Sie nicht so frei in Ihrer Umsetzung sind. Denken Sie hier bspw. an eine Methode, die als Allererstes aufgerufen wird, wenn das Betriebssystem unser Programm startet. Diese Methode muss meist einem ganz bestimmten Muster genügen, damit sie vom Betriebssystem als Startpunkt erkannt wird. Während Sie Bibliotheken meist leicht wieder ausbauen können, ist es bei Frameworks schwieriger. Da Sie Ihnen vorgeben, wie Ihre Software strukturiert sein soll, ist der Wechsel von einem Framework auf ein anderes mit größeren Umbauten verbunden. Überlegen Sie sich also im Vorfeld möglichst gründlich, welche Frameworks Sie einsetzen möchten. Bei einem Basis-Framework ist das umso wichtiger. Dies ist meist die Grundlage, auf der eine Programmiersprache überhaupt funktioniert. Bei Java ist das bspw. das Java Framework und bei C# das .NET Framework. Selbst JavaScript hat eine Art Basis-Framework, das ein Stück weit in der Sprachdefinition verankert ist und dann durch einen Browser mit Leben gefüllt wird. Das Basis-Framework nachträglich zu ändern, ist nahezu unmöglich und bedeutet in vielen Fällen, dass die Applikation komplett neu geschrieben werden muss. Möchte man nicht zwischen Frameworks oder Bibliotheken unterscheiden, sondern alle externen Code-Bestandteile allgemein bezeichnen, nutzt man in aller Regel den Begriff Paket. Diese Pakete müssen Sie in neuen Programmierumgebungen nicht wahllos im Internet zusammensuchen, sondern können Sie über sog. Paketmanager in die eigene Software einbinden. Bekannte Paketmanager sind NPM für JavaScript, Maven und Gradle für Java, NuGet für .NET und Pip für Python. Gerade dank der Paketmanager ist das Einbinden von Paketen mittlerweile so einfach, dass man Gefahr läuft, sich diese Pakete nicht genauer anzusehen. Daher noch ein Hinweis zum Schluss: Schauen Sie sich die Pakete unbedingt genauer an, die Sie in Ihre eigene Software einbinden, denn immerhin werden diese ja ein Teil Ihrer Software. Sollten darin also Schwachstellen sein, werden diese auch zu Schwachstellen in Ihrer Software. Dazu kommt noch, dass diese Pakete meist auch gewisse Lizenzen besitzen, unter denen sie verwendet werden dürfen. Sollten Sie als Programmiererin oder Programmierer gegen diese Lizenzen verstoßen, kann das zu erheblichen Kosten führen. Das soll Sie nun nicht von der Nutzung fremden Quellcodes abhalten. Ich möchte Sie damit nur für etwas sensibilisieren, das man viel zu leicht übersehen kann.

Inhalt