Delphi ist eine vom Unternehmen Borland entwickelte Entwicklungsumgebung für die Programmiersprache Object Pascal. Im November 2006 wurden die Entwicklerteams der Entwicklungswerkzeuge, darunter auch Delphi, von Borland in eine neue Tochtergesellschaft namens CodeGear ausgegliedert. Am 7. Mai 2008 wurde die IDE-Sparte an Embarcadero Technologies verkauft.
Am 7. Oktober 2015 wurde Embarcadero vom Unternehmen Idera, Inc. übernommen. Idera hat dabei die SQL-Sparte in ihr Datenbank-Produktportfolio eingegliedert. Delphi wird weiter unter der Marke Embarcadero vermarktet.
Namensherkunft Der Name Delphi hat seinen Ursprung in der starken Datenbankorientierung der Entwicklungsumgebung. Oracle ist sowohl der Name eines Datenbanksystems als auch das englische Wort für Orakel. Als bekanntestes Orakel gilt das Orakel von Delphi. Dieser Zusammenhang wird auch von Borland-Mitarbeitern als Ursprung des Namens genannt.
Programmierschnittstellen mini|Einige VCL-Komponenten Für die Entwicklung werden außer der Entwicklungsumgebung noch folgende Programmierschnittstellen/Bibliotheken installiert, die der Nutzer anschließend in seinen Projekten verwenden kann: Run Time Library (RTL, vgl. den Artikel zum freien Nachbau) kapselt nicht-grafische Funktionen des Betriebssystems. Seit Delphi XE2 gibt es die RTL auch für Mac OS und iOS, seit XE5 auch für Android und seit 10.2 Tokyo auch für Linux. Visual Component Library (VCL) kapselt die grafischen Steuerelemente des Windows-Betriebssystems. Auch einige nicht grafische Elemente wie ein Timer oder die Verwaltung von Bilderlisten für die Symbole in Menüs sind Teil der VCL. Sie ist seit XE2 auch auf Windows x64 verfügbar. Im Zeitraum von 2003 bis 2007 (Delphi 8 bis RAD Studio 2007) unterstützte die Delphi-IDE die Programmierschnittstelle .Net-Framework von Microsoft in größtenteils kompatibler Form. Kylix war ein erster Ansatz, um Delphi-Anwendungen auch unter Linux laufen lassen zu können. Dieser Ansatz wurde aber nach wenigen Versionen wieder aufgegeben. FireMonkey (FMX) ist der (neue) Ansatz, Delphi-Anwendungen plattformunabhängig verfügbar zu machen. FMX unterstützt dieselben Betriebssysteme wie die RTL. FMX und VCL sind nicht kompatibel. FMX-Anwendungen sind erheblich größer als VCL-Anwendungen. Internet Direct (Indy) für die Arbeit mit den meisten gebräuchlichen Internetprotokollen. Eine Besonderheit von Delphi ist, dass damit erstellte Programme in aller Regel keinerlei Anforderungen an installierte Software auf dem Zielbetriebssystem stellen. Ausnahmen gibt es beispielsweise bei Verwendung von Ribbons und natürlich .NET. Für all diese Schnittstellen gibt es eine unüberschaubare Zahl an Erweiterungen durch die Nutzer. Bei den kostenpflichtigen Versionen von Delphi liegt der komplette Quelltext dieser Schnittstellen bei.
Darüber hinaus können auch Programme ohne diese Schnittstellen direkt mit Windows-API-Aufrufen erstellt werden, was zu kleineren Programmdateien führt, aber deutlich weniger komfortabel in der Entwicklung ist.
Firemonkey (FMX) Da die VCL architektonisch zu stark an Windows gebunden ist, wurde für die Cross-Plattform Entwicklung in XE2 ein neues GUI Framework namens Firemonkey entwickelt. Dieses ist auf allen von Delphi und C++ Builder unterstützten Plattformen verfügbar, wobei manche Steuerelemente auf gewissen Plattformen nicht verfügbar sind, da es auf der entsprechenden Plattform kein Pendant gibt (z. B. gibt es auf mobilen Plattformen in der Regel keinen Systemdialog zum Öffnen oder Speichern von Dateien). Nicht visuelle Komponenten können in manchen Fällen mit der VCL geteilt werden, in anderen Fällen wurden solche Komponenten speziell für Firemonkey entwickelt. Auch Firemonkey Steuerelemente sind als eine Objekthierarchie umgesetzt und der Quellcode der mitgelieferten Komponenten wird auch mitgeliefert.
Firemonkey Anwendungen wurden anfänglich komplett selbst gezeichnet, je nach Plattform ist es inzwischen bei einigen Steuerelementen möglich auf eine Plattform-Native Umsetzung umzuschalten. Der Funktionsumfang beider Varianten des Steuerelement unterscheidet sich dadurch, beispielsweise können die meisten selbstgezeichneten Komponenten frei rotiert werden.
Im Unterschied zur VCL sind Koordinaten in Firemonkey Fließkommazahlen um Rundungsdifferenzen usw. beim Skalieren zu verhindern. Auch für Firemonkey gibt es ein Stilsystem, wobei für jede Plattform auch jeweils mindestens ein Stil mitgeliefert wird, der das standardmäßige Aussehen von Anwendungen der betreffenden Plattform widerspiegelt. Über einen mitgelieferten Stildesigner können vorhandene Stile angepasst oder ganz eigene entworfen werden.
Zusätzlich zu den mitgelieferten Steuerelementen gibt es auch Open Source Komponenten oder kostenpflichtige Komponenten von Drittanbietern.
Parallel Programming Library (PPL) Seit Delphi XE7 gibt es zusätzlich zur bereits seit langem vorhandenen Multithreading-Unterstützung zur Erstellung nebenläufiger Programme über die TThread-Klasse auch eine Parallel Programming Library mit neuen einfach zu benutzenden Funktionalitäten wie Tasks oder Futures, die auf einem intern automatisch verwalteten Pool an Threads basieren.
Datenbankprogrammierung Für Delphi gibt es zahlreiche Datenbank Frameworks. Mitgeliefert werden das ältere unidirektionale dbExpress Framework und das modernere FireDAC Framework. Letzteres unterstützt eine Vielzahl von relationalen und auch mehrere NoSQL Datenbanken. Je nach Plattform kann es unterschiedlich sein welche Datenbanken unterstützt werden, was aber vorwiegend davon abhängt, welche Clients für die betreffenden Datenbanken auf den entsprechenden Plattformen vorhanden sind. Eine Entwicklerversion der hauseigenen Datenbank Interbase wird mitgeliefert und eine kostenfreie Light-Version, die auch auf mobilen Plattformen verfügbar ist, wird ebenfalls mitgeliefert. Die Entwicklungsumgebung bietet auch begrenzte Möglichkeiten zur Verwaltung und Abfrage von Datenbanken.
Sprache Die von Delphi benutzte Programmiersprache heißt heute auch Delphi, nachdem diese einige Jahre als Object Pascal bezeichnet wurde. Die Sprache ist eine objektorientierte Weiterentwicklung der Sprache Pascal, welche zu Turbo-Pascal-Zeiten zwar schon eine Art der Objektorientierung erhalten hat, die aber wesentlich umständlicher zu benutzen war. Die aktuelle Version von Delphi beherrscht jedoch aus Kompatibilitätsgründen weiterhin das alte und kaum noch genutzte Objektmodell. Durch die Abstammung von Pascal gilt die Sprache als sehr übersichtlich und gut erlernbar.
Das aktuelle Objektmodell beherrscht Konzepte wie deterministische Speicherverwaltung, Klassenmethoden und Variablen, Interfaces, Generics, anonyme Methoden, inline Variablendeklaration mit Typinferenz und statische Typisierung. Dynamische Arrays, die Möglichkeit der Verkettung solcher Arrays oder Löschen von Elementen aus diesen werden genauso unterstützt wie Records mit Methoden inklusive automatisch aufgerufener Initialisierungs- und Finalisierungsmethoden. Anders als in vielen anderen Sprachen müssen statische Arrays nicht mit dem Index 0 beginnen, sondern können ab jedem beliebigen Index beginnen. Mehrfachvererbung wird nicht unterstützt. Eigene Typen können selbstverständlich auch definiert werden, sowohl in Form einfacher Datentypen als auch Klassen und Schnittstellen. Klassen können entweder durch Vererbung erweitert werden oder in Fällen, wo das nicht sinnvoll möglich ist, durch so genannte Class Helpers, das sind Typen, die mit einer Klasse assoziiert werden und dieser Klasse und ihren Nachkommen Methoden und Eigenschaften hinzufügen.
In Delphi wird die Speicherverwaltung von Strings vollautomatisch vom Laufzeitsystem erledigt. Die Zuweisung einer String-Variablen an eine andere verbraucht dabei dank Referenzzählung der Inhalte der String-Variablen keinen zusätzlichen Speicherplatz und erfordert auch nicht das Kopieren von Zeichen. Es existieren zusätzlich klassische String-Typen ohne Referenzzählung.
Editionen Das Produkt gibt es in verschiedenen Editionen mit unterschiedlichem Funktionsumfang. Für nicht kommerzielle Entwicklung gibt es inzwischen auch eine kostenlose „Community Edition“ und für akademische Zwecke wie beispielsweise Lehrzwecke gibt es akademische Lizenzen oder auch Klassensätze zu günstigen Preisen inklusive der Möglichkeit einer Installation auf den privaten Geräten der Schüler/Studenten.
Entwicklung Delphi EEP (Early Experience Program) Die erste Vorabversion von Delphi wurde im Herbst 1994 von Borland an einen begrenzten Entwicklerkreis verkauft. Diese mitsamt ihrem Quellcode ausgelieferte Version zeigte noch deutliche Unterschiede zur kommenden Delphi-Version 1.
Delphi 1 (Codename: Delphi) Die erste Version von Delphi wurde am 14. Februar 1995 veröffentlicht und erzeugte nur Code für 16-Bit-Anwendungen für Windows 3.x. Der Umfang der mitgelieferten Komponenten war relativ gering.
Delphi 2 (Codename: Polaris) Delphi 2 wurde im März 1996 veröffentlicht und ist die erste Version, die 32-Bit-Anwendungen für Windows erzeugen konnte. Die Vorgängerversion Delphi 1 und die englische Version von Delphi 2 waren zusätzlich auf der CD-ROM enthalten.
Delphi 2 war durch den Übergang von 16 auf 32 Bit erheblich weiterentwickelt worden. Neben moderneren Komponenten im Windows-95-Stil lag der Vorteil vor allem bei dem viel größeren lokalen Speicher. Vorher war die Größe aller Datentypen auf maximal 64 KByte (-16 Byte) beschränkt. Zeichenketten konnten nur 255 Zeichen lang sein. Nun konnten Zeichenketten und Datenstrukturen bis zu 2 GByte groß bzw. lang sein.
Delphi 3 (Codename: Ivory) Delphi 3 wurde im Mai 1997 veröffentlicht.
Wesentliche Veränderungen zur Vorgängerversion waren das Eliminieren zahlreicher Bugs, eine Erweiterung der IDE durch Code Insight, weitere Common-Control-Komponenten (ToolBar, CoolBar) und die Aufnahme von Komponenten für Internet-Protokolle. Die wichtigste Änderung betrifft die Einführung der „Packages“. In Version 2 mussten zusätzliche Komponenten in die Komponentenbibliothek integriert werden. Mit der Einführung der Packages konnten eigene oder externe Komponenten dynamisch hinzugefügt oder entfernt werden.
Delphi 4 (Codename: Allegro) Delphi 4 wurde im Juli 1998 veröffentlicht und brachte die Unterstützung dynamischer Arrays und ActionLists sowie einige Verbesserungen der IDE, besonders in Bezug auf Übersichtlichkeit und die Verwaltung großer Projekte und Projektgruppen.
Delphi 5 (Codename: Argus) Delphi 5 wurde im August 1999 veröffentlicht. Mit Delphi 5 konnte erstmals über ADO auf Datenbanken zugegriffen werden. Diese Erweiterung musste in der Professional-Version allerdings als ADO Express zugekauft werden. Außerdem hielten Komponenten Einzug, mit denen via OLE auf Microsoft-Office-Anwendungen zugegriffen werden konnte. Dies war allerdings durch direkten Aufruf der OLE-Befehle schon vorher möglich.
Delphi 6 (Codename: Iliad) Delphi 6 wurde im Mai 2001 veröffentlicht. Mit Delphi 6 konnte erstmals mit dem zusätzlichen Modellierungswerkzeug Modelmaker aus UML-Modellen Delphi-Programmcode erzeugt werden. Modelmaker erlaubt das Erstellen von Diagrammen in der Unified Modeling Language UML, einer Standardsprache zur Modellierung objektorientierter Systeme. Die manuelle Programmierung wird somit reduziert. Für Datenbankzugriffe hielt die neue Schnittstelle dbExpress Einzug. Aufzählungstypen kann ein bestimmter, ordinaler Wert zugewiesen werden. Neben VCL-Komponenten wurden erstmals auch die auf Qt basierenden CLX-Komponenten ausgeliefert, um die Cross-Plattform-Entwicklung und die ebenfalls 2001 erstmals erschienene Entwicklungsumgebung Kylix zu unterstützen.
Von Delphi 6 existierte eine kostenlose Personal Edition.
Delphi 7 (Codename: Aurora) Delphi 7 wurde im August 2002 veröffentlicht. Mit Delphi 7 wurde ein Preview Compiler für .NET-Entwicklung in Delphi ausgeliefert. Das Modellierungswerkzeug Modelmaker wurde ab dieser Version in Delphi integriert.