Java

Un article de Agora2ia.


Voir aussi la page JavaTips.


Sommaire

TODO

  • jGoodies
  • BeanShell,
  • Groovy,
  • Marmalade.

Divers

Voir aussi


Hébergeurs Java


Javadoc de package

JDK 5

Je profite d’une tâche originale que j’ai du faire ce jour sur mon projet pour aborder les nouveautés du JDK 5 par rapport au JDK 1.4.

En effet, en raison de contraintes techniques, j’ai du migrer mon projet du JDK 5 vers le JDK 1.4. Non, non, je ne me trompe pas de sens : j’ai bien migré vers une version plus ancienne du JDK. Pour cela j’ai ouvert mon IDE, Eclipse, et j’ai positionné le « Niveau de compatibilité du compilateur » de 5 à 1.4 : quelques 76 fichiers sont alors devenus rouges !

Les erreurs, de 5 types, correspondent aux 5 principales nouveautés du JDK 5.


Les generics

Présentation

Pour moi, de toutes les nouveautés, c'est celle-ci qui est indispensables... Comment faisait-on déjà avant ?

Cela permet de typer le contenu des Collections Java.

Les effets de bord sont nombreux :

  • Plus besoin de faire un cast quand on récupère une valeur dans sur la Collection
  • Le code s'en trouve allégé
  • Le code est également d'avantage robuste, sans utiliser d'instanceof
  • Enfin, la lisibilité du code est également renforcée de par la sémantique apportée, surtout sur les signatures de méthodes. Cet caractéristique prend tout son sens par exemple dans les libraires d'Entity, je parle des classes du modèle issues d'un mapping ORM tel que Hibernate. Les deux exemples de code suivants parlent d'eux même :
  • En conséquence de quoi la maintenance est facilité
public List getDoublons() {
    // …
}
public List<SinistreEntity> getDoublons() {
    // …
}

Ressources

Le for

Les annotations de base

@overide

Définition exacte de @Override

@SuppressWarnings("unchecked")


La covariance du type de retour

La covariance dans le JDK1.5


L’auto-boxing

Les types primitifs et les classes enveloppes


JDK 6

Présentation de Java SE 6 (11/12/2006)


Les exceptions en Java

Les exceptions et les bonnes pratiques


XML

Voir aussi la page sur XML, et celle des JavaTips sur l'API XML DOM .

Un tutoriel apparemment complet vous attend sur developpez.com.


Théorie

SAX

C'est l'acronyme de Simple API for XML.

Ce type de parseur utilise des événements pour piloter le traitement d'un fichier XML. Un objet (nommé handler en anglais) doit implémenter des méthodes particulières définies dans une interface de l'API pour fournir les traitements à réaliser : selon les événements, le parseur appelle ces méthodes. Pour en savoir plus sur SAX, visitez le site officiel.


DOM

C'est l'acronyme de Document Object Model. C'est une spécification du W3C pour proposer une API qui permet de modéliser, de parcourir et de manipuler un document XML. Le principal rôle de DOM est de fournir une représentation mémoire d'un document XML sous la forme d'un arbre d'objets et d'en permettre la manipulation (parcours, recherche et mise à jour).

A partir de cette représentation (le modèle), DOM propose de parcourir le document mais aussi de pouvoir le modifier. Ce dernier aspect est l'un des aspect les plus intéressant de DOM.

DOM est défini pour être indépendant du langage dans lequel il sera implémenté. DOM n'est qu'une spécification qui, pour être utilisée, doit être implémentée par un éditeur tiers. DOM n'est donc pas spécifique à Java.

Le parseur DOM pour JAVA le plus répandu est Xerces que vous pouvez trouver sur Apache.org.


APIs

JDOM

JDOM utilise des collections SAX pour parser les fichiers XML.

JDOM utilise DOM pour manipuler les éléments d'un Document Object Model spécifique (créé grâce à un constructeur basé sur SAX). JDOM permet donc de construire des documents, de naviguer dans leur structure, s'ajouter, de modifier, ou de supprimer leur contenu.

Pourquoi JDOM ? La simplicité ! Il est en vérité très laborieux de développer des applications complexes autour de XML avec DOM, qui rappelons le, n'a pas été développé spécifiquement pour Java.


Outils

Quelques site listant des outils XML en Java :


Et plus particulièrement :

PDF


iText

Accueil - Tutorial

Retep

Retep - Low Level API

Retep est une librairie Java pour la création de documents PDF.

Elle se divise en deux parties :

  1. La première qui surcharge l'API Java d'impression, et permet donc d'ajouter à une application possédant des fonctionnalités d'impression des fonctionnalités sur les PDF sans trop de modifications.
  2. L'autre partie de l'API, dite de "bas niveau", permet de gérer à part entière les documents PDF.

L'API de "bas niveau" possède les notions suivantes :

  • Le Document (l'élément racine) représente le docment PDF dans son ensemble. Il supporte les notions suivantes (qui peuvent soit être définies à la construction du document, soit positionnées après) :
    • Media Page ou format des pages (Letter, A4...) qui correspond souvent au paramètres de type Rect des méthodes de création.
    • Orientation (portrait, paysage...) qui se traduit sous la forme d'un int (le "faux" enum de la classe PDF : PDF.PORTRAIT (par défaut), PDF.LANDSCAPE, PDF.INVERTEDPORTRAIT et PDF.SEASCAPE).
  • Il contient des Pages. Cette classe représente une simple page dans un document PDF. La Page peut notamment redéfinir à son niveau les notions de Media Page et d'orientation, et donc surcharger celles du document.
  • Il contient aussi des XImages.
  • Il contient aussi des Outlines (cad des bookmarks).
  • Le GraphicsEngine qui fourni les méthodes directement issues des spécifications PDF, allant de l'insertion contolée des images à l'ajout de texte. Le GraphicsEngine s'obtient par la méthode createGraphics() sur une page donnée. Enfin, il est important de fermer le GraphicsEngine en fin d'utilisation si l'on ne veut pas recevoir d'erreur.

Création du document :

import uk.org.retep.pdf.PDF;
import uk.org.retep.pdf.core.Document;

Document document= PDF.createDocument();
// ou encore : 
//Document document = new Document();

Création d'une page :

import uk.org.retep.pdf.core.Page;
// ...

Page page = document.createPage();
// ou encore :
//Page page = document.createPage(document.getDefaultMedia(), PDF.LANDSCAPE);


FOP


API pour utiliser Microsoft


Les tests

Voir la page Open Source Testing Tools in Java


Tests unitaires

Voici une liste des principaux frameworks de TestUnitaire :


Intégration continue


Tests unitaires d'IHM / Swing


Les Mocks

Voici une liste des principaux frameworks de Mock :


Les bases de données