Programmation Delphi : le meilleur du Pascal

Delphi 2009 : résurrection en beauté et en qualité

Non, Delphi n’est pas mort. Attendue, espérée par un grand nombre de développeurs attachés à ce langage si productif, Delphi 2009 se démarque des versions précédentes en révélant de réelles qualités.

Pléthoriques. Telles sont les sources codées en Delphi de par le monde, dans des domaines aussi divers que la gestion de parc, la comptabilité, la logistique… sans parler des applications métiers internes, classiques ou Web.

D’où l’importance de la sortie de Delphi 2009.Depuis la version 7, on croyait Delphi en fin de vie. Il y avait bien eu les différentes moutures du Borland Developer Studio, mais elles avaient peu convaincu. Dans le même temps, les difficultés de Borland face au rouleau compresseur Microsoft (avec Visual Studio) ne laissaient rien présager de bon. L’éditeur s’est finalement séparé de son IDE en créant une filiale dédiée, Codegear, laquelle a ensuite passé le flambeau à Embarcadero Technologies, sous la marque duquel Delphi2009 nous est aujourd’hui présenté.

Comme pour tout IDE commercial, plusieurs versions sont disponibles. L’édition professionnelle est conçue pour le développement d’applications clientes. L’édition Enterprise y ajoute la possibilité de créer des applications client-serveur, des applications SGBD “multi-tier” (c’est-à-dire à serveurs multiples) et des applications Web. Enfin, l’édition Architect offre en plus la modélisation logique et physique de bases de données, principalement.

Toutes trois peuvent être installées sur les versions Win32 de Windows à partir de XP et les applications créées peuvent être déployées sur ces environnements. Ces applications ou composants comprennent bien sûr les fichiers exécutables et les DLL mais aussi les objets OCX et COM, les bibliothèques de types, les applettes de Panneau de configuration, les applications Windows Services et les applications console. En fonction du type d’applications développées, des composants permettent l’accès direct aux principaux SGBD et serveurs d’applications du marché, aux sites et services Web, aux contrôles ActiveX et aux applications multithread. Les applications générées via Delphi 2009 sont nativementWin32 : nul besoin d’y empaqueter une version quelconque de .Net à redistribuer. En revanche, l’IDE par lui-même requiert au moins la version 2.0 de .Net pour fonctionner.

Les nouveautés 2009

Plusieurs grandes nouveautés caractérisent cette version 2009 : une nouvelle bibliothèque de composants visuels(VCL), de nouvelles ouvertures du langage(génériques et méthodes anonymes, notamment), un environnement de développement dédié aux applications SGBD multi-tier, une interface utilisateur voulue plus productive ou encore le support intégral de l’Unicode, qui constitue à lui seul une raison majeure de migrer. Pourquoi ? Parce que celui-ci est devenu un standard de fait pour la globalisation des programmes. Plus complexe du fait d’un codage sur deux entiers,Unicode(dit “UTF-16” dans cette version) autorise une grille d’environ 100 000 caractères différents, qui couvrent la plupart des besoins d’internationalisation. Unicode UTF-16 est également le format natif de l’environnement .Net, et c’est surtout à ce titre qu’il est incontournable.

Car même si l’on ne prévoit pas d’internationaliser une application dans un premier temps, la compatibilité avec les systèmes d’exploitation à venir est un point qui reste de première importance. Or,les différences entre les API qui gèrent les caractères sur un ou deux entiers sont tellement fondamentales qu’il est quasi impossible de passer automatiquement de l’une à l’autre. D’où la nécessité de partir sur de bonnes bases.

Ainsi, concrètement, le type de base des chaînes de caractères en Delphi 2009 n’est plus “String”mais “UnicodeString”.Grâce à cela, Embarcadero a pu inclure dans la version 2009 de Delphi des outils d’internationalisation qui gèrent l’ensemble du processus. Citons l’ITE (Integrated Translation Environment) qui, après sélection d’un certain nombre de langages possibles pour l’application, scanne le code, en extrait les ressources à traduire et les présente dans une interface dédiée à cette tâche. Les packages de langue sont alors placés dans des DLL chargées au gré des besoins de l’utilisateur. En complément, l’ETM (External Translation Manager) permet de confier les résultats de l’ITM (Integrated Translation Manager) à des traducteurs spécialisés pour qu’ils affinent les adaptations et les rendent aux développeurs dans un format immédiatement utilisable.

À ce propos, il faut noter également un gros progrès dans la gestion globale des ressources externes (chaînes de caractères mais aussi polices, images, curseurs, etc.). Auparavant, comme à la glorieuse époque des premiers développements Windows avec le seul SDK, il était nécessaire de créer des fichiers textes listant les ressources (fichiers .RC) et de les compiler pour créer des fichiers binaires utilisables par l’application. Et, de fait, toute modification, ne serait-ce que d’une ressource, imposait une fastidieuse recompilation de l’ensemble.

Avec Delphi 2009, on peut utiliser un Resource Manager qui va maintenir à jour un unique fichier de ressources communes pouvant être modifié à loisir. En cas de besoin, sa version exécutable sera automatiquement mise à jour à la prochaine recompilation du projet. Même si les autres grands IDE ont adopté un modèle équivalent, il n’est pas inutile de souligner les importants gains de temps et de taille d’exécutables qui en résultent.

Confort amélioré

