Delphi (software): Difference between revisions
Jim McKeeth (talk | contribs) Added screenshot to the Infobox |
→Roadmaps: Roadmaps are no longer published |
||
(76 intermediate revisions by 50 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|General-purpose programming language and a software product}} |
|||
{{for|the macromolecular electrostatics modeling software package|DelPhi}} |
{{for|the macromolecular electrostatics modeling software package|DelPhi}} |
||
{{Infobox |
{{Infobox software |
||
| name = Delphi |
| name = Delphi |
||
| logo = Embarcadero_Delphi_10.4_Sydney_Product_Logo_and_Icon.svg |
| logo = Embarcadero_Delphi_10.4_Sydney_Product_Logo_and_Icon.svg |
||
| logo size = |
| logo size = 100px |
||
| screenshot = File:Delphi 10.4 IDE |
| screenshot = File:Screenshot of Delphi 10.4 IDE with VCL designer and Dark Theme.png |
||
| programming language = Mostly Delphi (Object Pascal) |
| programming language = Mostly Delphi (Object Pascal) |
||
| caption = Screenshot of Delphi 10.4, with the visual form editor being used to create an application |
| caption = Screenshot of Delphi 10.4, with the visual form editor being used to create an application |
||
| author = [[Borland]], [[CodeGear]], [[Embarcadero Technologies|Embarcadero]] |
| author = [[Borland]], [[CodeGear]], [[Embarcadero Technologies|Embarcadero]] |
||
| developer = [[Embarcadero Technologies]] |
| developer = [[Embarcadero Technologies]] |
||
| released = 1995 |
|||
| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}} |
| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}} |
||
| latest release date = {{start date and age|{{wikidata|qualifier|P548=Q2804309|P348|P577}}}} |
| latest release date = {{start date and age|{{wikidata|qualifier|P548=Q2804309|P348|P577}}}} |
||
| operating_system = Runs on [[Windows |
| operating_system = Runs on [[Windows]];<ref>{{Cite web | url=http://docwiki.embarcadero.com/RADStudio/Sydney/en/Installation_Notes#Operating_System_Requirements | title=Installation Notes - Operating System Requirements | access-date=2020-09-05 | archive-date=2020-08-06 | archive-url=https://web.archive.org/web/20200806012405/http://docwiki.embarcadero.com/RADStudio/Sydney/en/Installation_Notes#Operating_System_Requirements | url-status=live }}</ref> targets [[Windows]], [[Linux]], [[macOS]], [[Android (operating system)|Android]], [[iOS]] |
||
| genre = [[Software Development]], [[ |
| genre = [[Software Development]], [[Graphical user interface builder|Designer]], [[Integrated development environment|IDE]], [[Compiler]], [[Runtime library|RTL]] |
||
| license = [[Freemium]] |
| license = [[Freemium]] |
||
| website = {{URL| |
| website = {{URL|https://www.embarcadero.com/products/delphi}} |
||
}} |
}} |
||
'''Delphi''' is a [[general-purpose programming language]] and a software product that uses the Delphi dialect of the [[Object Pascal]] [[programming language]] and provides an [[integrated development environment]] (IDE) for [[rapid application development]] of desktop, [[mobile application|mobile]], [[web application|web]], and [[console application|console]] software,<ref name="Buchanan2003">{{cite book|author=William Buchanan|title=Mastering Delphi Programming|url=https://books.google.com/books?id=2AgnBQAAQBAJ&pg=PP10|date=4 February 2003|publisher=Palgrave Macmillan|isbn=978-1-137-17356-0|pages=10–}}{{Dead link|date=January 2024 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> currently developed and maintained by [[Embarcadero Technologies]]. |
|||
Delphi's compilers generate [[native code]] for [[Microsoft Windows]], [[macOS]], [[iOS]], [[Android (operating system)|Android]] and [[Linux]] ([[X86-64|x64]]).<ref>{{cite web|title=Performance Comparison from Delphi 2010 to XE6 (Part 2)|date=12 May 2014 |url=http://blogs.riversoftavg.com/index.php/2014/05/12/performance-comparison-from-delphi-2010-to-xe6-part-2/|publisher=Riversoft AVG|access-date=9 March 2016|archive-date=26 July 2015|archive-url=https://web.archive.org/web/20150726170712/http://blogs.riversoftavg.com/index.php/2014/05/12/performance-comparison-from-delphi-2010-to-xe6-part-2/|url-status=live}}</ref><ref name="auto">{{cite web|title=The Delphi Geek: Built For Speed|url=http://www.thedelphigeek.com/2010/06/built-for-speed.html|access-date=9 March 2016|archive-date=23 March 2016|archive-url=https://web.archive.org/web/20160323012544/http://www.thedelphigeek.com/2010/06/built-for-speed.html|url-status=live}}</ref><ref>{{cite web|title=Discussion on Hacker News about Delphi being alive|url=https://news.ycombinator.com/item?id=7614236|publisher=Hacker News|access-date=9 March 2016|archive-date=2 July 2016|archive-url=https://web.archive.org/web/20160702153911/https://news.ycombinator.com/item?id=7614236|url-status=live}}</ref> |
|||
'''Delphi''' is a software product that uses the Delphi dialect of the [[Object Pascal]] programming language and provides an [[integrated development environment]] (IDE) for [[rapid application development]] of desktop, [[mobile application|mobile]], [[web application|web]], and [[console application|console]] software,<ref name="Buchanan2003">{{cite book|author=William Buchanan|title=Mastering Delphi Programming|url=https://books.google.com/books?id=2AgnBQAAQBAJ&pg=PP10|date=4 February 2003|publisher=Palgrave Macmillan|isbn=978-1-137-17356-0|pages=10–}}</ref> currently developed and maintained by [[Embarcadero Technologies]]. |
|||
Delphi includes a code editor, a visual designer, an integrated debugger, a [[Version control|source code control]] component, and support for third-party [[Plugin (computing)|plugins]]. The code editor features [[Code Insight]] ([[code completion]]), Error Insight (real-time error-checking), and [[Code refactoring|refactoring]]. The visual forms designer has the option of using either the [[Visual Component Library]] (VCL) for pure Windows development or the [[FireMonkey]] (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.{{Citation needed|reason=There are no citations in this paragraph and the last sentence is written like an endorsement.|date=November 2021}} |
|||
Delphi's compilers generate [[native code]] for [[Microsoft Windows]], [[macOS]], [[iOS]], [[Android (operating system)|Android]] and [[Linux]] ([[X86-64|x64]]).<ref>{{cite web|title=Performance Comparison from Delphi 2010 to XE6 (Part 2)|url=http://blogs.riversoftavg.com/index.php/2014/05/12/performance-comparison-from-delphi-2010-to-xe6-part-2/|publisher=Riversoft AVG|accessdate=9 March 2016}}</ref><ref name="auto">{{cite web|title=The Delphi Geek: Built For Speed|url=http://www.thedelphigeek.com/2010/06/built-for-speed.html|accessdate=9 March 2016}}</ref><ref>{{cite web|title=Discussion on Hacker News about Delphi being alive|url=https://news.ycombinator.com/item?id=7614236|publisher=Hacker News|accessdate=9 March 2016}}</ref> |
|||
Delphi includes a code editor, a visual designer, an integrated debugger, a [[Version control|source code control]] component, and support for third-party [[Plugin (computing)|plugins]]. The code editor features [[Code Insight]] ([[code completion]]), Error Insight (real-time error-checking), and [[Code refactoring|refactoring]]. The visual forms designer has the option of using either the [[Visual Component Library]] (VCL) for pure Windows development or the [[FireMonkey]] (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]] tool for Windows as the successor of [[Turbo Pascal]]. Delphi added full [[object-oriented programming]] to the existing language, and the language has grown to support generics, [[Anonymous function|anonymous methods]], [[Anonymous function#Closures|closures]], and native [[Component Object Model]] (COM) support. |
Delphi was originally developed by [[Borland]] as a [[rapid application development]] tool for Windows as the successor of [[Turbo Pascal]]. Delphi added full [[object-oriented programming]] to the existing language, and the language has grown to support generics, [[Anonymous function|anonymous methods]], [[Anonymous function#Closures|closures]], and native [[Component Object Model]] (COM) support. |
||
Delphi and its [[C++]] counterpart, [[C++Builder]], 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.<ref>{{Cite web |title=Delphi: App Development Product Editions |author= |website=Embarcadero |date= |access-date=13 March 2021 |url=https://www.embarcadero.com/products/delphi/product-editions |archive-date=14 March 2021 |archive-url=https://web.archive.org/web/20210314162551/https://www.embarcadero.com/products/delphi/product-editions |url-status=live }} With download link for Delphi Feature Matrix</ref> |
|||
Delphi and its [[C++]] counterpart, [[C++Builder]], are interoperable and jointly sold under the name RAD Studio. |
|||
==Features== |
==Features== |
||
Delphi supports [[rapid application development]] (RAD). Prominent features are a visual designer and two [[application framework |
Delphi supports [[rapid application development]] (RAD). Prominent features are a visual designer and two [[application framework]]s, [[Visual Component Library]] (VCL) for Windows and [[FireMonkey]] (FMX) for cross-platform development. |
||
Delphi uses the [[Pascal programming language|Pascal]]-based programming language [[Object Pascal]] |
Delphi uses the [[Pascal (programming language)|Pascal]]-based programming language [[Object Pascal]] created by [[Anders Hejlsberg]] for Borland (now IDERA) as the successor to Turbo Pascal. It supports native [[cross-compilation]] 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 counting |
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 counting]] class implementations, and support for many third-party components. [[Interface (computer science)|Interface]] implementations can be delegated to fields or properties of classes. Message handlers are implemented by tagging a [[Method (computer programming)|method]] of a [[Class (computer programming)|class]] with the integer constant of the message to handle.{{Citation needed|date=November 2021}} |
||
[[Database]] connectivity is extensively supported through VCL database-aware and database access components. |
[[Database]] connectivity is extensively supported through VCL database-aware and database access components. |
||
Line 39: | Line 40: | ||
===Characteristics=== |
===Characteristics=== |
||
Delphi uses a [[Strongly-typed programming language|strongly typed]] [[high-level programming language]], intended to be easy to use and originally based on the earlier Object Pascal language. [[Pascal (programming 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"<ref>{{cite web|url=http://www.math.bas.bg/bantchev/place/pascal/recollections.pdf|title=Recollections About the Development of Pascal}}</ref> 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]] and other languages. Delphi's [[Object-oriented programming|object |
Delphi uses a [[Strongly-typed programming language|strongly typed]] [[high-level programming language]], intended to be easy to use and originally based on the earlier Object Pascal language. [[Pascal (programming 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"<ref>{{cite web|url=http://www.math.bas.bg/bantchev/place/pascal/recollections.pdf|title=Recollections About the Development of Pascal|access-date=2016-01-12|archive-date=2016-05-12|archive-url=https://web.archive.org/web/20160512232508/http://www.math.bas.bg/bantchev/place/pascal/recollections.pdf|url-status=live}}</ref> 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]] and other languages. Delphi's [[Object-oriented programming|object-orientation]] features only class- and interface-based [[Polymorphism (computer science)|polymorphism]].<ref name="WangTan2006">{{cite book|author1=Lingfeng Wang|author2=Kay CHen Tan|title=Modern Industrial Automation Software Design|url=https://books.google.com/books?id=H93R1EE7rL8C&pg=PA113|date=20 January 2006|publisher=John Wiley & Sons|isbn=978-0-471-77627-7|pages=113–}}</ref> Metaclasses are first class objects. Objects are references to the objects (as in [[Java (programming language)|Java]]), 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]]s. |
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]]s. |
||
Delphi includes an integrated IDE. The Delphi products all ship with a run-time library (RTL) and a [[Visual Component Library]] (VCL), including most of its source code. Third-party components (sometimes with full [[source code]]) 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 [[ |
Delphi includes an integrated IDE. The Delphi products all ship with a run-time library (RTL) and a [[Visual Component Library]] (VCL), including most of its source code. Third-party components (sometimes with full [[source code]]) 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]]; it uses a reusable 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 and |
The compiler is [[Optimizing compiler|optimizing]] and is a [[One-pass compiler|single-pass compiler]]. It can optionally compile to a single [[executable]] which does not require [[Dynamic-link library|DLL]]s. Delphi can also generate standard DLLs, [[ActiveX]] DLLs, [[Component Object Model|COM]] automation servers and [[Windows services]]. |
||
The Delphi IDEs since Delphi 2005 increasingly support [[refactoring]] features such as method extraction and the possibility to create [[Unified Modeling Language|UML]] models from the source code or to modify the source through changes made in the model. |
The Delphi IDEs since Delphi 2005 increasingly support [[refactoring]] features such as method extraction and the possibility to create [[Unified Modeling Language|UML]] models from the source code or to modify the source through changes made in the model. |
||
Line 53: | Line 54: | ||
===Backward compatibility=== |
===Backward compatibility=== |
||
Although each new release of Delphi attempts to keep as much |
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]] as possible to allow existing code reuse, new features, new libraries, and improvements sometimes make newer releases less than 100% backward compatible. |
||
Since 2016, there have been new releases of Delphi every six months, with new platforms being added approximately every second release.<ref>{{cite web|title=List of Delphi language features and version in which they were introduced/deprecated|url=https://stackoverflow.com/questions/8460037/list-of-delphi-language-features-and-version-in-which-they-were-introduced-depre|publisher=Stack Overflow| |
Since 2016, there have been new releases of Delphi every six months, with new platforms being added approximately every second release.<ref>{{cite web|title=List of Delphi language features and version in which they were introduced/deprecated|url=https://stackoverflow.com/questions/8460037/list-of-delphi-language-features-and-version-in-which-they-were-introduced-depre|publisher=Stack Overflow|access-date=9 March 2016|archive-date=28 February 2016|archive-url=https://web.archive.org/web/20160228200427/http://stackoverflow.com/questions/8460037/list-of-delphi-language-features-and-version-in-which-they-were-introduced-depre|url-status=live}}</ref> |
||
===Frameworks=== |
===Frameworks=== |
||
Delphi offers two frameworks for visual application development, VCL and FireMonkey (FMX): |
Delphi offers two frameworks for visual application development, VCL and FireMonkey (FMX): |
||
* [[Visual Component Library]] (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. |
* [[Visual Component Library]] (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]] (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 [[Unit (Software Development)|units]] with VCL applications, enabling a lot of code to be ported or shared easily between the platforms. |
* [[FireMonkey]] (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 [[Unit (Software Development)|units]] with VCL applications, enabling a lot of code to be ported or shared easily between the platforms. |
||
=== |
===Interoperability=== |
||
Delphi and its [[C++]] counterpart, [[C++Builder]], are interoperable. They share many core components, notably the IDE, the VCL and FMX frameworks, and much of the [[runtime library]]. 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. |
Delphi and its [[C++]] counterpart, [[C++Builder]], are interoperable. They share many core components, notably the IDE, the VCL and FMX frameworks, and much of the [[runtime library]]. 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. |
|||
=== Sample "Hello World" program === |
|||
== Code examples == |
|||
{{See also|Object Pascal#Delphi_and_Free_Pascal_version}}<syntaxhighlight lang="delphi"> |
|||
To show a message: |
|||
program ObjectPascalExample; |
|||
<syntaxhighlight lang="delphi"> |
|||
procedure TForm1.ShowAMessage; |
|||
begin |
|||
ShowMessage('Hello World!'); |
|||
end; |
|||
</syntaxhighlight> |
|||
type |
|||
To give a label a caption using the VCL: |
|||
THelloWorld = class |
|||
<syntaxhighlight lang="delphi"> |
|||
procedure |
procedure Put; |
||
end; |
|||
procedure THelloWorld.Put; |
|||
begin |
begin |
||
Writeln('Hello, World!'); |
|||
end; |
end; |
||
</syntaxhighlight> |
|||
var |
|||
To give a label text using FireMonkey: |
|||
HelloWorld: THelloWorld; { this is an implicit pointer } |
|||
<syntaxhighlight lang="delphi"> |
|||
procedure TForm1.ShowSomethingOnCreate; |
|||
begin |
begin |
||
HelloWorld := THelloWorld.Create; { constructor returns a pointer to an object of type THelloWorld } |
|||
Label1.Text := 'Hello World!'; |
|||
HelloWorld.Put; |
|||
end; |
|||
HelloWorld.Free; { this line deallocates the THelloWorld object pointed to by HelloWorld } |
|||
</syntaxhighlight> |
|||
end. |
|||
</syntaxhighlight>Note that the object construct is still available in Delphi. |
|||
==History== |
==History== |
||
{{Hatnote|See [[History of Delphi (software)]] for details on the progression of language and IDE development from 1995 to the present.}} |
{{Hatnote|See [[History of Delphi (software)]] for details on the progression of language and IDE development from 1995 to the present.}} |
||
== Uses in schools == |
|||
* '''Delphi''' - February 14, 1995 - 16-bit Windows 3.1 support, full object-oriented language features, property-method-event model, two-way editor, visual designer, Visual Component Library (VCL) |
|||
Delphi is the medium used to teach programming in [[South Africa]]n schools as a subject of information technology (IT).<ref>{{Cite web |author=Staff Writer |title=Embarcadero Delphi named developer language of choice for South African schools |url=https://mybroadband.co.za/news/software/157199-embarcadero-delphi-named-developer-language-of-choice-for-south-african-schools.html |access-date=2022-03-17 |language=en-US |archive-date=2022-03-31 |archive-url=https://web.archive.org/web/20220331204240/https://mybroadband.co.za/news/software/157199-embarcadero-delphi-named-developer-language-of-choice-for-south-african-schools.html |url-status=live }}</ref> |
|||
* '''Delphi 2''' - 1996 - 32-bit Windows 95 [[File:Borland_Delphi_3_Splash_Screen.jpg|thumb|right|Borland Delphi 3 Splash Screen]] |
|||
* '''Delphi 3''' - 1997 - COM based interfaces |
|||
* '''Delphi 4''' - 1998 - Windows 98, docking, anchors, method overloading, and dynamic arrays |
|||
* '''Delphi 5''' - 1999 - Desktop layouts, Frames, XML support, DBGo for ADO, Language Translations |
|||
* '''Delphi 6''' - 2001 - SOAP Web Services, dbExpress, Structure Window, BizSnap, DataSnap |
|||
* '''Delphi 7''' - 2002 - Web application development and Windows XP themes [[File:Borland_Delphi_7_Splash_Screen.jpg|thumb|right|Borland Delphi 7 Splash Screen]] |
|||
* '''Delphi 8''' - 2003 - .NET Support, WinForms & ASP.NET, with many new language enhancements, the new ''Galileo'' IDE |
|||
* '''Delphi 2005''' - 2004 - Multi-unit namespaces, Error Insight, History Tab, for..in, Function inlining, Refactorings, Data Explorer, Integrated Unit Testing |
|||
* '''Delphi 2006''' - 2005 - Operator overloading, Static methods and properties, Designer Guidelines, Form positioner view, Live code templates, Block Completion, Line numbers, Change Bars, Sync-edit, Code Folding and method navigation, Debugging Tool-Tips, Searchable Tool Palette, FastMM memory manager, Support for MySQL, Unicode support in dbExpress, TTrayIcon, TFlowPanel, TGridPanel |
|||
* '''Delphi 2007''' - 2006 - MS Build, Build Events, Build Configurations, Windows Vista support – glassing, theming, dbExpress connection pooling, delegate drivers, CPU view, FastCode enhancements |
|||
* '''Delphi 2009'''<ref>{{cite web |title=What's New in Delphi and C++Builder 2009 |url=http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/whatsnewtiburon_xml.html |website=docs.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - 2008 - Unicode, Generics, Anonymous Methods, Ribbon Controls, DataSnap, Build Configurations, Class Explorer, Type Library Editor Window, PNG support |
|||
* '''Delphi 2010'''<ref>{{cite web |title=What's New in Delphi and C++Builder 2010 |url=http://docwiki.embarcadero.com/RADStudio/2010/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_2010 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - 2009 - Attributes, Enhanced RTTI, Direct2D canvas, Windows 7 support, Touch/Gestures, Source Code Formatter, Thread Specific Breakpoints, Debugger Visualizers, IOUtils unit, Background Compilation, Source Code Audits and Metrics |
|||
* '''Delphi XE'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE |url=http://docwiki.embarcadero.com/RADStudio/XE/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE |website=What's New |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - 2010 - Regular Expression Library, Subversion Integration, JavaScript Framework, REST support, Indy WebBroker, Amazon EC2, Microsoft Azure, Build Groups, Named Threads in the Debugger, Command line Audits, Metrics and Documentation Generation |
|||
* '''Delphi XE2'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE2 |url=http://docwiki.embarcadero.com/RADStudio/XE2/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE2 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - 2011 - FireMonkey, 64-Bit Windows, Mac OSX, Live Bindings, VCL Styles, Unit Scope Names, Platform Assistant, DataSnap Mobile Connectors, Cloud API, HTTPS support, TCP monitoring, dbExpress support for ODBC drivers, Deployment Manager [[File:RAD_Studio_XE2_Splash_Screen.png|thumb|right|RAD Studio XE2 Splash Screen]] |
|||
* '''Delphi XE3'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE3 |url=http://docwiki.embarcadero.com/RADStudio/XE3/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE3 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - 2012 - Metropolis UI, touch/gestures, FMX support for bitmap styles, TMaterial source for FMX 3D components, FMX audio/video, VCL/FMX support for sensor devices, FMX Location sensor component, Virtual keyboard support, DirectX 10 support |
|||
* '''Delphi XE4'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE4 |url=http://docwiki.embarcadero.com/RADStudio/XE4/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE4 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - April 2013 - iOS support, TWebBrowser component, ARC (automatic reference counting) for all TObject classes, Platform Services, Notifications, Location, Motion and Orientation sensor components, TListView component, Mac OSX full screen support, FireDAC universal data access components, InterBase – IBLite and IBToGo |
|||
* '''Delphi XE5'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE5 |url=http://docwiki.embarcadero.com/RADStudio/XE5/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE5 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - September 2013 - Android support, Notification component, iOS 7 style support, Configurable form designer for mobile devices, REST Services client access and authentication components |
|||
* '''Delphi XE6'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE6 |url=http://docwiki.embarcadero.com/RADStudio/XE6/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE6 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - April 2014 - Windows 7 & 8.1 styles, Cloud REST Services, more FireDAC databases, full InterBase integration |
|||
* '''Delphi XE7'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE7 |url=http://docwiki.embarcadero.com/RADStudio/XE7/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE7 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - September 2014 - FireMonkey Multi-Device unified designer, IBLite embeddable database for Windows, Mac, Android, and iOS, Multi-Display Support, Multi-Touch Support, Full-Screen Immersive for Android, FireMonkey Supports the Pull-to-Refresh Feature for TListView on iOS and Android, FireMonkey Save State Feature |
|||
* '''Delphi XE8'''<ref>{{cite web |title=What's New in Delphi and C++Builder XE8 |url=http://docwiki.embarcadero.com/RADStudio/XE8/en/What's_New_in_Delphi_and_C%2B%2BBuilder_XE8 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - April 2015 - GetIt Package Manager, Native Presentation of TListView, TSwitch, TMemo, TCalendar, TMultiView, and TEdit on iOS, Interactive Maps, New Options for Media Library, InputQuery now Supports Masking Input Fields |
|||
* '''Delphi 10 ''Seattle'''''<ref>{{cite web |title=What's New in Seattle |url=http://docwiki.embarcadero.com/RADStudio/Tokyo/en/What%27s_New_in_Seattle |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - [[File:Embarcadero_Delphi_10_Seattle_Splash_Screen.png|thumb|right|The splash screen from Delphi 10 Seattle. Shows introduction of the DX logo.]] August 2015 - Android Background Services, FireDAC for MongoDB, FireMonkey controls zOrder, New TBeaconDevice allows decice to simulate a “beacon”, StyleViewer for Windows 10 Style in Bitmap Style Designer, High-DPI Awareness and 4K monitors support, Windows 10 styles, Support for Android Services in the IDE, Support for calling WinRT APIs |
|||
* '''Delphi 10.0.1 ''Seattle''''' (''Update 1'') - November 2015 - FMX Grid control for iOS, iOS native UI styling, New FMX feature demos, Platform support for iOS 10 and macOS Sierra |
|||
* '''Delphi 10.1 ''Berlin'''''<ref>{{cite web |title=What Was New in Berlin |url=http://docwiki.embarcadero.com/RADStudio/Tokyo/en/What_Was_New_in_Berlin |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - April 2016 - Android 6.0, Windows Desktop Bridge, Address Book for iOS and Android, New ListView Item Designer, New CalendarView control, QuickEdits for VCL, High DPI Support on Windows, Hint Property Changes, EMS Apache Server Support, GetIt based Web installer |
|||
* '''Delphi 10.1.1 ''Berlin''''' ''(Berlin Update 1)'' - September 2016 - TGrid support for iOS, ControlType toggle for Platform or Render, FMX ListView Items Designer, FMX Search Filter, Deploy iOS apps to macOS Sierra, 50+ Internet of Things packages |
|||
* '''Delphi 10.1.2 ''Berlin''''' ''(Berlin Update 2)'' - December 2016 - Windows 10 App Store deployment, Quick Edit feature for VCL Form Designer, VCL calendar controls mimic Window RT and provide backwards compatibility, Windows 10 styles for VCL and FMX [[File:RAD_Studio_10.1_Berlin_Update_2_-_Anniversary_Edition.jpg|thumb|right|'''Delphi 10.1.2 ''Berlin''''' ''(Berlin Update 2)'' Splash Screen.]] |
|||
*'''Delphi 10.2 ''Tokyo'''''<ref>{{cite web |title=What's New |url=http://docwiki.embarcadero.com/RADStudio/Tokyo/en/What%27s_New |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - March 2017 - 64-bit Linux, FireDAC on Linux, MariaDB v5.5, MySQL v5.7, Firebird Direct I/O, QuickEdits for FMX, New VCL Controls for Windows 10, Updated IDE Look & Feel (Dark Theme), RAD Server Deployment License Included |
|||
* '''Delphi 10.2.1 ''Tokyo'''''<ref>{{cite web |title=10.2 Tokyo - Release 1 |url=http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_1 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> ''(Tokyo Update 1)'' - August 2017 - Improved QPS (Quality, Performance, Stability), Fixed over 140 customer reported Quality Portal issues, BPL package loading for Windows Creators Update, Improved support for latest versions of iOS and XCode, TEdit improvements on latest Android, faster controls rendering, Parse API for other providers, FireDAC improvements for SQL Server, InterBase 2017, ODB |
|||
* '''Delphi 10.2.2 ''Tokyo<ref>{{cite web|title=10.2 Tokyo - Release 2|url=http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_2|accessdate=6 November 2020|website=docwiki.embarcadero.com|publisher=Embarcadero Technologies}}</ref>''''' ''(Tokyo'' ''Update 2)'' - December 2017 - QPS: Quality, Performance and Stability, New VCL Controls and Layouts (Panels), Dataset to JSON, Mobile platforms QPS, RAD Server licensing, User Experience improvements (manage platforms, progress bar on loading etc), FMX QuickEdits, Dark IDE Theme |
|||
* '''Delphi 10.2.3 ''Tokyo'''''<ref>{{cite web |title=10.2 Tokyo - Release 3 |url=http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_3 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> ''(Tokyo Update 3)'' - July 2018 - Enhancements to core visual frameworks, Expanded RAD Server support for Ext JS for creating Sencha Ext JS web clients with a RAD Server backend, and various patches/hotfixes. Inclusion of mobile support in Delphi and C++Builder Professional Edition. |
|||
* '''Delphi 10.3 ''Rio'''''<ref>{{cite web |title=What's New |url=http://docwiki.embarcadero.com/RADStudio/Rio/en/What%27s_New |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - November 2018 - Inline variables, Android zOrder, Android Native controls and API Level 26, HighDPI imrpvements, Extensive IDE UI modernization |
|||
* '''Delphi 10.3.1 ''Rio'''''<ref>{{cite web |title=10.3 Rio - Release 1 |url=http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_1 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> ''(Rio Update 1)'' - February 2019 - Expanded support for iOS 12 and iPhone X series devices, RAD Server Console UI redesign and migration to the Ext JS framework, Improved FireDAC support for Firebird 3.0.4 and Firebird embedded, New VCL and FMX Multi-Device Styles , IDE Productivity Components, Quality improvements to over 150 customer reported issues |
|||
* '''Delphi 10.3.2 ''Rio'''''<ref>{{cite web |title=10.3 Rio - Release 2 |url=http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_2 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> ''(Rio Update 2)'' - September 2019 - Delphi macOS 64-bit, RAD Server Wizards and Deployment Improvements, Android Push Notification Support with Firebase, Delphi Linux FireMonkey GUI Application Support, Delphi Android 64-bit support, macOS Catalina (Delphi) and iOS 13 support, RAD Server Docker support [[File:Delphi_10.3.2_Splash_Screen.png|thumb|right|Delphi 10.3.2 Splash Screen]] |
|||
* '''Delphi 10.3.3 ''Rio'''''<ref>{{cite web |title=10.3 Rio - Release 3 |url=http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_3 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> ''(Rio Update 3)'' - February 2020 - Delphi Android 64-bit support, Delphi iOS 13 and macOS Catalina support, RAD Server Docker deployment, Improved App Tethering stability, Improved iOS push notification support, Debugger improvements |
|||
* '''Delphi 10.4 ''Sydney'''''<ref>{{cite web |title=What's New |url=http://docwiki.embarcadero.com/RADStudio/Sydney/en/What%27s_New |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> - May 2020 - Language Server Protocol (LSP), Enhanced Windows 10 native features, managed records, parallel library enhancements |
|||
* '''Delphi 10.4.1 Sydney'''<ref>{{cite web |title=10.4 Sydney - Release 1 |url=http://docwiki.embarcadero.com/RADStudio/Sydney/en/10.4_Sydney_-_Release_1 |website=docwiki.embarcadero.com |publisher=Embarcadero Technologies |accessdate=6 November 2020}}</ref> ''(Sydney Update 1)'' - September 2020 - Addressed key customer requests, 850+ enhancements and fixes, Windows Server 2019 support, Multi-monitor and 4k scaling improvements, Parallel programming component updates [[File:Delphi_10.4.1_Splash_Screen.png|thumb|right|Embarcadero Delphi 10.4.1 Sydney Splash Screen]] |
|||
==Roadmaps== |
==Roadmaps== |
||
Embarcadero |
Embarcadero used to publish "roadmaps" describing their future development plans. The last one was published in November 2020.<ref>{{cite web|url=https://blogs.embarcadero.com/rad-studio-november-2020-roadmap-pm-commentary/|title=RAD Studio November 2020 Roadmap PM Commentary|date=17 November 2020 |publisher=blogs.embarcadero.com|access-date=2020-11-27|archive-date=2020-11-28|archive-url=https://web.archive.org/web/20201128221819/https://blogs.embarcadero.com/rad-studio-november-2020-roadmap-pm-commentary/|url-status=live}}</ref> Version 10.5 referred to in the November 2020 roadmap was renamed 11.0. |
||
Starting with Delphi 11, Embarcadero decided to no longer publish formal roadmaps. Instead, possible new features are now presented in a loose order through blog entries and online webinars. An important role has Marco Cantú (product manager) with his [https://blogs.embarcadero.com/author/marcocantuembarcadero-com/ blog]. |
|||
== RAD Studio == |
|||
RAD Studio is both the formal name for the IDE and a product suite that contains both Delphi and [[C++Builder]]. The benefit of RAD Studio is it makes it easy to integrate Delphi's Object Pascal and C++ together giving access to more integrations with third party libraries and the combined features of both languages. Previous versions of RAD Studio also included HTML5 Builder and other bundled products. The Enterprise and Architect editions of RAD Studio currently include Aqua Data Studio and [[Ext JS]].<ref>{{Cite web|title=RAD Studio Product Editions RAD Studio Product Editions RAD Studio is available in 3 editions – Professional, Enterprise and Architect. Learn more.|url=https://www.embarcadero.com/products/rad-studio/product-editions|access-date=2020-11-06|website=Embarcadero Website|language=en-gb}}</ref> |
|||
It is also technically accurate to refer to the IDE as the Delphi IDE. |
|||
==Related software== |
==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.<ref>{{Cite web |url=http://www.borland.com/estudio/ |title=Borland Enterprise Studio |access-date=2002-02-05 |archive-url=https://web.archive.org/web/20020205084110/http://www.borland.com/estudio/ |archive-date=2002-02-05 |url-status=live}}</ref> |
|||
* Borland |
* [[Borland Kylix]]: Similar to Delphi, but for Linux, released in 2001. This was the first attempt to add Linux support to the Delphi product family.<ref>{{Cite web |url=https://edn.embarcadero.com/article/26771 |title=Kylix is here! |access-date=2020-09-05 |archive-date=2019-09-04 |archive-url=https://web.archive.org/web/20190904154032/http://edn.embarcadero.com/article/26771 |url-status=dead}}</ref> Kylix used the new CLX cross-platform framework (based on [[Qt (software)|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]] 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. |
|||
* [[Borland Kylix]]: Similar to Delphi, but for Linux, released in 2001. This was the first attempt to add Linux support in the Delphi product family.<ref>{{Cite web |url=https://edn.embarcadero.com/article/26771 |title=Kylix is here! |access-date=2020-09-05}}</ref> 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]] is an embeddable SQL database that integrates natively to Delphi and C++Builder for client/server or embedded development. It's 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]] was a tool for Java development based on Eclipse since version JBuilder 2007. |
* [[JBuilder]] was a tool for Java development based on Eclipse since version JBuilder 2007. |
||
* [[RadPHP]] (later replaced with HTML5 Builder) was an [[Integrated development environment|IDE]] for [[PHP]] that provided true RAD functionality. It has a form designer similar to that of Delphi or [[Visual Basic]], and an integrated debugger based on the [[Apache HTTP Server|Apache]] web server. It also includes a [[Visual Component Library|VCL]] library ported to PHP. Unlike other IDEs it supports Web 2.0 features such as [[ |
* [[RadPHP]] (later replaced with HTML5 Builder) was an [[Integrated development environment|IDE]] for [[PHP]] that provided true RAD functionality. It has a form designer similar to that of Delphi or [[Visual Basic]], and an integrated debugger based on the [[Apache HTTP Server|Apache]] web server. It also includes a [[Visual Component Library|VCL]] library ported to PHP. Unlike other IDEs, it supports Web 2.0 features such as [[Ajax (programming)|Ajax]]. 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 |
* Delphi Prism (later renamed Embarcadero Prism) derived from the [[Oxygene (programming language)|Oxygene language]] (formerly named Chrome) from RemObjects. It ran in the Microsoft Visual Studio IDE rather than RAD Studio. It was licensed and rebranded by Embarcadero to replace Delphi.NET when that product was discontinued. |
||
* [[Free Pascal]] is an open-source Pascal [[cross-platform]] [[cross-compiler]] that supports most of Delphi's Object Pascal code. Free Pascal also has its own language extensions, multiple compiler [language syntax] modes, and supports 18+ operating systems and 9+ processor architectures.<ref>{{cite web|url=http://www.freepascal.org |title=Free Pascal Homepage |publisher=freepascal.org | |
* [[Free Pascal]] is an open-source Pascal [[Cross-platform software|cross-platform]] [[cross-compiler]] that supports most of Delphi's Object Pascal code. Free Pascal also has its own language extensions, multiple compiler [language syntax] modes, and supports 18+ operating systems and 9+ processor architectures.<ref>{{cite web |url=http://www.freepascal.org/ |title=Free Pascal Homepage |publisher=freepascal.org |access-date=2016-04-27 |archive-date=1999-01-25 |archive-url=https://web.archive.org/web/19990125095436/http://www.freepascal.org/ |url-status=live}}</ref> [[Lazarus (IDE)|Lazarus]] is a cross-platform RAD IDE that uses the Free Pascal compiler. |
||
===Notable third-party libraries=== |
===Notable third-party libraries=== |
||
* [[FastCode]] – Enhanced [[runtime library|runtime libraries]] and memory manager. |
* [[FastCode]] – Enhanced [[runtime library|runtime libraries]] and memory manager. |
||
* [[OpenWire (library)]] – Data flow, events, and state synchronization component library. |
* [[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]] interfaces, additional components and controls, and algorithms and data structures. |
|||
* [[Teechart]] – Charting library. |
* [[Teechart]] – Charting library. |
||
* [[Devexpress VCL]] Enhanced component library |
|||
==References== |
==References== |
||
Line 177: | Line 134: | ||
==External links== |
==External links== |
||
* {{Official website}} |
|||
*{{Official website}} |
|||
*[http://www.delphibasics.info/ Delphi Basics] Help and reference for the fundamentals of the Delphi |
|||
*[http://delphi.wikia.com/wiki/Useful_Sites Useful Sites – Delphi Programming] |
|||
{{Pascal programming language family}} |
{{Pascal programming language family}} |
||
{{Integrated development environments}} |
|||
{{GUI builders}} |
|||
[[Category:Articles with example Pascal code]] |
|||
[[Category:CodeGear software]] |
[[Category:CodeGear software]] |
||
[[Category:Delphi (programming language)| ]] |
[[Category:Delphi (programming language)| ]] |
||
Line 192: | Line 147: | ||
[[Category:Pascal (programming language) software]] |
[[Category:Pascal (programming language) software]] |
||
[[Category:User interface builders]] |
[[Category:User interface builders]] |
||
<!-- Hidden categories below --> |
|||
[[Category:Articles with example Pascal code]] |
Latest revision as of 17:42, 18 October 2024
Original author(s) | Borland, CodeGear, Embarcadero |
---|---|
Developer(s) | Embarcadero Technologies |
Initial release | 1995 |
Stable release | RAD Studio 12.2 Athens[1]
/ 12 September 2024 |
Written in | Mostly Delphi (Object Pascal) |
Operating system | Runs on Windows;[2] targets Windows, Linux, macOS, Android, iOS |
Type | Software Development, Designer, IDE, Compiler, RTL |
License | Freemium |
Website | www |
Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software,[3] currently developed and maintained by Embarcadero Technologies.
Delphi's compilers generate native code for Microsoft Windows, macOS, iOS, Android and Linux (x64).[4][5][6]
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 completion), Error Insight (real-time error-checking), and refactoring. The visual forms designer has the option of using either the Visual Component Library (VCL) for pure Windows development or the FireMonkey (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.[citation needed]
Delphi was originally developed by Borland as a rapid application development tool for Windows as the successor of Turbo Pascal. Delphi added full object-oriented programming 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++ counterpart, C++Builder, 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.[7]
Features
[edit]Delphi supports rapid application development (RAD). Prominent features are a visual designer and two application frameworks, Visual Component Library (VCL) for Windows and FireMonkey (FMX) for cross-platform development.
Delphi uses the Pascal-based programming language Object Pascal created by Anders Hejlsberg for Borland (now IDERA) as the successor to Turbo Pascal. It supports native cross-compilation 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 counting class implementations, and support for many third-party components. Interface 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.[citation needed]
Database 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.
Characteristics
[edit]Delphi uses a strongly typed high-level programming 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"[8] 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 and other languages. Delphi's object-orientation features only class- and interface-based polymorphism.[9] Metaclasses are first class objects. Objects are references to the objects (as in Java), 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 leaks.
Delphi includes an integrated IDE. The Delphi products all ship with a run-time library (RTL) and a Visual Component Library (VCL), including most of its source code. Third-party components (sometimes with full source code) 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; it uses a reusable 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 and is a single-pass compiler. It can optionally compile to a single executable which does not require DLLs. Delphi can also generate standard DLLs, ActiveX DLLs, COM automation servers and Windows services.
The Delphi IDEs since Delphi 2005 increasingly support refactoring features such as method extraction and the possibility to create UML 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
[edit]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 as possible to allow existing code reuse, new features, new libraries, and improvements sometimes make newer releases less than 100% backward compatible.
Since 2016, there have been new releases of Delphi every six months, with new platforms being added approximately every second release.[10]
Frameworks
[edit]Delphi offers two frameworks for visual application development, VCL and FireMonkey (FMX):
- Visual Component Library (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 (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 with VCL applications, enabling a lot of code to be ported or shared easily between the platforms.
Interoperability
[edit]Delphi and its C++ counterpart, C++Builder, are interoperable. They share many core components, notably the IDE, the VCL and FMX frameworks, and much of the runtime library. 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.
Sample "Hello World" program
[edit]program ObjectPascalExample;
type
THelloWorld = class
procedure Put;
end;
procedure THelloWorld.Put;
begin
Writeln('Hello, World!');
end;
var
HelloWorld: THelloWorld; { this is an implicit pointer }
begin
HelloWorld := THelloWorld.Create; { constructor returns a pointer to an object of type THelloWorld }
HelloWorld.Put;
HelloWorld.Free; { this line deallocates the THelloWorld object pointed to by HelloWorld }
end.
Note that the object construct is still available in Delphi.
History
[edit]Uses in schools
[edit]Delphi is the medium used to teach programming in South African schools as a subject of information technology (IT).[11]
Roadmaps
[edit]Embarcadero used to publish "roadmaps" describing their future development plans. The last one was published in November 2020.[12] Version 10.5 referred to in the November 2020 roadmap was renamed 11.0. Starting with Delphi 11, Embarcadero decided to no longer publish formal roadmaps. Instead, possible new features are now presented in a loose order through blog entries and online webinars. An important role has Marco Cantú (product manager) with his blog.
Related software
[edit]- 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.[13]
- Borland Kylix: Similar to Delphi, but for Linux, released in 2001. This was the first attempt to add Linux support to the Delphi product family.[14] 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 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 was a tool for Java development based on Eclipse since version JBuilder 2007.
- RadPHP (later replaced with HTML5 Builder) was an IDE for PHP that provided true RAD functionality. It has a form designer similar to that of Delphi or Visual Basic, and an integrated debugger based on the Apache web server. It also includes a VCL library ported to PHP. Unlike other IDEs, it supports Web 2.0 features such as Ajax. 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 renamed Embarcadero Prism) derived from the Oxygene language (formerly named Chrome) from RemObjects. It ran in the Microsoft Visual Studio IDE rather than RAD Studio. It was licensed and rebranded by Embarcadero to replace Delphi.NET when that product was discontinued.
- Free Pascal is an open-source Pascal cross-platform cross-compiler that supports most of Delphi's Object Pascal code. Free Pascal also has its own language extensions, multiple compiler [language syntax] modes, and supports 18+ operating systems and 9+ processor architectures.[15] Lazarus is a cross-platform RAD IDE that uses the Free Pascal compiler.
Notable third-party libraries
[edit]- FastCode – Enhanced runtime libraries and memory manager.
- OpenWire (library) – Data flow, events, and state synchronization component library.
- Teechart – Charting library.
References
[edit]- ^ "Announcing the Availability of RAD Studio 12.2 Athens". 12 September 2024. Retrieved 12 September 2024.
- ^ "Installation Notes - Operating System Requirements". Archived from the original on 2020-08-06. Retrieved 2020-09-05.
- ^ William Buchanan (4 February 2003). Mastering Delphi Programming. Palgrave Macmillan. pp. 10–. ISBN 978-1-137-17356-0.[permanent dead link ]
- ^ "Performance Comparison from Delphi 2010 to XE6 (Part 2)". Riversoft AVG. 12 May 2014. Archived from the original on 26 July 2015. Retrieved 9 March 2016.
- ^ "The Delphi Geek: Built For Speed". Archived from the original on 23 March 2016. Retrieved 9 March 2016.
- ^ "Discussion on Hacker News about Delphi being alive". Hacker News. Archived from the original on 2 July 2016. Retrieved 9 March 2016.
- ^ "Delphi: App Development Product Editions". Embarcadero. Archived from the original on 14 March 2021. Retrieved 13 March 2021. With download link for Delphi Feature Matrix
- ^ "Recollections About the Development of Pascal" (PDF). Archived (PDF) from the original on 2016-05-12. Retrieved 2016-01-12.
- ^ Lingfeng Wang; Kay CHen Tan (20 January 2006). Modern Industrial Automation Software Design. John Wiley & Sons. pp. 113–. ISBN 978-0-471-77627-7.
- ^ "List of Delphi language features and version in which they were introduced/deprecated". Stack Overflow. Archived from the original on 28 February 2016. Retrieved 9 March 2016.
- ^ Staff Writer. "Embarcadero Delphi named developer language of choice for South African schools". Archived from the original on 2022-03-31. Retrieved 2022-03-17.
- ^ "RAD Studio November 2020 Roadmap PM Commentary". blogs.embarcadero.com. 17 November 2020. Archived from the original on 2020-11-28. Retrieved 2020-11-27.
- ^ "Borland Enterprise Studio". Archived from the original on 2002-02-05. Retrieved 2002-02-05.
- ^ "Kylix is here!". Archived from the original on 2019-09-04. Retrieved 2020-09-05.
- ^ "Free Pascal Homepage". freepascal.org. Archived from the original on 1999-01-25. Retrieved 2016-04-27.
Further reading
[edit]- McConnell, Steve (1993). Code Complete. Microsoft Press. ISBN 1-55615-484-4.