Delphi is a
general-purpose programming language
In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application domains. Conversely, a domain-specific programming language is used within a specific area. For exam ...
and a software product that uses the Delphi dialect of the
Object Pascal
Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods.
...
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
and provides an
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
(IDE) for
rapid application development
Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
of desktop,
mobile
Mobile may refer to:
Places
* Mobile, Alabama, a U.S. port city
* Mobile County, Alabama
* Mobile, Arizona, a small town near Phoenix, U.S.
* Mobile, Newfoundland and Labrador
Arts, entertainment, and media Music Groups and labels
* Mobile ( ...
,
web, and
console
Console may refer to:
Computing and video games
* System console, a physical device to operate a computer
** Virtual console, a user interface for multiple computer consoles on one device
** Command-line interface, a method of interacting with ...
software,
currently developed and maintained by
Embarcadero Technologies
Embarcadero Technologies, Inc. is an American computer software company that develops, manufactures, licenses, and supports products and services related to software through several product divisions. It was founded in 1993, went public in 2000, ...
.
Delphi's compilers generate
native code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ver ...
for
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
,
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
,
iOS
iOS (formerly iPhone OS) is a mobile operating system created and developed by Apple Inc. exclusively for its hardware. It is the operating system that powers many of the company's mobile devices, including the iPhone; the term also includes ...
,
Android and
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
(
x64
x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mo ...
).
Delphi includes a code editor, a visual designer, an integrated debugger, a
source code control component, and support for third-party
plugins. The code editor features
Code Insight Code Insight is the name several software vendors (such as Borland, Embarcadero and Oracle) use for source code autocompletion, similar to Microsoft's IntelliSense. Code Insight can also refer to source code analysis information such as annotation
...
(
code completion
Autocomplete, or word completion, is a feature in which an application predicts the rest of a word a user is typing. In Android and iOS smartphones, this is called predictive text. In graphical user interfaces, users can typically press the tab ...
), Error Insight (real-time error-checking), and
refactoring
In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structu ...
. The visual forms designer has the option of using either the
Visual Component Library
The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications. It is written in Object Pascal.
History
The VCL was developed by Borland for use i ...
(VCL) for pure Windows development or the
FireMonkey
FireMonkey (abbreviated FMX) is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi or C++Builder, using Object Pascal or C++ to build cross platform applications for Windows, macOS, iOS, and Android. A 3r ...
(FMX) framework for cross-platform development. Database support is a key feature and is provided by
FireDAC (Database Access Components). Delphi is known for its fast compilation speed, native code, and developer productivity.
Delphi was originally developed by
Borland as a
rapid application development
Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
tool for Windows as the successor of
Turbo Pascal
Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for the Pascal (programming language), Pascal programming language running on CP/M, CP/M-86, and DOS. It was originally develo ...
. Delphi added full
object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pr ...
to the existing language, and the language has grown to support generics,
anonymous methods,
closures, and native
Component Object Model (COM) support.
Delphi and its
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
counterpart,
C++Builder
C++Builder is a rapid application development (RAD) environment, originally developed by Borland and owned by Embarcadero Technologies (a subsidiary of Idera Software, Idera), for writing programs in the C++ programming language currently targeti ...
, are interoperable and jointly sold under the name RAD Studio. There are Professional, Enterprise, and Architect editions, with the higher editions having more features at a higher price. There is also a free-of-charge Community edition, with most of the features of Professional, but restricted to users and companies with low revenue.
Features
Delphi supports
rapid application development
Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
(RAD). Prominent features are a visual designer and two
application framework
In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of application software.
Application frameworks became popular with the rise of graphical user int ...
s,
VCL for Windows and
FireMonkey (FMX) for cross-platform development.
Delphi uses the
Pascal-based programming language
Object Pascal
Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods.
...
created by
Anders Hejlsberg
Anders Hejlsberg (, born 2 December 1960) is a Danish software engineer who co-designed several programming languages and development tools. He was the original author of Turbo Pascal and the chief architect of Delphi. He currently works for Mic ...
for Borland (now IDERA) as the successor to Turbo Pascal. It supports native
cross-compilation
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running. For example, a compiler that runs on a PC but generates code that runs on an Android smartphone is a cross ...
to many platforms including Windows, Linux, iOS and Android.
To better support development for Microsoft Windows and interoperate with code developed with other software development tools, Delphi supports independent interfaces of
Component Object Model (COM) with
reference counted class implementations, and support for many third-party components.
Interface
Interface or interfacing may refer to:
Academic journals
* ''Interface'' (journal), by the Electrochemical Society
* '' Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics''
* '' Int ...
implementations can be delegated to fields or properties of classes. Message handlers are implemented by tagging a method of a class with the integer constant of the message to handle.
Database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
connectivity is extensively supported through VCL database-aware and database access components.
Later versions have included upgraded and enhanced runtime library routines, some provided by the community group
FastCode FastCode is an open source programming project aimed at providing enhanced runtime library routines for Embarcadero Delphi and C++ Builder. Since it was started in 2003 by Dennis Kjaer Christensen, it has contributed highly optimised functionalit ...
.
Characteristics
Delphi uses a
strongly typed high-level programming language
In computer science, a high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ...
, intended to be easy to use and originally based on the earlier Object Pascal language.
Pascal was originally developed as a general-purpose language "suitable for expressing the fundamental constructs known at the time in a concise and logical way", and "its implementation was to be efficient and competitive with existing FORTRAN compilers" but without low-level programming facilities or access to hardware. Turbo Pascal and its descendants, including Delphi, support access to hardware and low-level programming, with the facility to incorporate code written in
assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
and other languages. Delphi's
object orientation features only class- and interface-based
polymorphism.
Metaclasses are first class objects. Objects are actually references to the objects (as in
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
), which Delphi implicitly de-references, so there is usually no need to manually allocate memory for pointers to objects or use similar techniques that some other languages need. There are dedicated reference-counted string types, and also null-terminated strings.
Strings can be concatenated by using the '+' operator, rather than using functions. For dedicated string types Delphi handles memory management without programmer intervention. Since Borland Developer Studio 2006 there are functions to locate
memory leak
In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that Computer memory, memory which is no longer needed is not released. A memory leak may also happe ...
s.
Delphi includes an integrated IDE. The Delphi products all ship with a run-time library (RTL) and a
Visual Component Library
The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications. It is written in Object Pascal.
History
The VCL was developed by Borland for use i ...
(VCL), including most of its source code. Third-party components (sometimes with full
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
) and tools to enhance the IDE or for other Delphi related development tasks are available, some free of charge. The IDE includes a GUI for localization and translation of created programs that may be deployed to a translator; there are also third-party tools with more features for this purpose. The VCL framework maintains a high level of source compatibility between versions, which simplifies updating existing source code to a newer Delphi version. Third-party libraries typically need updates from the vendor but, if source code is supplied, recompilation with the newer version may be sufficient. The VCL was an early adopter of
dependency injection or
inversion of control
In software engineering, inversion of control (IoC) is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as co ...
; it uses a re-usable component model, extensible by the developer. With class helpers new functionality can be introduced to core RTL and VCL classes without changing the original source code of the RTL or VCL.
The compiler is
optimizing
Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criterion, from some set of available alternatives. It is generally divided into two subfi ...
and is a
single-pass compiler. It can optionally compile to a single
executable
In computing, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instruction (computer science), instructi ...
which does not require
DLLs. Delphi can also generate standard DLLs,
ActiveX
ActiveX is a deprecated software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide Web. ...
DLLs,
COM
Com or COM may refer to:
Computing
* COM (hardware interface), a serial port interface on IBM PC-compatible computers
* COM file, or .com file, short for "command", a file extension for an executable file in MS-DOS
* .com, an Internet top-level d ...
automation servers and
Windows services
In Windows NT operating systems, a Windows service is a computer program that operates in the background. It is similar in concept to a Unix daemon. A Windows service must conform to the interface rules and protocols of the Service Control Manager ...
.
The Delphi IDEs since Delphi 2005 increasingly support
refactoring
In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structu ...
features such as method extraction and the possibility to create
UML
The Unified Modeling Language (UML) is a general-purpose, developmental modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system.
The creation of UML was originally m ...
models from the source code or to modify the source through changes made in the model.
Delphi has communities on the
web, where also its employees actively participate.
Backward compatibility
Delphi is one of the languages where backward compatibility is close to 100%. Although each new release of Delphi attempts to keep as much
backward compatibility
Backward compatibility (sometimes known as backwards compatibility) is a property of an operating system, product, or technology that allows for interoperability with an older legacy system, or with input designed for such a system, especially i ...
as possible to allow existing code reuse, new features, new libraries, and improvements sometimes make newer releases less than 100% backwards compatible.
Since 2016, there have been new releases of Delphi every six months, with new platforms being added approximately every second release.
Frameworks
Delphi offers two frameworks for visual application development, VCL and FireMonkey (FMX):
*
Visual Component Library
The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications. It is written in Object Pascal.
History
The VCL was developed by Borland for use i ...
(VCL) is the framework for developing pure Windows applications. VCL is a long-standing framework, included in the first release of Delphi and actively developed ever since then.
*
FireMonkey
FireMonkey (abbreviated FMX) is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi or C++Builder, using Object Pascal or C++ to build cross platform applications for Windows, macOS, iOS, and Android. A 3r ...
(later abbreviated FMX), was released in 2011, as part of Delphi XE2, together with an additional set of built-in compilers for non-Windows platforms. FireMonkey is a cross-platform framework for Windows, macOS, iOS, Android and Linux (x64). The GUI parts of FireMonkey are largely based on Direct3D and OpenGL. FireMonkey is not compatible with VCL; they are two separate frameworks. FireMonkey applications do, however, allow easy sharing of non-visual code
units
Unit may refer to:
Arts and entertainment
* UNIT, a fictional military organization in the science fiction television series ''Doctor Who''
* Unit of action, a discrete piece of action (or beat) in a theatrical presentation
Music
* Unit (album), ...
with VCL applications, enabling a lot of code to be ported or shared easily between the platforms.
Interoperability
Delphi and its
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
counterpart,
C++Builder
C++Builder is a rapid application development (RAD) environment, originally developed by Borland and owned by Embarcadero Technologies (a subsidiary of Idera Software, Idera), for writing programs in the C++ programming language currently targeti ...
, are interoperable. They share many core components, notably the IDE, the VCL and FMX frameworks, and much of the
runtime library
In computer programming, a runtime library is a set of low-level routines used by a compiler to invoke some of the behaviors of a runtime environment, by inserting calls to the runtime library into compiled executable binary. The runtime enviro ...
. In addition, they can be used jointly in a project. For example, C++Builder 6 and later can combine source code from Delphi and C++ in one project, while packages compiled with C++Builder can be used from within Delphi. In 2007, the products were released jointly as RAD Studio, a shared host for Delphi and C++Builder, which can be purchased with either or both.
Starting with Rio, there is also interoperability with Python.
History
Uses in schools
Delphi is the medium used to teach programming in
South Africa
South Africa, officially the Republic of South Africa (RSA), is the southernmost country in Africa. It is bounded to the south by of coastline that stretch along the South Atlantic and Indian Oceans; to the north by the neighbouring countri ...
n schools as a subject of information technology (IT).
Roadmaps
Embarcadero publishes "roadmaps" describing their future development plans. The most recent one was published in November 2020. Version 10.5 referred to in the November 2020 roadmap was renamed 11.0.
Related software
* Borland Enterprise Studio, a precursor to RAD Studio, is a software development suite that includes support for multiple languages. Borland Enterprise Studio for Windows supports Delphi.
*
Borland Kylix
Borland Kylix is a compiler and integrated development environment (IDE) formerly sold by Borland, but later discontinued. It is a Linux software development environment based on Borland Delphi and Borland C++ Builder, which runs under Microsoft ...
: Similar to Delphi, but for Linux, released in 2001. This was the first attempt to add Linux support in the Delphi product family. Kylix used the new CLX cross-platform framework (based on QT), instead of Delphi's VCL. Kylix was discontinued after version 3. Today Linux support is integrated into the main Delphi product and uses the FireMonkey cross platform framework.
*
InterBase
InterBase is a relational database management system (RDBMS) currently developed and marketed by Embarcadero Technologies. InterBase is distinguished from other RDBMSs by its small footprint, close to zero administration requirements, and multi-g ...
is an embeddable SQL database that integrates natively to Delphi and C++Builder for client/server or embedded development. Its distinguishing features reduced administration requirements, commercial-grade data security, disaster recovery, and change synchronization. It is also accessible by all major languages and platforms in the market with database connection protocols like ODBC, ADO, ADO.NET and even with Java by JDBC/ODBC Bridge or Java type 4 connectors.
*
JBuilder
JBuilder is a discontinued integrated development environment (IDE) for the programming language Java from Embarcadero Technologies. Originally developed by Borland, JBuilder was spun off with CodeGear which was eventually purchased by Embarcader ...
was a tool for Java development based on Eclipse since version JBuilder 2007.
*
RadPHP (later replaced with HTML5 Builder) was an
IDE for
PHP
PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
that provided true RAD functionality. It has a form designer similar to that of Delphi or
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to:
* Visual Basic .NET (now simply referred to as "Visual Basic"), the current version of Visual Basic launched in 2002 which runs on .NET
* Visual Basic (cl ...
, and an integrated debugger based on the
Apache
The Apache () are a group of culturally related Native American tribes in the Southwestern United States, which include the Chiricahua, Jicarilla, Lipan, Mescalero, Mimbreño, Ndendahe (Bedonkohe or Mogollon and Nednhi or Carrizaleño an ...
web server. It also includes a
VCL library ported to PHP. Unlike other IDEs it supports Web 2.0 features such as
AJAX
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* ''Ajax'' (play), by the ancient Greek ...
. Delphi for PHP was announced on March 20, 2007, renamed in October 2010 to RadPHP, and is based on Qadram Q studio. Embarcadero acquired Qadram in January 2011.
* Delphi Prism (later known as Embarcadero Prism) derived from the
Oxygene programming language (previously known as Chrome) from RemObjects. It ran in the Microsoft Visual Studio IDE rather than RAD Studio. It was licensed and re-branded by Embarcadero to replace Delphi.NET when that product was discontinued.
*
Free Pascal
Free Pascal Compiler (FPC) is a compiler for the closely related programming-language dialects Pascal and Object Pascal. It is free software released under the GNU General Public License, witexception clausesthat allow static linking against it ...
is an open-source Pascal
cross-platform
In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software r ...
cross-compiler
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running. For example, a compiler that runs on a PC but generates code that runs on an Android smartphone is a cross ...
that supports most of Delphi's Object Pascal code. Free Pascal also has its own language extensions, multiple compiler
anguage syntaxmodes, and supports 18+ operating systems and 9+ processor architectures.
Lazarus is a cross-platform RAD IDE that uses the Free Pascal compiler.
Notable third-party libraries
*
FastCode FastCode is an open source programming project aimed at providing enhanced runtime library routines for Embarcadero Delphi and C++ Builder. Since it was started in 2003 by Dennis Kjaer Christensen, it has contributed highly optimised functionalit ...
– Enhanced
runtime libraries and memory manager.
*
OpenWire (library) – Data flow, events, and state synchronization component library.
*
Project Jedi (Joint Endeavor of Delphi Innovators) – A collaborative open-source effort by the Delphi developer community to provide translations of
Windows API
The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations th ...
interfaces, additional components and controls, and algorithms and data structures.
*
Teechart
TeeChart is a charting library for programmers, developed and managed by Steema Software of Girona, Catalonia, Spain. It is available as commercial and non-commercial software. TeeChart has been included in most Delphi and C++Builder products si ...
– Charting library.
References
Further reading
*
External links
*
{{GUI builders
Articles with example Pascal code
CodeGear software
Integrated development environments
Pascal (programming language)
Pascal (programming language) compilers
Pascal (programming language) software
User interface builders