I. Présentation

I-A. Embarcadero, un éditeur de logiciels

La société Embarcadero, dont le siège est à San Fransico, a été fondée en 1993. Elle s'est inscrite au NASDAQ en 2000 et a été acquise par Thoma Cressey Bravo (alis TCB) le 27 Juin 2007. Depuis ce jour, la société est devenue une société privée. La firme atteind un revenu annuel de plus de 100 millions de dollars, compte plus de 90 000 clients et est implantée dans 29 pays.

I-B. Le rachat de CodeGear par Embarcadero

Embarcadero Technologies a finalisé l'acquisition de CodeGear de Borland Software Corporation (NASDAQ: BORL) pour environ 24,5 millions de dollars le 30 Juin 2008. CodeGear est en cours d'intégration dans Embarcadero Technologies, qui continuera à fonctionner comme une entreprise privée sous la direction de l'actuel chef de la direction d'Embarcadero Wayne Williams. A ce jour, on peut noter l'arrivée sur le marché de Delphi 2009 et de C++ 2009 et, vers la fin de l'année, l'arrivée de RAD Studio 2009.

II. Les nouveautés de la version 2009

Cette nouvelle version de Delphi 2009 apporte son lot de nouveautés. On notera des modifications aussi bien au niveau de l'IDE que de la VCL ou encore l'ajout de nouveaux composants.

II-A. Au niveau de l'IDE

L'IDE Delphi 2009 possède la même interface que l'IDE Delphi 2007 à quelques modification près.

Liste des nouveautés et des améliorations
  • IDE entièrement Unicode!
    Il ne s'agit pas simplement d'une VCL qui supporte l'unicode mais plus concrètement du type String qui évolue pour supporter l'unicode. Ce qui implique que tous les endroits ou le type String est utilisé permettront de gérer de l'unicode (Fonctions de traitements de chaines, VCL....etc). Cela ouvre ainsi des opportunités pour le marché de la chine, Russie, Corée, Japon.

Le type String ayant évolué (passage de l'ANSI à l'UTF 16), il est bon de noter que la fonction SizeOf renverra 2 octets pour un caractère, non un octet comme c'était le cas jusque maintenant! Cependant, la fonction length fait toujours son travail correctement!

  • Ajout d'un explorateur de classes afin de lister les méthodes et permettre un accès direct à leur déclaration. Il sera possible également d'ajouter de nouvelles méthodes directement via cette interface.
Explorateur de classes
Explorateur de classes
  • Ajout d'un panneau de configaration des "Builds" avec un gestionnaire de configuration permettant une configuration rapide de l'IDE lors du choix du paramètrage pour la compilation.
Configuration des Builds
Configuration des Builds
  • Amélioration du gestionnaire de projets avec de nouvelles options telles que l'ajout de composant activeX, d'unités, de dll.
