Java: Maître Joda-time à la rescousse

Depuis la version 1.7 de java et la JCR 310, les dates sont plus faciles à manipuler, mais lorsque l’on est obligé d’utiliser java 1.6, la manipulation des dates n’est pas chose aisée, elle laisse place à des comportements parfois assez aléatoires, des bugs et un mauvais design, la solution s’appelle Joda-time.

Le projet JODA

C’est un ensemble d’API distribué sous la licence apache version 2, en plus de Joda-time, il en existe quatre autres :

  • Joda-Money – Type de base monétaire
  • Joda-Beans – Nouvelle generation de javabeans
  • Joda-Convert – Conversion de chaine en objet
  • Joda-Primitives – Collection de primitives

Installation

Pour obtenir les sources de Joda-Time: Télécharger l’archive ici

Il y a plusieurs façons d’importer les sources, comme c’est un projet maven, vous devrez installer Maven en local sur votre machine  ou le plug-in dans votre IDE préféré.

Comme j’utilise eclipse et que par défaut le plug-in maven n’est pas installé, le plus simple est d’installer maven en local.

joda-time1

joda-time1

Sur la racine de l’API, lancer la commande maven pour compiler :

mvn compile
joda-time2

joda-time2

Ensuite la commande suivante pour générer les fichiers .classpath et .project

mvn eclipse :eclipse
joda-time3

joda-time3

Ensuite importer le projet en faisant nouveau -> projet java -> rechercher emplacement

joda-time4

joda-time4

Créer un package de test

joda-time5

joda-time5

Jeu de tests

Avec ces exemples, on peut se rendre compte de la facilité de manipulation des dates avec joda-time en comparaison aux classes du JDK standard (quatre façons différentes d’instancier un point dans le temps pas très parlantes).

joda-time6

joda-time6

Comparatif

Points forts de joda-time

  • D’excellentes performances
  • La facilité grâce à des noms de méthode parlants
  • Il n’est pas facile à utiliser pour manipuler des données courantes
  • La conception des classes Date et Calendar
  • Classes immuables
  • Possibilité de convertir vers les classes standards du JDK
  • Existe depuis 2002
  • Possibilité d’intégrer une MAJ des zones de temps via http://www.iana.org/time-zones

Les points faibles des classes standards du JDK

  • Instanciation très couteuse
  • Les performances sont mauvaises
  • Traitements ne sont pas threadsafes
  • Gestion des mois de 0 à 11
  • Les méthodes n’ont pas des noms très parlants
  • La classe SimpleDateFormat est trop laxiste sur le format

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Petit calcul pour valider votre commentaire! merci * Time limit is exhausted. Please reload CAPTCHA.