Christian Galetzka

Praxishandbuch Open Source


Скачать книгу

getestet werden kann, und einer Produktivumgebung, auf der die Software letztendlich betrieben und zu Geschäftszwecken genutzt wird. Die Entwicklungsumgebung der Systemumgebung beschreibt dabei kein eigentliches Entwicklungswerkzeug, sondern lediglich den Ort, an dem neue Software entwickelt wird.5

      Eine integrierte Entwicklungsumgebung oder auch IDE (kurz für Integrated Development Environment), stellt eine Sammlung verschiedener aufeinander abgestimmter Computerprogramme dar, die der Entwicklung von Software dienen. Solche IDEs gibt es für nahezu alle Programmiersprachen und Plattformen, wobei eine IDE in der Regel jeweils nur eine Programmiersprache unterstützt. Statt eine IDE zu verwenden, kann ein Entwickler sich die zur Software-Entwicklung benötigten Einzelwerkzeuge wie Texteditor, Compiler, Linker, etc. (mehr dazu siehe Rn. 97ff.) auch einzeln besorgen und zusammenstellen. Der Vorteil der IDE besteht jedoch darin, dass die einzelnen Werkzeuge bereits gut aufeinander abgestimmt sind und Software-Entwicklung in der Regel ohne Medienbrüche stattfinden kann.6 Beispiele für solche IDEs sind u.a. Eclipse oder die NetBeans IDE.

      Neben den IDEs gibt es auch noch die Software Development Kits (kurz: SDKs). Diese stellen ebenfalls eine Sammlung von verschiedenen Werkzeugen und Hilfsmitteln zur Erstellung von Software dar und beziehen sich meist auf ein konkretes Produkt, wie z.B. Android, oder eine Programmiersprache und stellen dafür dann neben den Entwicklungstools auch entsprechende Schnittstellen und Dokumentationen, diverse Bibliotheken und manchmal auch Testprojekte zur Verfügung. Viele SDKs beinhalten bereits eine entsprechende IDE, mit der die anderen vom SDK bereitgestellten Komponenten genutzt werden können. Jedoch ist es auch möglich, die durch ein SDK bereitgestellten Funktionen in einer selbstgewählten IDE zu nutzen.7 Beispiele für SDKs wären das Android SDK oder das Java Development Kit (JDK).

      Weitere wichtige Werkzeuge sind die Build-Tools. Hierbei handelt es sich ebenfalls wieder um Computerprogramme. Diese dienen aber nicht der grundsätzlichen Erstellung von Code, sondern vielmehr dazu, den bereits geschriebenen Source Code in ausführbaren Code umzuwandeln. Zwar sind auch IDEs mit ihren integrierten Compilern in der Lage dazu, aus dem dort geschriebenen Source Code ein ausführbares Programm zu erzeugen. Allerdings muss dies hier händisch durch den Entwickler angestoßen werden. Die Build-Tools bieten die Möglichkeit, den Build-Prozess – also die Kompilierung des Source Code in ein ausführbares Programm (siehe ausführlich Rn. 97ff.) – zu automatisieren und so z.B. zu ermöglichen, den Build immer zu einem festgelegten Zeitpunkt mit dem bis dahin neu hinzugefügten Code automatisch durchzuführen.8 Bekannte Build-Tools sind z.B. Maven, Gradle oder Ant.

      95

      Ein ebenfalls wesentlicher Teil bei der Erstellung und Verwaltung von Code sind die sog. Paketverwaltungen oder Package Manager. Diese stellen ebenfalls eine Sammlung von Werkzeugen dar, die diesmal aber nicht zur Erstellung, sondern lediglich zur Verwaltung von Code dienen. Die Hauptfunktionen der Package Manager sind die Installation, Aktualisierung und Deinstallation von Software. Wichtigster Bestandteil ist die Paketdatenbank, die alle Informationen über installierte bzw. zur Verfügung stehende Software-Pakete beinhaltet. Grundsätzlich stammt diese Art der Software-Verwaltung aus dem Umfeld von Betriebssystemen und ermöglicht die einfache Verwaltung der auf und mit dem Betriebssystem betriebenen Software.10

       b) Werkzeugkoffer zum Coden – Compiler, Parser, Linker und Interpreter

      97

      Wie bereits erwähnt, bedarf es spezieller Programme und Zwischenschritte, um zwischen den unterschiedlichen Formen des Code zu wechseln. Code, der in einer der gängigen Programmiersprachen geschrieben wurde, liegt zunächst im menschenlesbaren Source Code vor. Soll dieser Code dann zu einer ausführbaren Datei werden, muss er in eine maschinenlesbare Form übersetzt werden. Dazu werden spezielle Programme verwendet, die Compiler genannt werden. Compiler wandeln also Source Code in Maschinensprache um und übersetzen dabei das gesamte Programm und erzeugen dadurch zusammen mit einem Linker ein Executable, das auch separat – also ohne den Source Code – weitergegeben werden kann.

      98

       Backup: Kurze Übersicht zu gängigen Compilern

      Es existieren zahlreiche Compiler und Linker für jede Programmiersprache. Nicht jeder Compiler und/oder Linker ist dabei gleich gut für jedes Vorhaben geeignet, da die unterschiedlichen Programme unterschiedliche Stärken und Schwächen aufweisen. Allerdings haben sich einige gängige Programme durchgesetzt, zu denen wir hier einen kurzen Überblick geben wollen.

       Compiler für C und C++:

      GNU GCC Compiler, Clang, Intel C++ Compiler, Microsoft Visual C++, Oracle C Compiler, Wind River (Diab) Compiler

       Compiler für Java:

      GNU Compiler for Java, javac, Eclipse Compiler for Java (JDT Core), Iodine

       Compiler für Python:

      Psyco, Cython, PyPy, Shed Skin

      Bei dem Einsatz von FOSS Compilern sollte also immer darauf geachtet werden, ob der Compiler FOSS lizenzierten Code in das kompilierte Programm einfügt und ob bei Copyleft Lizenzen ggf. entsprechende