mercredi 28 janvier 2009

Free Pascal et Lazarus

En tant que développeur Delphi, c'est toujours avec une certaines curiosité que je m'attarde sur Lazarus.
C'est un peu par hazard que je suis revenu faire un tour sur le site officiel... l'ocassion d'écrire un petit billet pour mémoire.
Qu'est ce que Lazarus
Lazarus est une librairie de classes pour FreePascal qui émulent Delphi. Free Pascal est un compilateur sous license GPL fonctionnant sous Linux, Win32, OS/2, 68K et plus encore. Free Pascal a été conçu pour être capable de comprendre et compiler la syntaxe Orienté Object de Delphi.. Lazarus est la piece manquante du puzzle perrmettant de développer des logiciels Delphi pour différentes plateformes. A l'opposé du principe de Java "coder & compiler une fois, exécuté partout", Lazarus et Free Pascal opte pour l'approche "coder une fois, compilable partout". Puisque le même compilateur est disponible sur toutes les plateformes, cela signifie qu'il n'est pas nécessaire de modifier le code pour produire 'exactement' la même application pour différentes plateforme.
Quelle GUI est utilisé? Quel type de Widget?
C'est la partie la plus achevée. Lazarus a été développé pour être totalement et completement indépendant des API. Une fois le code écrit, la compiler link ce dernier aux APIs des widget que vous avez choisi. Si vous voulez utiliser GTK+ ou encore être Gnome compliant... pas de problème. Aussi longtemps que le code d'interfacage existe pour les widgets que vous utiliser... vous pouvez les utiliser (link). S'il n'est pas disponible, vous pouvez l'écrire.
Par exemple. Disons que vous créez un produit pour Windows utilisant les widgets standards de Windows. Et bien maintenant, vous pouvez créer une version Linux.
Premièrement, vous décidez quel est le set de widgets que vous voulez utiliser (par exemple gtk+).
Vous copier votre code sur une machine de développement Linux, vous compilez et linkez ce dernier avec l'interfacage Gtk+ (gtk+ interface unit).
Voila comment vous venez juste de créer une version Linux d'un produit Windows sans coding addtitionnel.

At ce state le Team Lazarus utilise gtk+ comme widget d'origine... mais l'équipe travaille actuellement sur  Qt et les API Win32. Des que Lazarus atteindra la version 1.0, les développeurs seront capable de créder/développer les unités d'interface pour attacher la LCL (Lazarus Component Libraries) a d'autres ensembles de widget.
Est-ce un environnement RAD comme Delphi?
Oui... cependant, il n'est pas encore complet. Certaines portions du Form Designer on encore un grand besoin de développement. Dans son ensemble, l'IDE est complet et peut être utilisé pour la plupart des besoins de développement. Cependant, plusieurs aspects du projet ont encore besoin d'aide.
Puis-je utiliser mon code Delphi
Oui mais dans une certaine mesure. Si le code est du "standard Delphi pascal" et utilise les composants standard trouvés dans Delphi... alors la réponse est OUI.
Par contre, si vous utilisez quelques base de données, OCX ou DCU spécifiques... alors la réponse sera probablement non. Ces éléments sont spécifiques a Windows et fonctionneraient uniquemen t avec Windows. Cependant, si vous cherchez a developper des application Windows en utilisant Free Pascal et Lazarus... alors la réponse sera OUI. Cette fonctionalité n'est pas encore ajoutée à la LCL mais cela sera possible dans le future.
Puis-je créer des applications commerciales?
La réponse est OUI (voir ici pour plus d'informations)
Quelques questions sans réponses
Dans l'immédiat, mes maigres recherches n'ont pas encore répondu au questions suivantes:
  1. Est-il possible de faire des développements attaquant des DB Microsoft Sql Server (en Ado ou OleDB ou SqlClient)?
    C'est déjà possible avec le projet mono (c# compiler pour Linux)... quid pour Lazarus?
  2. Est-il possible de faire des développement web (WebModule) utilisant Apache?
  3. Est-il possible de développer des WebServices?

Sources:

1 commentaire:

Anonyme a dit…

J'en avais déjà entendu parlé, et j'ai très envie d'essayer de convertir 3D-Crade en Lazarus. Ca me permettrait d'en faire une version Linux.
Comme je n'utilise que des contrôles VCL (3D-crade n'est qu'un interpreteur de commande qui utilise TCanvas pour le rendu) ça pourrait le faire...