Java logo
4 mai 2013

Un timer en Java avec JodaTime

Par Jean-Marc Amon

Java est et reste l’un des langages les plus importants et surtout les plus utilisé dans le monde de l’informatique. Et cela n’est pas un le fruit du hasard mais de beaucoup de raisons. Bien évidemment, nous ne sommes pas là pour vanter les mérites de Java mais pour faire un truc bien précis : Un timer avec JodaTime.

Jodatime

JodaTime c’est quoi ?

Si vous avez déja utilisé Java vous vous êtes rendu compte à tout les coups que la gestion des dates en Java est pas très aisée malgré la robustesse et tout les mérites de Java. Pour palier à cela des développeurs ont pensé à nous et ont développé JodaTime.

JodaTime est une librairie open source qui permet de gérer avec plus de souplesse les dates Java. Il offre une meilleure API que les objets Date ou Calendar natifs à Java.

Rendez-vous sur cette page pour télécharger la librairie

Comme environnement de développement j’utilise Netbeans mais ce n’est pas nécessaire, utilisé ce que vous voulez … Nous n’utiliserons pour le moment pas d’interface graphique.

Etape 1 : Création du projet et importation de la librairie

Créer un projet nommé JodaTimeTimer, Un fichier est contenant la méthode main est automatiquement ajouté et prèt à l’emploi

package jodatimetimer;
 public class JodaTimeTimer {
      public static void main(String[] args) {
        // TODO code application logic here
      }
 }

Etape 2 : Importer JodaTime dans vos librairies

Commencez par décompresser le fichier téléchargé

Avec Netbeans

Dans l’arborescence de vos fichiers, clic droit sur Librairies et clic sur Ajouter un Jar (Add Jar/Folder) et selectionner le fichier joda-time-<no-version>.jar.

Commençons à coder

Pour arriver à nous fins, nous allons avoir besoin de 3 classes fondamentales:

  1. La classe DateTime issu du package org.joda.time.DateTime
  2. La classe Timer issu du package java.util.Timer
  3. La classe abstraite TimerTask du package java.util.TimerTask

La classe TimerTask

La classe abstraite TimerTask exécute une seule tâche programmé une seule fois ou répeté à l’aide d’un Timer . Il nous sera donc utile . Pour faire simple nous allons étendre directement cette classe à partir de notre classe JodaTimeTimer comme ceci.

 package jodatimetimer;
 import java.util.TimerTask;
 public class JodaTimeTimer extends TimerTask{
      public static void main(String[] args) {
        // TODO code application logic here
      }
      @Override
      public void run(){
      }
 }

 

On importe la classe dans le fichier avec java.util.TimerTask. Il nous faut donc implémenter la méthode obligatoire run() de TimerTask.

La classe DateTime

La classe DateTime est la seule classe issue de JodaTime que nous allons utilisée, elle est déjà suffisante pour récupérer l’heure, la minute et la seconde actuelle donc…

 package jodatimetimer;
 import java.util.TimerTask;
 import org.joda.time.DateTime;
 public class JodaTimeTimer extends TimerTask{
      public static void main(String[] args) {
        // TODO code application logic here
      }
      @Override
      public void run(){
        //On cree une instance de la DateTime
        DateTime date = new DateTime();
        //On recupère la minute
        int minute = date.getMinuteOfHour();
        //On recupère l'heure actuelle
        int heure = date.getHourOfDay();
        //On recupère la seconde;
        int seconde = date.getSecondOfMinute();
        //On affiche l'heure, la minute et la seconde ex: 15:00:00
        System.out.println(String.format("%d:%d:%d", heure,minute,seconde));
    }
 }

La classe Timer

La classe Timer nous est indispensable, c’est elle qui permettra de programmé notre affichage à chaque seconde.

package jodatimetimer;
 import java.util.TimerTask;
 import org.joda.time.DateTime;
 public class JodaTimeTimer extends TimerTask{
      public static void main(String[] args) {
        //On cree un objet Timer pour programme la tache d'affichage
        Timer timer = new Timer();
        //La tache est exécute à chaque seconde(1*1000ms = 1s) sans delai(0)
        timer.schedule(new JodaTimeTimer(), 0, 1 * 1000);
      }
      @Override
      public void run(){
        //On cree une instance de la DateTime
        DateTime date = new DateTime();
        //On recupère la minute
        int minute = date.getMinuteOfHour();
        //On recupère l'heure actuelle
        int heure = date.getHourOfDay();
        //On recupère la seconde;
        int seconde = date.getSecondOfMinute();
        //On affiche l'heure, la minute et la seconde ex: 15:00:00
        System.out.println(String.format("%d:%d:%d", heure,minute,seconde));
    }
 }

Et voilà, c’est presque tout il vous vous reste seulement à exécuter. A chaque seconde vous avez un nouvel affichage de l’heure, la minute et de la seconde. Tout ça dans une interface graphique ne fera qu’embellir. Nous le ferons dans un prochain article avec plus de détails. Merci