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 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:
- La classe DateTime issu du package org.joda.time.DateTime
- La classe Timer issu du package java.util.Timer
- 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