L’adoption d’Unicode se répercute également sur les composants de la bibliothèque VCL. Mais ce n’est pas la seule adaptation de ces derniers. Ils intègrent désormais les nouvelles améliorations graphiques apportées par Vista, et notamment la gestion du look Aero Glass. Des info-bulles personnalisées avec texte et image font également leur apparition, et l’on peut même changer complètement leur look(couleur, forme, etc.). Le composant Timage est également décliné en un TPNGImagesup portant le format PNG qui tend à se standardiser. Enfin, TEdit offre la possibilité d’afficher un texte lorsqu’il n’a pas le focus (genre “Saisissez votre nom ici”), propose une nouvelle propriété NumbersOnly pour les saisies uniquement numériques et permet de choisir le type de caractère de masquage pour les mots de passe.

Ces modifications cosmétiques s’accompagnent de l’apparition de quatre nouveaux composants. TcategoryPanelGroup offre une collection de panneaux ou volets déroulants (comme ceux de la barre Outlook), lesquels agissent comme des conteneurs pour d’autres composants. TbuttonEdit permet l’inclusion d’icônes à gauche et (ou) à droite du texte du bouton. TLinkLabel permet l’inclusion directe de liens HTML, avec un événement dédié (OnClickLink) gérant seul l’ouverture de pages Web dans le navigateur par défaut de l’utilisateur. Si l’ensemble de ces petites choses concourra sans doute à affiner vos interfaces utilisateurs, c’est surtout l’arrivée du ruban type Office 2007 qui marque la grande nouveauté visuelle de Delphi 2009.

Les ajouts au langage

S’agissant du langage Delphi par lui-même, peu de nouveautés sinon deux ajouts d’importance: les génériques et les méthodes anonymes. Si vous connaissez C# ou l’environnement .Net d’un point de vue technique, vous savez que les génériques sont devenus un outil de codage extrêmement pratique et élégant. Ces collections (Tlist) sécurisées permettent en effet de coder des algorithmes indépendamment du type de données manipulées (integer,string,array, object…), ce type étant simplement déclaré en paramètre de la liste. Leur adoption renforce donc la compatibilité de Delphi 2009 avec l’ancienne plate-forme Delphi.net, et offre de réelles opportunités de réutilisation de code.

Concernant les méthodes anonymes, on peut être plus réservé quant à leur réelle utilité. Comme elles n’ont pas de nom qui leur soit propre, elles peuvent être passées en paramètre à une autre méthode, ou assignées à une variable. En effet, concrètement, elles renvoient l’espace dans le tas consacré aux données manipulées, et non la valeur courante de ces données. Mais le langage Delphi est tel qu’il permet par lui-même d’implémenter un tel fonctionnement. Ces méthodes anonymes ne sont donc à considérer –pour l’instant en tout cas – que pour la compatibilité avec les plates-formes précitées. C’est le cas également du type TstringBuilder, équivalent à celui que propose C#,mais dont la nécessité n’est pas flagrante en Delphi.

Concernant la gestion du code, rendons hommage au Class Explorer qui fonctionne comme un navigateur pour faciliter la lecture, l’inspection et la maintenance des classes. Comme chacun sait, le code objet a en effet ceci de fastidieux qu’il est souvent largement éclaté entre modules et briques qui composent un programme, et qu’il est donc très facile de se perdre dans ses méandres. Avec l’explorateur de classes, les classes et leurs membres (champs, propriétés et méthodes) peuvent être visualisés dans une arborescence hiérarchique reflétant leur structuration. Mieux encore, il est possible, directement dans l’interface de visualisation, d’ajouter ou de supprimer des champs, des méthodes ou même des classes complètes à l’existant.

Les configurations de builds

Toujours au chapitre du support au développement, Delphi 2009 propose un gestionnaire de configurations de builds. Grâce à lui, on peut définir une configuration de base incluant tous les paramètres communs à un projet ou à un groupe de projets: emplacement de stockage du code, chemin d’accès aux bibliothèques, etc.

Ensuite, pour chaque projet voire chaque déclinaison du projet en versions production, debug ou démo, par exemple, il suffit de dériver des configurations de builds à partir de la configuration de base. Ces configurations dérivées auront la forme de sous-ensembles n’incluant que les paramètres modifiés par rapport à la configuration parente. Et l’on peut même les copier vers d’autres projets, nouveaux et existants, pour bénéficier sans effort des mêmes options.

Alors, au final, que penser de cette version? Le premier constat qui s’impose est qu’elle assure aux projets Delphi existants une nouvelle durée de vie. D’une part en leur offrant un outil certes plus complexe que Delphi 7, mais en même temps plus complet et plus conforme aux standards d’aujourd’hui en matière d’environnements RAD. D’autre part en leur ouvrant les portes d’une meilleure compatibilité avec les versions de Windows actuelles et à venir. Le second est que Delphi 2009 reste un excellent outil pour concevoir, maintenir et déployer de nouveaux projets, avec un langage et des outils de support et de connectivité qui demeurent parmi les plus faciles à utiliser qui soient. Plus même que Visual Basic, dont les évolutions successives ont fait un monde à part, avec ses particularités et ses habitudes à prendre.

Bien sûr, tout n’est pas parfait. Le système d’aide n’est pas présent par défaut (il faut l’installer à la main) et il reste commun à Delphi et à C++, ce qui se révèle fastidieux à l’usage. De plus, chaque développeur Delphi gardait un secret espoir que la version 2009 renouerait avec Kylix, bibliothèque équivalente à VCL permettant le développement et le portage vers Linux.

Ce n’est pas le cas, et Kylix semble définitivement appartenir au passé. Malgré ces réserves, Delphi 2009 reste un outil réussi, facile, productif, complet et ne nécessitant rien d’autre pour assurer tout le cycle de vie des applications, de la conception au déploiement. C’est déjà beaucoup…

Aucun commentaire: