Lazarus (IDE)

From Wikipedia, the free encyclopedia
  (Redirected from Lazarus (software))
Jump to: navigation, search
Lazarus
Lazarus Logo (new).png
Lazarus 0.9.26 Carbon.png
Lazarus IDE 0.9.26 running on Mac OS X
Developer(s) Volunteers
Stable release 0.9.30.2 / November 4, 2011; 3 months ago (2011-11-04)
Operating system Cross-platform
Type RAD tool for Pascal and Object Pascal
License GNU General Public License, GNU Lesser General Public License, and others
Website http://www.lazarus.freepascal.org/

Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions, FreeBSD, and Mac OS X. The earliest versions were created before that, and Lazarus is a front end for the much older Free Pascal.

Contents

[edit] Cross-platform development

Lazarus uses Free Pascal as its back-end compiler. Therefore Lazarus can, theoretically, be used to develop applications for all platforms supported by Free Pascal.

Similar to Free Pascal’s run-time library, Lazarus provides a cross-platform application framework called the Lazarus Component Library (LCL), which provides a single, unified interface for programmers, with different platform-specific implementations. Using LCL, one can create applications in a write once, compile anywhere manner, unless system-dependent features are used explicitly.

[edit] Cross-compiling

As Free Pascal supports cross-compiling, Lazarus applications can be cross-compiled from Windows to Linux and FreeBSD, and vice versa. Compiling from Mac OS X to Windows, Linux and FreeBSD is possible. Cross-compiling to Mac OS X can be done, but is not ready for use by end users.

