BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Joda-Time 2.4 - Nouvelles méthodes, Amélioration de la concurrence et de la performance

Joda-Time 2.4 - Nouvelles méthodes, Amélioration de la concurrence et de la performance

La bibliothèque Joda-Time 2.4 pour la manipulation des dates et des heures Java vient d'être publiée. Il s’agit de la première version réalisée en 2014. Cette version contient des améliorations, des corrections de bugs et une mise à jour du fuseau horaire sans aucune désapprobation. Joda-Time 2.4 est distribuée sous la licence Apache version 2 et requiert JDK 5+.

Voici les améliorations apportées par Joda-Time 2.4 :

  • Les méthodes Duration.multipliedBy(long multiplicand), Duration.dividedBy(long divisor) et Duration.negated() ont été ajoutées à l'interface publique.
  • Dans LocalDate.hashCode(), le modificateur volatile inutile sur hashCode(int iHash) a été supprimé. Le cache du hashCode suit maintenant le modèle d’expression « Racy Single-Check ».
  • DateTimeParserBucket a été modifié en interne pour utiliser CharSequence sans affecter l'API publique. Cela permet à DateTimeParserBucket d’être réutilisé par un seul thread et diminue la création des objets de courte vie. CharSequence peut également être utilisée dans l'analyse, mais seulement via la création d'un DateTimeParserBucket mutable. Il s’agit des constructions de bas niveau pour des usages avancés. Voir le problème #111 pour plus d'informations.
  • Le support de java.lang.Appendable a été ajouté à DateTimeFormat, DateTimeFormatter, DateTimePrinter. L’utilisation de StringBuffer est également remplacée en interne par StringBuilder.
  • Une amélioration de la performance liée à la recherche de chronologie dans les classes du package joda.time.chrono. Elle utilise désormais ConcurrentHashMap au lieu des Map synchronisées. La recherche du cache de GJChronologies a été également simplifiée.
  • Une amélioration de la performance de DateTimeFormat avec le modèle cache lookups utilisant AtomicReferenceArray.
  • Simplification et amélioration des performances relatives à la consultation des symboles de GJLocaleSymbols.
  • Les données DateTimeZone ont été actualisées avec la version 2014e.

Voici les corrections de bogues dans Joda-Time 2.4 :

  • Correction d'une mauvaise manipulation sur les siècles et les époques dans DateTimeField.getDurationField() et DateTimeField.getRangeDurationField().
  • Correction dans DateTimeZone.getOffsetFromLocal() afin de gérer correctement le dernier basculement DST. Il s'agit d'un problème de conversion de Local à UTC.
  • Lors de la création d’une époque, si une extrémité est dans un chevauchement DST et une au-delà du chevauchement, la valeur de Period était incorrecte. Le calcul a été corrigé et l'heure supplémentaire n'est plus ajoutée.
  • La méthode DateTimeUtils.isContiguous(ReadablePartial) pourrait lever un NullPointerException lors de l'évaluation de partiels étranges.
  • UnsupportedOperationException corrigée dans Period.normalizedStandard(PeriodType) quand il manque les années ou les mois dans PeriodType.
  • Ajout d’une validation manquante dans Partial.with(DateTimeFieldType, int) pour empêcher la création de partiels invalides.
  • Ajout de zéro à un MutableDateTime ne modifie plus le décalage lors de l'heure d'été se chevauchant à l'automne.
  • Une validation en plus sur les constructeurs de DateTime/MutableDateTime qui prennent des millisecondes. new DateTime(Long.MAX_VALUE) n'est plus valide.
  • Les champs day-of-month et day-of-year renvoient désormais un résultat correct pour isLeap().
  • Insiste que year > weekyear lors de la création de partiels pour permettre les comparaisons.
  • Gère les implémentations bizarres de TimeZone avec des ID null. L’appel de DateTimeZone.forTimeZone() déclenche un NullPointerException dans le cas du passage d’un ID nul.
  • Certaines implémentations Android lèvent un ClassCastException lorsque l'on compare des types différents. Ce correctif gère mieux les implémentations Android non propres.
  • Une meilleure concurrence dans l’analyse avec DateTimeFormatterBuilder en uilisant ConcurrentHashMap.
  • DateTimeZone fait un appel incorrect à ThreadGroup.uncaughtException() et elle a été modifiée pour lever un RuntimeException.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT