Delphi désigne à la fois un environnement de développement intégré (EDI) et un langage de programmation orienté objet.
L'EDI Delphi est un EDI propriétaire fonctionnant sous Windows créé en 1995 et édité par Borland. À l'époque, créer des programmes graphiques sous Windows se faisait en grande majorité en utilisant soit la chaîne de compilation Visual C++, soit le RAD Visual Basic. Le premier outil étant excessivement complexe et le second assez peu structuré, Delphi apparut alors comme une alternative viable pour beaucoup de développeurs qui souhaitaient créer des programmes standards pour Windows.
En 2001, Borland édita une version Linux de Delphi appelé Kylix, qui ne connut pas le succès attendu par l'éditeur.
Comme il s'agit d'un outil RAD (Rapid Application Development), Delphi est très simple à prendre en main et il est tout à fait aisé de créer toutes sortes d'applications.
Delphi implémente une version orientée objet (POO) du langage Pascal, le Object Pascal, renommé Langage de programmation Delphi au fil des modifications apportées par Borland. Le Object Pascal de Delphi possède plusieurs avantages qui améliorent la productivité du développeur par rapport au C++ : typage fort, contrôle strict du compilateur pour éviter les erreurs de mémoire, de débordement, gestion intégrée des chaînes de caractères et des tableaux dynamiques, etc. La compilation ne se fait qu'en une seule passe et il n'y a pas de séparation entre l'implémentation et l'interface comme en C ou en C++ : la génération d'un projet Delphi est donc très rapide, ce qui a accru à sa sortie la popularité de l'outil vite réputé pour ses temps de compilation record.
Bien que Object Pascal introduise une multitude de concepts intéressants et novateurs (de nombreux ont été repris avec C#), il souffre de faiblesses connues. Par exemple, il ne permet pas certaines fonctionnalités de POO tel que l'héritage multiple de classes ou l'utilisation d'interfaces non liées à COM. Certaines fonctionnalités comme la surchage d'opérateurs et la généricité n'ont été introduits que tard (respectivement avec Delphi 2005 et Delphi 2009). De plus, sa parenté avec le Pascal rebute de nombreux programmeurs plus habitués à des styles de programmation proches de Java ou C. Enfin, il n'est ni standardisé ni géré par un comité indépendant : propriété de Borland, l'éditeur est le seul à pouvoir décider de l'avenir et de l'ajout de nouvelles fonctionnalités du langage.
Delphi bénéficie d'une excellente bibliothèque de composants visuels et non visuels, la Visual Component Library (VCL), dont le concept est similaire aux MFC de Visual Studio. La VCL permet entre autres de dessiner rapidement une application graphique, en masquant les appels aux complexes API Windows. Depuis Delphi 1, la VCL est améliorée par Borland à chaque nouvelle version de Delphi en veillant à une compatibilité (quasi) totale dans l'interface de la bibliothèque, ce qui permet de migrer des projets en limitant la réécriture du code.
C++Builder exploite la même bibliothèque de composants et comporte un "traducteur" Object Pascal vers C++, tout du moins un C++ contenant des extensions propres à Borland compréhensible par le frère C++ de Delphi. Ainsi, tout code Delphi peut être exploité avec C++Builder.
L'environnement de développement s'appuie sur un éditeur d'interface graphique associé à un éditeur de code source. Il doit son succès à sa facilité d'utilisation pour développer des applications graphiques et/ou liées aux bases de données. On l'a souvent comparé à Visual Basic de Microsoft pour cette facilité de développement. On peut même dire que par un amusant mouvement de balancier et de personne, le VB influença Delphi qui à son tour influença par la suite le VB (Anders Hejlsberg lors de son passage chez Microsoft).
L'environnement de développement auto-génère du code pour faciliter le travail du programmeur. Il maintient une correspondance automatique entre la vue de conception (la fenêtre que le programmeur bâtit en déposant des composants graphiques) et l'éditeur de code (la vue affichant le code source qui créera ces composants à l'exécution). Les données spécifiques aux composants sont stockées dans des fichiers d'extension .DFM alors que le code source Object Pascal est sauvegardé dans des fichiers d'extension .PAS. Alors que d'autres langages (comme C# avec Winforms) génèrent les instructions nécessaire à la création des composants de l'interface et l'injectent dans une section du code source du programme; Delphi sépare les données statiques de description des objets d'interface, à la manière de XAML, et se base sur des routines de la VCL pour relire et présenter l'interface lors de l'exécution.
L'interface de développement permet l'ajout de composants tiers (graphiques ou non) via un système de composants. La modularité est obtenue à la conception mais peut aussi être exploitée à l'exécution via un système de chargement dynamique de paquets d'exécution, Borland ayant étendu le concept de bibliothèques partagées et le format Windows DLL en introduisant un modèle propriétaire permettant d'enregistrer dynamiquement et d'exporter des classes entre modules. Le même système sera repris par Microsoft sous Visual Basic avec le format VBX, puis ensuite à l'échelle du système avec les composants COM et ActiveX.
Le code suivant montre ce que Delphi génère lors de la création d'une application vide. La fenêtre à l'écran est représentée par une classe (TForm1) qui sera instanciée à l'exécution et dont l'instance sera assignée à la variable Form1. Les autres composants sont aussi définis sous forme de classes dont le code source est stocké dans les fichiers décrits dans la clause uses de l'unité :
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} end.
Cependant, c'est à peu près tout ce que Delphi génère (mis à part le code des éléments placés par le biais de l'EDI). Si un programmeur averti veut générer des classes de manière efficace pour mieux concevoir et structurer ses données, Borland propose d'autres outils basés sur UML : ModelMaker de ModelMakerTools qui lui, permet de générer tout le code d'interface d'une classe ainsi que d'appliquer facilement des design patterns, ou bien Together, produit Borland résultant du rachat de TogetherSoft.
Kylix est un produit très proche de Delphi (même principe, même interface) qui fonctionne sous Linux et qui permet de créer des programmes pour ce système. Le même code source peut-être compilé sous Linux et Windows (respectivement avec Kylix et Delphi) grâce à l'utilisation de la bibliothèque objet CLX qui s'appuie sur la bibliothèque graphique Qt en suivant les mêmes principe que la bibliothèque VCL. Aujourd'hui Borland a abandonné le développement de Kylix mais la bibliothèque CLX reste présente au sein des nouvelles versions de Delphi.
Lazarus est un projet libre d'EDI pour Free Pascal. Copiant au widget près et aux fonctions près l'outil Delphi (et s'utilisant comme celui-ci), le logiciel, associé à Free Pascal, permet de concevoir des projets 99% compatibles avec Delphi. À l'aide de quelques directives de compilation, un même code orienté traitement (n'utilisant pas directement des fonctions d'interface graphique) peut être compilé sous Delphi, Kylix et Free-Pascal. L'inconvénient de ce logiciel est lié à son caractère récent : une légère instabilité (largement compensée par sa fonction de sauvegarde automatique) et un manque de widgets. Le TFrame, composant le plus utilisé et amélioration majeure de Delphi, fonctionne désormais correctement. Enfin, la documentation officielle n'est pas aussi complète qu'avec le Delphi de Borland mais de très nombreux sites existent palliant ce défaut.