Présentation du langage NICE


précédentsommairesuivant

2. Java 5 vu par Nice

Comme cela a été dit précédemment, Nice dispose déjà des principales fonctionnalités annoncées pour Java 5. Le but des paragraphes suivants est donc d'évoquer certaines de ces fonctionnalités et de les illustrer par du code Java 5 et Nice.

2.1. La généricité

L'utilisation de classes génériques (ou encore nommées classes paramétrables) s'avère extrêmement utile et appréciée sur de nombreux points. En effet, le code sera plus agréable à lire et à maintenir, les risques d'erreur ou d'oubli dans les conversions puisqu'elles sont faites automatiquement. Enfin, cela favorise la réutilisation de composants, et permettra au développeur de se concentrer sur les objets métiers.

Voyons sur un petit exemple (Langage sera une classe métier par exemple) à quel point la généricité peut rendre service :

Avec Java 1.4

 
Sélectionnez

ArrayList al = new ArrayList(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice")); // on pourrait très bien passer un autre type d'objet à la méthode add

for(Iterator i = al.iterator(); i.hasNext();) // clause for plutôt "lourde"
{ 
  Langage l = (Langage) i.next(); 
  /* on récupère l'objet avec transtypage obligatoire et risque d'erreur 
  si l'objet n'est pas du type Langage ... */
  System.out.println(l); // affichage de la valeur de l.toString(); 
}

Avec Java 5

 
Sélectionnez

ArrayList<Langage> al = new ArrayList<Langage>(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice")); // on ne peut plus passer d'objet d'un autre type

for(Iterator i = al.iterator(); i.hasNext();) 
// nous verrons plus loin que d'autres nouveautés Java 5 vont améliorer le parcours
{ 
  Langage l = (Langage) i.next();
  System.out.println(l);
}

Ce dernier code fonctionne parfaitement avec Nice, mais je vous propose dès à présent un avant-goût des possibilités de Nice sur cet exemple (l'ensemble des autres particularités sera vu au chapitre suivant).

2.2. Les optimisations

2.2.1. Boucle for

Les nouveautés de Java 5 concernent également les boucles de parcours d'ensembles (collections et tableaux). Reprenons l'exemple précédent pour illustrer cette fonctionnalité.

Avec Java 5

 
Sélectionnez

ArrayList<Langage> al = new ArrayList<Langage>(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice"));

for(Langage l : al)
{
  System.out.println(l);
}

Les possibilités d'utilisation ne sont bien entendu pas limitées qu'aux collections et tableaux. Cela est possible pour toute classe implémentant l'interface Iterable.

 
Sélectionnez

for(Type Identifier : Expression) // Expression doit implémenter Iterable

Nice n'est pas en reste. Il fait même mieux qu'un opérateur for évolué, il propose la méthode foreach.

Avec Nice

 
Sélectionnez

ArrayList<Langage> al = new ArrayList(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice"));
al.foreach(Langage l => System.out.println(l));

Nous reviendrons plus loin sur la méthode foreach et sur les fonctionnalités qui se cachent derrière. Je vous laisse constater la puissance et la simplicité de cette méthode qui permet à la fois de parcourir un ensemble et de faire un traitement sur chaque élément.

2.2.2. L'autoboxing

Qui n'a jamais trouvé la conversion d'un objet d'un type enveloppe vers le type non objet correspondant (et vice versa) particulièrement lourde? Bien heureusement, Java 5 permet de se passer de telles conversions.
Voici un petit exemple pour illustrer ceci :

Avec Java 1.4

 
Sélectionnez

ArrayList al = new ArrayList();
al.add(0, new Double(1.4)); 
double version = ((Double) al.get(0)).doubleValue();

Avec Java 5

 
Sélectionnez

ArrayList<Double> al = new ArrayList<Double>();
al.add(0,1.5);
double version = al.get(0);

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Articles et tutoriels Borland C++ Builder
Accédez à une base de données Access avec les composants du BDE
Guide d'installation de la RxLib sous BCB 6
Présentation et utilisation du plugin borCVS pour Borland C++ Builder 6
Articles et tutoriels Java
Présentation de l'API Reflection
Gestion d'images en base de données avec l'API JDBC
Interview et reportages
Compte rendu des conférences JAX 2006, Eclipse Forum Europe 2006, EAKon 2006
Interview d'Eric Lefevre, consultant chez Valtech, au sujet de l'Open Space Technology
Compte rendu des Valtech Days 2007
Autres articles et tutoriels
Introduction à CVS
Présentation du langage NICE
Critiques de livres
Jakarta Struts Par la pratique (Eyrolles)
Initiation à JSP (Eyrolles)
Gestion de projets avec Subversion (O'Reilly)
Struts - Les bonnes pratiques pour des développements web réussis (Dunod)
Hibernate 3.0 : Gestion optimale de la persistance dans les applications Java/J2EE (Eyrolles)
Analyse et conception orientées objet - Tête la première (O'Reilly)
Gestion de projet eXtreme Programming (Eyrolles)
Gestion de projet - vers les méthodes agiles (Eyrolles)
Autres liens sur Developpez.com
La FAQ C++ Builder
Les Sources C++ Builder
Les FAQs JAVA
  

Copyright © 2004 Ricky81. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.