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 ...
(RAD) using the
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 ...
compiler. Its goal is to provide an easy-to-use development environment for programmers developing with the Object Pascal language, which is as close as possible to
Delphi
Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
.
Software developers use Lazarus to create native-code console and
graphical user interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
(GUI) applications for the desktop, and also for mobile devices, web applications, web services, visual components and function libraries for a number of different platforms, including Mac, Linux and Windows.
A project created by using Lazarus on one platform can be compiled on any other one which
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 ...
compiler supports. For desktop applications a single source can target
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 ...
,
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 ...
, and
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 ...
, with little or no modification. An example is the Lazarus IDE itself, created from a single code base and available on all major platforms including the
Raspberry Pi
Raspberry Pi () is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic ...
.
Features
Lazarus provides a highly visual development environment for the creation of rich user interfaces, application logic, and other supporting code artifacts, similar to
Borland 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, ...
. Along with project management features, the Lazarus IDE also provides:
* A What You See Is What You Get (
WYSIWYG
In computing, WYSIWYG ( ), an acronym for What You See Is What You Get, is a system in which editing software allows content to be edited in a form that resembles its appearance when printed or displayed as a finished product, such as a printed d ...
) visual windows layout designer
* GUI widgets or visual components such as edit boxes, buttons, dialogs, menus, etc.
* Non-visual components for common behaviors such as persistence of application settings
* Data-connectivity components for
MySQL
MySQL () is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database o ...
,
PostgreSQL
PostgreSQL (, ), also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. It was originally named POSTGRES, referring to its origins as a successor to the In ...
,
FireBird
Firebird and fire bird may refer to:
Mythical birds
* Phoenix (mythology), sacred firebird found in the mythologies of many cultures
* Bennu, Egyptian firebird
* Huma bird, Persian firebird
* Firebird (Slavic folklore)
Bird species
''Various spe ...
,
Oracle
An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination.
Description
The word '' ...
,
SQLite
SQLite (, ) is a database engine written in the C programming language. It is not a standalone app; rather, it is a library that software developers embed in their apps. As such, it belongs to the family of embedded databases. It is the most ...
,
Sybase
Sybase, Inc. was an enterprise software and services company. The company produced software to manage and analyze information in relational databases, with facilities located in California and Massachusetts. Sybase was acquired by SAP in 2010; ...
, and others
* Data-aware widget set that allows the developer to see data in visual components in the designer to assist with development
* Interactive code debugger
* Code completion
* Code templates
* Syntax highlighting
* Context-sensitive help
* Text resource manager for internationalisation (internationalization)
* Automatic code formatting
* The ability to create custom components
Cross-platform development
Lazarus uses
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 ...
as its back-end compiler. Therefore, Lazarus can theoretically be used to develop applications for all platforms supported by Free Pascal.
Lazarus provides a cross-platform application framework called the
Lazarus Component Library
The Lazarus Component Library, abbreviated ''LCL'' is a visual software component library for the Lazarus IDE.
Description
The LCL consists of a collection of units that provide components and classes especially for visual tasks. It is based ...
(LCL), which provides a single, unified interface for programmers, with different platform-specific implementations. Using LCL, it is possible to create applications in a ''
write once, compile anywhere
Write once, compile anywhere (WOCA) is a philosophy taken by a compiler and its associated software libraries or by a software library/software framework which refers to a capability of writing a computer program that can be compiled on all platfo ...
'' manner, unless system-dependent features are used explicitly.
Cross-compiling
As Free Pascal supports
cross-compiling
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 c ...
, Lazarus applications can be cross-compiled from
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 ...
to
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 ...
/
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 ...
/ etc. and vice versa.
Applications for embedded devices (
smartphone
A smartphone is a portable computer device that combines mobile telephone and computing functions into one unit. They are distinguished from feature phones by their stronger hardware capabilities and extensive mobile operating systems, whic ...
s,
PDA
PDA may refer to:
Science and technology
* Patron-driven acquisition, a mechanism for libraries to purchase books
*Personal digital assistant, a mobile device
* Photodiode array, a type of detector
* Polydiacetylenes, a family of conducting poly ...
s, routers, game consoles) can be cross-compiled from any desktop platform.
Lazarus Component Library
The standard application framework,
Lazarus Component Library
The Lazarus Component Library, abbreviated ''LCL'' is a visual software component library for the Lazarus IDE.
Description
The LCL consists of a collection of units that provide components and classes especially for visual tasks. It is based ...
(LCL) was originally modeled after 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) in Delphi 6, but, unlike Delphi, is not restricted to
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 ...
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
s. This is done by separating the definition of common widget classes and their
widgetset
Widgetsets support platform-sensitive development with the Lazarus IDE system. They act as adapter libraries that provide an interface between a platform-inpedentent sourcecode written in Free Pascal and platform-specific system functions. Thus ...
-specific implementation. Each widget set is supported by providing an ''interface'' which interacts directly with the set.
Database development
Developers can install packages that allow Lazarus to support several
database management system
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 span ...
s (DBMSes). Programs can interact with DBMSes through code or by components dropped on a form.
The following DBMSes are supported out of the box:
*
dBase
dBase (also stylized dBASE) was one of the first database management systems for microcomputers and the most successful in its day. The dBase system includes the core database engine, a query system, a forms engine, and a programming language ...
and
FoxPro
FoxPro was a text-based procedurally oriented programming language and database management system (DBMS), and it was also an object-oriented programming language, originally published by Fox Software and later by Microsoft, for MS-DOS, Windows ...
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 ...
/
Firebird
Firebird and fire bird may refer to:
Mythical birds
* Phoenix (mythology), sacred firebird found in the mythologies of many cultures
* Bennu, Egyptian firebird
* Huma bird, Persian firebird
* Firebird (Slavic folklore)
Bird species
''Various spe ...
. Se *
Microsoft SQL Server
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which ma ...
and
Sybase ASE
SAP ASE (Adaptive Server Enterprise), originally known as Sybase SQL Server, and also commonly known as Sybase DB or Sybase ASE, is a relational model database server developed by Sybase Corporation, which later became part of SAP AG. ASE was ...
. Se *
MySQL
MySQL () is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database o ...
and
MariaDB
MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system (RDBMS), intended to remain free and open-source software under the GNU General Public License. Development is led by some of the ori ...
PostgreSQL
PostgreSQL (, ), also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. It was originally named POSTGRES, referring to its origins as a successor to the In ...
. Se *
SQLite
SQLite (, ) is a database engine written in the C programming language. It is not a standalone app; rather, it is a library that software developers embed in their apps. As such, it belongs to the family of embedded databases. It is the most ...
. Se * Simple, local, flat file databases through TBufDataset, TMemDataset and TSdfDataset.
Differences from Delphi
While resembling Embarcadero Delphi, Delphi in many ways, there are a few limitations regarding the performance and feature set, including:
* Under Windows, the default size of an executable file is larger than the Delphi 6 or 7 equivalent, as Lazarus stores debug information within the executable, rather than as separate files. From 0.9.30 onwards, Lazarus supports external debug symbols; program file size can be significantly reduced (via compiler options) by using an external symbols file. Alternatively, debug info can be stripped from EXEs (e.g. using a port of the UNIX
strip
Strip or Stripping may refer to:
Places
* Aouzou Strip, a strip of land following the northern border of Chad that had been claimed and occupied by Libya
* Caprivi Strip, narrow strip of land extending from the Okavango Region of Namibia to ...
command).
* Components for Delphi can be converted to work in Lazarus, which could be complex, but became less so since 0.9.30, based on FP 2.4.x.
* Lack of Datasnap (not a publicly documented system, Embarcadero proprietary enterprise functionality).
* Networking is mostly available.
* No support to directly call .NET libraries. Object Pascal code can be called from .NET software.
* No support for dynamically loadable packages.
* Not fully compatible with VCL. As mentioned previously, this is by design, although the LCL widget set should suffice for most applications. But this makes the deep repository of available VCL widgets inaccessible without conversion. The conversion effort mostly involves some editing, although there are a few fundamental differences. When porting, missing units in the libraries are a considerably bigger problem than incompatibilities between LCL and VCL.
* Microsoft Office connectivity limited to popping up
Microsoft Excel
Microsoft Excel is a spreadsheet developed by Microsoft for Microsoft Windows, Windows, macOS, Android (operating system), Android and iOS. It features calculation or computation capabilities, graphing tools, pivot tables, and a macro (comp ...
with a simple table filled out (since FPC 2.6.0).
* Microsoft Component Object Model (COM) is supported (since Lazarus 2.2.0).
Distribution and licensing
Like
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 ...
, Lazarus is
free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
. Different portions are distributed under different
free software licenses
A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder (usually the author) ...
, including
GPL
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general us ...
,
LGPL
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
, MPL, and a modified version of LGPL.
Specifically, the LCL, which is statically built into the produced executables, is licensed under a modified version of the LGPL, granting extra permissions to allow it to be statically built into the produced software, including
Dev-Pascal
Dev-Pascal is a free integrated development environment (IDE) distributed under the GNU General Public License for programming in Pascal and Object Pascal. It supports an ancient version of the Free Pascal compiler and GNU Pascal as backends. The ...
*
Embarcadero 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, ...
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.
...