Gestionnaire de Projets
Gestionnaire de Projets
  • Amélioration du Wizard pour l'import et la création de composants.
  • Ajout d'un mode d'importation du composant directement dans un package.
  • Mise à jour de la VCL (gestion de l'Unicode) ainsi que le support COM/ActiveX avec accès RIDL.

Vous pouvez également visionner les vidéos présentées par CodeGear :
Nouveautés de l'IDE
Nouveautés de la VCL

II-B. Au niveau du langage

Au niveau du langage, on notera l'ajout des génériques ainsi que les méthodes anonymes.

II-B-1. Les génériques

II-B-1-a. Définition

Les génériques sont des classes, structures, interfaces et méthodes qui ont des types paramétrés pour un ou plusieurs types qu'elles utilisent ou stockent.
Ce mécanisme était déjà disponible avec Delphi 2007 .NET uniquement. Désormais, toutes les versions de Delphi, qu'elles soient .NET ou non, pourront utiliser les génériques.

II-B-1-b. Exemples de déclaration

Exemple 1 sur les génériques
Sélectionnez

procedure TForm1.Button1Click(Sender:TObject);
var
  myList:TList<Integer>;
begin
  myList:=TList<Interger>.Create;
  try
    myList.AddRange([1,2,3]);
    PrintListInteger(myList);
    myList.RemoveAt(1);
	PrintListInteger(myList);
	myList.Clear;    
	PrintListInteger(myList);
  finally
    myList.free;
  end;
end;

Afin de mieux comprendre l'utilisation des génériques, nous allons voir une déclaration comme nous l'aurions fait auparavant, puis nous traduirons le code en utilisant les génériques.

Déclaration sans les génériques
Sélectionnez

type
  TSIPair = class
  private
    FKey: String;
    FValue: Integer;
  public
    function GetKey: String:
    procedure SetKey(Key: String);
    function GetValue: Integer;
    procedure SetValue(Value: Integer);
    property Key:TKey read GetKey write SetKey;
    property Value:TValue read GetValue write SetValue;
  end;
Déclaration avec les génériques
Sélectionnez

type
  TPair<TKey, TValue> = class
  private
    FKey: TKey;
    FValue: TValue;
  public
    function GetKey: TKey:
    procedure SetKey(Key: TKey);
    function GetValue: TValue;
    procedure SetValue(Value: TValue);
    property Key:TKey read GetKey write SetKey;
    property Value:TValue read GetValue write SetValue;
  end;
  
type
  TSIPair = TPair<String, Integer>;
  TSIPair = TPair<String, String>;
  TSIPair = TPair<Integer, Integer>;
  TSIPair = TPair<Integer, String>;
  TSIPair = TPair<String, String>;
  TSIPair = TPair<String, TXMLNode>;

Nous allons voir également comment cela se passe avec les tableaux d'objets.

Tableau d'objets sans les génériques
Sélectionnez

procedure TForm1.Button1Click(Sender: TObject);
var
  PersonList: TObjectList;
  o: TObject;
  p: TPerson;
begin
  PersonList:=TObjectList.Create;
  
  PersonList.Add(TPerson.Create('Embarcadero');
  PersonList.Add(TPerson.Create('CodeGear');
  PersonList.Add(TPerson.Create('DatabaseGear');
  
  for o in PersonList do
  begin
    // Transtypage !
    p := TPerson(o); //ou p := o as TPerson;
    ListBox1.Items.Add(p.Name);
  end;
end;
Tableau d'objets avec les génériques
Sélectionnez

procedure TForm1.Button1Click(Sender: TObject);
var
  PersonList: List<TPerson>;
  p: TPerson;
begin
  PersonList:=List<TPerson>.Create;
  
  PersonList.Add(TPerson.Create('Embarcadero');
  PersonList.Add(TPerson.Create('CodeGear');
  PersonList.Add(TPerson.Create('DatabaseGear');
  
  for p in PersonList do
  begin
    // Plus besoin de transtyper !
    ListBox1.Items.Add(p.Name);
  end;
end;

II-B-2. Les Méthodes Anonymes

II-B-2-a. Définition

Une méthode anonyme est une fonction ou une procédure associée à une variable et qui sera déclenchée à chaque appel de celle-ci.
Les exemples parleront plus qu'un long discours!

II-B-2-b. Exemples de déclaration

Premier exemple :

Les methodes anonymes
Les methodes anonymes

Un second exemple :

Les methodes anonymes 2
Les methodes anonymes 2

II-C. Au niveau des composants

Voici les principales nouveautés au niveaux des composants.
Vous pourrez retrouver toute la liste des changements sur le site de CodeGear/Embarcadero.

II-C-1. TBallonHints

Ce petit composant, déjà disponible dans la JVCL, est désormais installé par défaut.
Il permet de modifier l'apparence de l'info bulle.

Pour que ce composant fonctionne, il est impératif que le thème Windows soit activé!

Custum Hint
Bulle d'aide personnalisée

II-C-2. TNumbersOnly

Ce composant permet de ne saisir que des chiffres! Il nous évitera de faire le contrôle sur la saisie!
De plus, si l'on tente tout de même de saisir des caractères, une jolie bulle d'infos nous rappelle que les caractères ne sont pas autorisés!

Composant TNumbersOnly
Composant TNumbersOnly

II-C-3. TLinkLabel

C'est un label évolué qui reconnait la balise HTML a.
Il permettra donc de faire facilement un lien hypertexte. Voici un exemple :

LinkLabel
Sélectionnez

LinkLabel1.Caption := '<a href="http://www.developpez.com">www.developpez.com</a>';

Ce qui donne :

Exemple TLinkLabel
Exemple TLinkLabel

II-C-4. TButtonedEdit

C'est un TEdit évolué qui, couplé à un TImageList, permettra de mettre une image sur la droite et/ou la gauche du TEdit.

Composant TButtonedEdit
Composant TButtonedEdit

II-C-5. TCategoryPanelGroup

Ce composant permet de créer plusieurs catégories de panels coulissants.

Composant TCategoryPanelGroup
Composant TCategoryPanelGroup

II-C-7. Ribbon Controls

Ce composant permet d'utiliser le thème d'office 2007 dans votre application.
Ainsi, vous pourrez utiliser les rubans!

Afin de pouvoir utiliser ce composant, il vous faudra enregistrer votre licence auprès de Microsoft, licence inclue avec l'achat de Delphi 2009.

Composant Ribbon Controls
Composant Ribbon Controls

II-D. Les autres nouveautés

On peut citer la mise à jour d'Interbase, qui passe en version 2009 également.
Au niveau des nouveautés, Interbase permettra le cryptage des bases de données. Point positif également, la BDD sera embarquable.
On notera une évolution majeure en ce qui concerne la licence. En effet, auparavant, il fallait acquérir une licence par coeur, désormais, une seule licence pourra assurer la gestion des processeurs multi-coeurs.

Delphi 2009 peut désormais gérer le PNG par défaut.
En effet, pour ceux qui connaissaient le composant TPNGImage, la firme CodeGear à procéder à son rachat afin
de l'inclure par défaut dans la palette de composants.

Mise à jour de Rave Reports qui passe en version 7.6. Pas de gros changements si ce n'est le support de l'Unicode.

Coté Web, il sera désormais possible d'inclure du Silverlight. Il s'agit bien d'inclure une vidéo et non de programmer ...
Idem pour la technologie Flash!

Mise à jour de TeeChart qui passe en version 8.0 et offre donc un panel plus complet en ce qui concerne les vues ainsi que son lot d'améliorations

Utilisation d'ER Studio pour la modélisation. Il remplacera ECO 4 mais une passerelle devrait être créée afin de basculer d'ECO 4 à ER Studio. Cet outil de modélisation, au même titre que MySQL Workbench 5.0, permettra de créer les tables à partir d'un MEA et inversement.

III. Où trouver Delphi 2009

III-A. Version d'essai en téléchargement

Vous pouvez vous rendre dès à présent sur le site de CodeGear/Embarcadero pour obtenir votre version d'essai.

La période d'évaluation est passée de 30 jours à 14 jours, cela étant dû au fait qu'Embarcadero proposait ses versions d'évalutions à 14 jours. Cependant, les versions d'essais sont fonctionnelles dans leur intégralité!
Attention tout de même, la version d'essai ne permet pas d'utiliser les outils en lignes de commandes (compilation automatique de jcl/jvcl par exemple).

III-B. Acheter Delphi 2009

Vous pouvez également voir les tarifs de Delphi 2009 sur www.sosdevelopers.com. Comme d'habitude, vous avez la possibilité d'acheter Delphi 2009 en version architecte, professionnelle, entreprise, ou encore une mise à jour. Il existe également des Bundles, c'est à dire des packs comprenant C++ 2009 en plus de Delphi 2009.

IV. Remerciements

Je remercie Thierry Laborde qui a présenté l'événement CodeWay Show 2 et qui nous autorise l'utilisation et la publication du diaporama qui a servit tout au long de la conférence.
Je remercie également hpalpha, Nono40, evarisnea et Laurent Dardenne pour leur relecture et leurs conseils.