Delphi programming language
Delphi is a programming language and software development environment. It is produced by Borland (known for a time as Inprise). The Delphi language, formerly known as Object Pascal (Pascal with object-oriented extensions) originally targeted only Microsoft Windows, but now builds native applications for Linux and the Microsoft .NET framework as well (see below).
Delphi's most popular use is the development of desktop and enterprise database applications, but as a general purpose development tool it is capable of and used for most types of development projects. It was one of the first of what came to be known as RAD tools, for Rapid Application Development, when released in 1995 for 16-bit Windows. Delphi 2, released a year later, supported 32-bit Windows environments, and a C++ version, C++Builder, followed a few years after. In 2001 a Linux version known as Kylix became available. With one new major release every year, in 2002 support for Linux (through Kylix and the CLX component library) was added and in 2003 .NET became supported in Delphi.Net (Delphi 8).
Delphi's proponents claim that having the Delphi Language, IDE and component library (VCL/CLX) supplied by a single vendor allows for a more internally consistent, and recognizable package.
The chief architect behind Delphi, and its predecessor Turbo Pascal, was Anders Hejlsberg until he left for Microsoft in 1996 where he is the chief designer of C# and a key participant in the creation of the Microsoft .NET Framework. Full support for .NET was added in Delphi 8 (released Dec 2003). Delphi 8 changed its IDE for the first time since its conception to a look and feel similar to Microsoft's Visual Studio for .NET.
The main distinguishing features of Delphi and Kylix from other IDEs are the Delphi language, the VCL/CLX (Visual Component Library), strong emphasis on database connectivity, and large number of third party components.
Notable aspects of the Delphi language include:
- Transparent handling of objects as references/pointers
- Properties as part of the language; that is, member getters and setters (aka accessors and mutators) which transparently encapsulate the access to member fields
- Index Properties and Default Properties to provide access to collections
- Delegates aka type safe method pointers which are used to wire the events triggered by the components
- Delegation of interface implementation to a field or property of the class
- Implementation of Windows message handlers by tagging a method of a class with the number/name of the windows message to handle
- COM independent interfaces with reference counted class implementations
The Delphi product is distributed as various suites:
- Personal
- Professional
- Enterprise
- Architect
Pros and cons
Delphi exhibits the following advantages:
- A large community on Usenet and the web (e.g., news://forums.borland.com and http://info.borland.com/newsgroups/ng_delphi.html)
- Can compile to a single executable, simplifying distribution and reducing dll versioning issues
- Many VCL and 3rd-party components (usually available with full sourcecode)
- Quick optimizing compiler
- Multiple platform native code from the same source code
The following are disadvantages:
- Not a top-tier language
- Partial single vendor lock-in (Borland alone can set the language standard, the compatibles have to follow)
- Limited cross-platform capability for Delphi itself. Compatibles provide more archtecture/OS combinations.
Delphi has no garbage collection, though strings and dynamic arrays are automated using reference counting. Some users consider this a blessing, some a curse.
Clones and alternatives
While not being a direct substitute for the entire product Delphi itself, there are a number of efforts that strive to be more or less language compatible and take Delphi code to places where Delphi and Kylix itself can't reach.
These can get Delphi code running in ways not possible with Delphi (such as supporting different operating systems, free distribution and educational use, and allowing examination of the compiler source) and allow for some vendor independence. These are generally used educationally and to get the server parts of Delphi apps running on non-mainstream operating systems; most had Linux support years before Kylix.
- Bloodshed Dev-Pascal A very polished graphical Win32 editor (though not RAD) as a frontend for both GNU Pascal and Free Pascal.
- FPC on Mac Status page for FPC to Classic Mac OS ports. (Mac OS X port is done by the FPC Unix crew)
- Free Pascal A commandline compiler substitute that aims source compatibility with the core feature set of both the Turbo Pascal and Delphi dialects. Features of Delphi versions beyond 4 are implemented only in the 1.9.x beta series (which will become the 2.0.x series in time). The betas are very usable though. Operates on most x86 operating systems including Win32, Dos (with extender), Linux, FreeBSD, NetBSD and OS/2 and Novell Netware. Supports some other OSes on m68k and PowerPC family, the status of which is still changing fast so not reproduced here. Work on SPARC and Acorn RISC Machine (ARM) has started.
- GNU Pascal (Separately distributed part of the GNU Compiler Collection) While formally not aimed at the Borland dialects of Pascal, it does contain a Borland Pascal compatibility mode, and is slowly absorbing Delphi language features, though not yet directly suitable for recompiling large bodies of Delphi code. It is the most prolific compiler in terms of operating systems and processors though, and therefore deserves mentioning as a last resort.
- InnerFuse is a Delphi interpreter for embedding in applications. It is rumoured to work with several of the alternatives too.
- Lazarus is an effort to build a RAD on top of Free Pascal. The internal classes hierarchy can base itself on several graphical toolkits. The main toolkits are GTK1 and Win32, and GTK2 has already come a long way. Occasionally people want QT and wxWindows, but nobody seems interested enough to implement it.
- OpenSibyl is another effort to build a RAD on top of Free Pascal. However it is geared towards OS/2, and still in initial stages.
- Virtual Pascal is a x86 32-bit Turbo Pascal and Delphi compatible compiler mainly aimed at OS/2 and Windows, though it developed a DOS+Extender and an experimental Linux cross-compiler too. The compiler is stuck on the level of about Delphi V2, and the site hasn't changed significantly in two years though, but of the free alternatives, it is still the one with the best polished IDE and debugger though Free Pascal is getting nearer and nearer.
- WDOSX is a Win32 API emulating DOS extender that can be used to get Delphi console applications running on plain DOS.
- Winsoft Pocket Studio aims to compile stripped down Delphi code to PDA's.
External links
- delphi3000.com
- Delphi Basics Tutorial and Reference information on the basics of Delphi.
- Delphi Developers' Asia and Singapore Fortress of Solitude
- The Delphi Object Model
- Delphi Pages
- Delphi Super Page
- Dr. Bob's Delphi, C++Builder and JBuilder Programming Clinic
- Google Directory: Delphi
- Official Delphi pages on Borland site
- Project JEDI
- Torry's Delphi Pages