Eine integrierte Entwicklungsumgebung vereint die wichtigsten Werkzeuge zur Software-Entwicklung in einem Programm. Dazu zählen für die Programmierung im Wesentlichen Texteditor mit Syntaxhervorhebung und Quelltext-Formatierung, Compiler und/oder Interpreter, Linker sowie Debugger. Darüber hinaus bieten viele Entwicklungsumgebungen meist noch zusätzliche Tools und Features, etwa Auto-Vervollständigung, Refactoring, GUI-Designer, Versionsverwaltung und Profiler. Für Software-Entwickler und Programmierer sind IDEs heute unerlässlich geworden, da sie viel Komfort bieten und wesentliche Arbeitsschritte zusammenfassen und diese durch einen Klick oder ein Tastaturkürzel erledigen.
Ursprünge
Eine Entwicklungs- oder Programmierumgebung wird auch oft IDE genannt, was die Abkürzung für den englischen Begriff
integrated development environment> ist. Die ersten IDEs entstanden Anfang der 1980er Jahre, nachdem man dazu übergegangen ist Quelltext für Software nicht mehr per Lochkarte, sondern per Eingabe an einem Terminal zu erstellen. Dieser in der Informatik entscheidende Wechsel Daten an den Compiler zu übermitteln ermöglichte es fortan Quelltext für Software direkt in für Menschen lesbare Formate an die Maschine zu übermitteln, die das Programm erstellen und ausführen sollte. So war es erstmals möglich alle notwendigen Arbeitsschritte an einem Gerät durchzuführen, sodass das Konzept mit einer speziellen Entwicklungsumgebung auf komfortablere Art Software zu entwickeln der nächste logische Schritt war – ein Konzept, das sich bis heute weiterentwickelt hat und laufend weiterentwickelt wird.
Verschiedene IDEs für verschiedene Anwendungsfälle
Programmiersprachen gibt es wie Sand am Meer und mit den Entwicklungsumgebungen verhält es sich ähnlich – manche zielen auf die Arbeit mit einer ganz bestimmten Programmiersprache ab, andere versuchen möglichst viele Sprachen zu unterstützen und wieder andere konzentrieren sich auf spezielle Anwendungsfälle wie Web-, Spiele- oder System-Entwicklung. Neben der Möglichkeit ein Programm durch Kompilation eines Quelltextes zu erstellen, gibt es inzwischen auch immer mehr Entwicklungsumgebungen, in denen verschiedene Elemente in Bauklötzchenmanier zusammengesteckt oder durch Linien verbunden werden – IDEs also, die von der textbasierten Eingabe zu einer visuellen wechseln. Die Idee dahinter ist, gerade Programmieranfängern den Einstieg in die Welt der Software-Entwicklung zu vereinfachen.
Programmieren in der Cloud
So wie es inzwischen schon viele Anwendungskonzepte als Web-App in die Cloud geschafft haben, gibt es natürlich auch zahlreiche Versuche eine Entwicklungsumgebung für die Software-Entwicklung direkt im Browser laufen zu lassen. Einer der größten Vorteile, den diese Cloud-IDEs bieten ist das parallele Arbeiten mehrerer Nutzer an einem Dokument gleichzeitig, was sich nicht nur in Projektarbeit sinvoll nutzen lässt, sondern etwa auch in der Lehre oder für Präsentationen. Außerdem entfällt das Herunterladen teils großer Softwarepakete, die – vor allem wenn man mehrere IDEs braucht – viel Festplattenplatz beanspruchen können.
Debugger
Ein Debugger dient dazu Fehler im Programmcode zu identifizieren, indem das laufende Programm an einer bestimmten Stelle im Code unterbrochen und Schritt für Schritt weitergelaufen werden kann. Der Begriff leitet sich von dem englischen Wort
bug ab, der in diesem Zusammenhang für Programmierfehler steht. Der Begriff
bugfix beschreibt entsprechend das Beheben eines solchen Fehlers. Debugger sind oft sprachspezifisch und als Kommandozeilen-Programm realisiert. Eine Entwicklungsumgebung bietet hier meist eine grafische Schnittstelle für die Nutzung des Debuggers. So lassen sich etwa Haltepunkte direkt im Texteditor neben jeder Zeile markieren und die aktuellen Werte von Variablen auf Stack und Heap werden in einer Tabelle dargestellt. Einige Debugger erlauben es auch für einen Haltepunkt einen booleschen Ausdruck zu definieren, sodass das laufende Programm an dieser Stelle nur unterbrochen wird, falls der Ausdruck wahr ist.
GUI-Builder
GUI-Builder oder GUI-Designer bieten eine Möglichkeit ein grafisches Interface visuell näher am Ergebnis zu erstellen, indem statt Code zu schreiben vorgefertigte Elemente auf einer Ebene per Drag & Drop angeordnet werden. Dabei lassen sich in der Regel die Elemente über Attribut-Fenster gestalten und mit in Code geschriebenen Aktionen verknüpfen. Viele GUI-Designer generieren aus der grafischen Darstellung entsprechenden Code in der jeweiligen Sprache, um eventuelle Feinheiten schließlich noch näher am Code durchführen zu können. Einige Designer, gerade im Mobile-Bereich, setzen jedoch zunehmend für die grafische Darstellung auf eine eigene Markup-Sprache, die in der Regel auf XML basiert, so etwa
Android Studio oder Apples
Xcode.
Profiler
Profiler sind Werkzeuge, die dabei helfen durch ineffiziente Programmierung entstandene Schwachstellen zu identifizieren, indem sie das Laufzeitverhalten der Software analysieren. Dazu zählen in der Regel das Messen der Programm-Geschwindigkeit, der Speichernutzung sowie der Nebenläufigkeit um mögliche Speicherlecks und Deadlocks zu identifizieren. Dazu präsentieren die meisten profiler ihre Ergebnisse in Form von Diagrammen, um die Tests visuell leichter nachvollziehbar zu machen.
Auto-Vervollständigung
Eine gute Entwicklungsumgebung erkennt in der Regel den aktuellen Kontext und bietet beim Tippen eine entsprechende Auto-Vervollständigung, indem mögliche Befehle oder Felder aufgelistet werden. So muss man sich etwa als Programmierer nicht alle Felder einer Klasse merken, da sie direkt beim Tippen als Auswahl erscheinen. Dadurch ist es auch möglich übersichtlicheren Code zu schreiben, da kryptische Abkürzungen nicht viel schneller zu Tippen sind als sprechende Namen.
Refactoring
Durch Code Refactoring soll die interne Struktur des Quelltextes verbessert werden. Ziele sind hierbei die Lesbarkeit, Verständlichkeit und Wartbarkeit zu erhöhen sowie Redundanz zu vermeiden. Die Entwicklungsumgebung bietet in der Regel zahlreiche Möglichkeiten das Refactoring automatisiert durchzuführen, beispielsweise wenn ein Feld umbenannt werden soll, geschieht dies automatisch an allen Stellen im Quelltext, an denen das Feld steht.
Windows-Entwicklung
Für die Entwicklung von Windows- und Windows-Phone-Software kommt typischerweise die Entwicklungsumgebung
Visual Studio zum Einsatz, die seit Version 2005 auch als kostenlose Express-Editionen mit eingeschränktem Funktionsumfang erhältlich sind. Visual Studio unterstützt unter anderem die Sprachen Visual Basic, C, C++, C#, Python sowie HTML, JavaScript und CSS für Webanwendungen. Neben Programmen, die auf nativen Bibliotheken aufbauen, lassen sich mit Visual Studio auch Anwendungen für Microsofts Common Language Infrastructure (CLI) entwickeln, deren bekannteste Implementierung das
.NET Framework darstellt.
OSX- und iOS-Entwicklung
Apples hauseigene Entwicklungsumgebung Xcode ist für viele Entwickler das Tool der Wahl, wenn es darum geht Apps für OSX und iOS zu entwickeln. Programme für Apples Systeme werden hauptsächlich in Objective-C entwickelt – mit Swift bietet Apple aber seit 2014 auch eine moderne Sprache für die Entwicklung. Darüber hinaus unterstützt Xcode auch C und C++ sowie gängige Skriptsprachen. Dank der sogenannten
playgrounds lassen sich schnell Dinge in Swift ausprobieren ohne ein komplettes Projekt aufsetzen zu müssen. Der Vorteil hierbei ist vor allem, dass sich auch Interface-Elemente testen lassen und zwar sowohl für iOS als auch OS X. Darüber hinaus lassen sich mit
playgrounds auch interaktive Dokumentationen erstellen, etwa für eigene Bibliotheken. Mit Hilfe des iOS-Simulators lassen sich Apps direkt am Rechner testen und seit Xcode 7 ist es möglich auch ohne kostenpflichtige Teilnahme am Apple Developer Programm selbst entwickelte Apps auf eigenen Geräten zu installieren.
Java- und Android-Entwicklung
Die bekanntesten Entwicklungsumgebungen für Java sind
NetBeans und
Eclipse. Alle sind Open Source verfügbar. Während Google für die Android-Entwicklung ursprünglich Eclipse vorgesehen hat, wurde 2013 mit
Android Studio eine eigene Entwicklungsumgebung veröffentlicht. Als Build Tool setzt Google in Android Studio auf Gradle, das es erlaubt für verschiedene Gerätetypen optimierte Versionen einer App zu erstellen. Mittels des mitgelieferten Emulators lassen sich Apps außerdem direkt am Rechner testen. Der Emulator unterstützt dabei sowohl Ansichten für Telefone und Tablets als auch für Uhren mit Android Wear. Unabhängig von der Wahl der Entwicklungsumgebung wird stets das
Java Development Kit (JDK) von Oracle benötigt. Dieses liefert mehrere nützliche Tools von denen die wichtigsten wohl Compiler und Debugger sind.