Applications for embedded devices (Phones, PDA's, routers, game consoles} are cross-compiled from a *nix or Windows.

[edit] Lazarus Component Library

Architecture of the Lazarus Component Library

The standard application framework, Lazarus Component Library (LCL) was modeled after the Visual Component Library (VCL) in Delphi 6, but is available for operating systems other than Windows. This is done by separating the definition of common widget classes and their widgetset-specific implementation. Support for each widget set is done by providing an interface which interacts directly with the widget set.[1]

Currently (early 2011), the development status of widget toolkit interfaces is roughly as follows.

Widget set Supported Operating Systems Status
Windows API, GDI Windows Mainstream use
Windows CE API, GDI Windows CE Mainstream use
GTK+ 1.2.x Linux (via X11) Deprecated
GTK+ 2.8+ Windows, Linux (X11 and framebuffer) and Mac OS X (via X11) Mainstream use
Qt 4.5+ Windows, Linux (X11 and framebuffer), Mac OS X Mainstream use. Works in Windows, Linux, Mac OS X, Maemo, etc
Cocoa Mac OS X In progress
Carbon Mac OS X Mainstream use
fpGUI Windows, Windows CE, Linux (via X11) Initial stage
Lazarus Custom Drawn Controls Android, Windows, Linux (via X11), Mac OS X Initial stage

[edit] Database development

Developers can install packages that allow Lazarus to support several databases. Programs can interact with databases through code or by components dropped on a form. The data-aware components represent fields and are connected by the correct setting of properties to a TDataSource, which represents a table, and to the database components, which may be TPSQLDatabase, TSQLiteDataSet, or equivalent.

The following databases are directly supported:

Some helper data providers (CSV, SDF) are also provided.

[edit] Web development

There are some packages allowing web development with Lazarus, they're mostly based on fcl-web package provided by Free Pascal.

  • fpWeb, officially supported package capable of developing CGI, FastCGI and Apache module based web application. It's distributed along with Lazarus, but not installed by default. The three kinds could share the same source code except for the main project file, which normally shouldn't be manually modified. Since 0.9.31 r31011, there's a new HTTP server application registered in the project menu. This adds support for embedding the webserver along with the application, making the entire web application standalone (just like WebDesign below).
  • WebDesign, enhancing fpWeb with drag-n-drop web page design (previewing enabled with the help of XPCom library), embedded web server capability and jQuery wrappers. Maintained by Joost van der Luis (links from official website is outdated, updated version is available from fppkg repository).
  • FreeSpider, a 3rd party package with smart module loading concept, but similar with fpWeb in other parts. Supports only CGI.
  • ExtPascal, a ExtJS wrapper, generates HTML + ExtJS code dynamically upon page request. Promotes use of FastCGI (CGI -> FastCGI gateway provided). The wrapper is generated from ExtJS documentation with a self-made tool.

[edit] Differences from Delphi

While resembling Delphi in many ways, there are a few limitations regarding the performance and feature set.

  • Under Windows executable, by default, file size is somewhat larger than the Delphi (6/7) equivalent because debug information is included within Lazarus executables, instead of as separate files like Delphi. However, the 0.9.30 release introduces an external debug symbols feature. Lazarus program file size can be significantly reduced by using an external symbols file (it can be set in Compiler options), and also by using Strip and UPX (although UPX has significant disadvantages). See FPC wiki: Size Matters
  • Components for Delphi can be installed in Lazarus, but they must be converted, which can be complex. (2.4.x based 0.9.30 should make this easier)
  • Missing important media libraries and widgets:
    • Microsoft Office connectivity (popping up Excel with a simple table filled out works fine in 2.5.x trunk)
    • Datasnap (not a publicly documented system, Borland proprietary enterprise functionality)
  • Networking is mostly available, with a wealth of packages to choose from:
    • Indy.
      • Status: Linux/x86, win32: 100 percent working;
      • FreeBSD/x86: also 100 percent, but requires developer's versions;
      • Mac OS X/PowerPC: servers untested, various endianness problems in demos;
      • Other platforms remain untested, though some client success on wince was claimed;
    • ICS A bit win32-centric, but quite well suited for Windows-specific customization if needed.
    • Synapse FPC support hugely improved the last year.
    • lNet is an FPC native non-blocking variant, with Linux/FreeBSD specific (KSE/epoll) optimizations for mass connectivity
  • No support to directly call .NET libraries. On the other hand, it is possible to call Object Pascal code from .NET software. [1]
  • COM support was missing from the 2.0.x series, but was initially working in 2.2.0, and has matured since.
  • Missing dynamically loadable packages support.
  • Not 100 percent compatible with VCL. As mentioned previously this is by design, although the current 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 and COM support are a considerably bigger problem than incompatibilities between LCL and VCL.

[edit] Distribution and licensing

Like Free Pascal, Lazarus is free software. Different portions are distributed under different free software licenses, including GPL, LGPL, MPL, and a modified version of LGPL.[2]

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 proprietary ones.

Note that installing a design-time package is equivalent to linking to the IDE. Thus, distributing the Lazarus IDE with a GPL-incompatible design-time package (e.g. the JEDI packages, which are licensed under the Mozilla Public License) pre-installed would cause a license violation. This does not prohibit proprietary packages from being developed with Lazarus, though.

[edit] Applications produced with Lazarus

  • Audio X is a media management tool that can organize and sort your media without using a separate database, so the data set is always synchronized. Many audio formats are usable directly but you can also organize your LP or CD collection with it. It stores data in XML files so they are also viewable with a web browser. Made with Lazarus/FPC.
  • Cactus Jukebox is an audio player that comes with a database to organize your MP3 file collection. It is platform independent and currently available for Linux and 32-bit Windows. Made with Lazarus/FPC.
  • Cartes du Ciel is a free planetarium program for Linux, Mac OS X and Windows. The software maps out and labels most of the constellations, planets, and objects you can see with a telescope. It's fully written in Lazarus/FPC and released under GPL.
  • Becape is an open source backup tool aimed at personal/desktop usage. It does incremental backups and stores the backup info in an SQLite database allowing the restoration of the exact state of the backed files at a chosen date. It's fully written in Lazarus/Freepascal.
  • CQRLOG is an advanced ham radio logger based on a Firebird database. Provides radio control based on hamlib libraries (currently support of over 140 radio types and models), DX cluster connection, QRZ callbook (web version), a grayliner, ON6DP QSL manager database support and a most accurate country resolution algorithm based on country tables developed by OK1RR. CQRLOG is strongly focused on easy operation and maintenance. Made with Lazarus/FPC.
  • Cheat Engine is an open source memory scanner/hex editor/debugger. It is useful for cheating in computer games. Since version 6.0 it is compiled with Lazarus/FPC.
  • Dedalu is a collection of small and simple projects developed in Lazarus/FPC by Giuseppe Ridinò (aka Pepecito). They are games, editors, utilities, etc.
  • DarGUI is a graphical interface for Denis Corbin's Dar backup utility, developed using Lazarus/FPC.
  • HJSplit for Linux is a freeware file splitter. HJSplit supports file sizes of over 100 Gigabytes, Split, Join/Recombine, MD5 checksums, file-compare and "run without install". Runs on Linux. Created using Free Pascal and Lazarus.
  • KComm is a ham radio logging program developed specifically for Elecraft K2 and K3 transceivers. It works under Windows or Linux. It is designed for the average ham radio operator who wants an easy to use logging program also suitable for casual contest use. It supports CW Transmit from the keyboard, CW decoding, PSK31/63 transmit and receive. DX Cluster client and integration with CW Skimmer. Made with Lazarus/FPC.
  • LockHunter a free utility used to force deletion of any files, even those that are locked by some processes. Made with Lazarus/FPC, currently supports Windows 32 / 64 bit only.
  • Master Maths specializes in computer based training and maths. The third incarnation of their flagship product is developed using Lazarus, Firebird database and tiOPF v2. The product has two parts. An Administration application and a Learner Browser (used to view and mark the teaching modules). The Learner Browser uses Adobe Flash extensively and is a CGI web application. The complete product runs under Linux and Windows. Made with Lazarus/FPC and uses the fpGUI Toolkit as its widgetset.
  • MRIcron is a medical image visualization and analysis package. The software provides tools for drawing volumes of interest and volume rendering. In addition, it includes non-parametric statistical mapping (npm) and conversion of images from DICOM format to NIfTI format (dcm2nii). Made with Lazarus/FPC, it is currently available for Windows (using WinAPI), Linux (GTK1, GTK2 or QT) and Mac OS X (Carbon or GTK1).
  • MRIcroGL uses GLScene to provide hardware accelerated volume rendering. It can display grayscale images (e.g. CT, MRI) or full color images (e.g. photographs from the visible human dataset).
  • Music Player by Freebyte.com is a freeware no-frills music player designed for Linux. It supports MP3, Wav, OGG and AIFF files. Created using Lazarus, Free Pascal and the Bass audio library.
  • MyNotex is a free software for Gnu/Linux useful to take and to manage textual notes.
  • OutKafe is a next-generation free and open source cybercafe management suite. OutKafe is licensed under the GNU GPL version 3, and is thus considered free software. OutKafe is developed by A.J. Venter with sponsorship from OutKast I.T. Solutions C.C. and the kind contributions of several volunteers. OutKafe is running hundreds of cybercafe’s at business, schools and other establishments around the world. Made with Lazarus/FPC.
  • Peazip is an open source archiver, made with Lazarus/FPC
  • QFront is a platform independent frontend for the CPU emulator QEMU. Made with Lazarus/FPC.
  • SimThyr is a continuous numerical simulation program for thyrotropic feedback control used for research and education (open source, cross platform for Mac OS X, Windows and Linux).
  • Smith4VNA is a program for driving "miniVNA" Vector Analyzer via USB port. The results of measurements are both table and Smith Chart. Made with Lazarus/FPC, Linux + Windows32 platforms.
  • SPINA is a medical cybernetic software package that allows for calculating constant structure parameters of endocrine feedback control systems from hormone levels obtained in vivo. This free software comes with source code in Lazarus/FPC and PocketStudio.
  • TreePad Lite for Linux is a freeware tree-based personal information manager for Linux. It has been designed to manage, store, edit, organize and browse any type of textual data, such as: notes, emails, articles, links, phone numbers, addresses, scraps pasted from the Web, etc. Created using Lazarus and Free Pascal.
  • TruckBites business management software for independent trucking companies and owner/operators in the USA. Written with Lazarus/FPC under contract by Tony Maro for both Linux and Windows for "Partners in Trucking, LLC".
  • Virtual Magnifying Glass is a free, open source, screen magnification tool for Windows, Mac OS X and Linux.
  • Double Commander is a cross-platform open source file manager with two panels side by side.
  • Wireless Orders for Mini Bar Cafe Win32 TCP/IP Application Server, Win32 TCP/IP Client, WinCE TCP/IP Client.

[edit] Libraries compatible with Lazarus

[edit] See also

[edit] References

[edit] External links

Personal tools
Namespaces

Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages