Question

Je veux convaincre le gestionnaire de l'architecture d'inclure le pot Joda-Time dans notre produit .

Connaissez-vous des inconvénients à l'utiliser?

Je pense que Joda-Time doit être constamment mis à jour en raison des fichiers qu'il contient. Et c'est un inconvénient. Peut-être que je me trompe.

Pourriez-vous donner quelques précisions sur le sujet?

Était-ce utile?

La solution

J'ai eu presque entièrement des expériences positives avec Joda Time. Mon seul problème était au moment d'élaborer mon propre fuseau horaire (pour des raisons légitimes, je vous assure :) Je suis arrivé quelques exceptions très étranges, et la documentation était pas très bon pour ce cas d'utilisation particulière.

Cependant, pour la plupart, il a été un plaisir à utiliser -. Immuabilité rend le code beaucoup plus facile de raisonner sur, et la sécurité des threads pour formatteurs est extrêmement utile

Oui, il y a des fichiers à tenir à jour - mais au moins vous peut les tenir à jour. Il est pas comme ils contiennent des choses qui étaient inutiles avec des trucs intégré de Java, il est juste que avec le mécanisme de Java tu ne pouvais pas garder des informations telles que les fuseaux horaires à jour sans carriole importante!

En fait, +1 pour l'utilisation Joda Time. L'API de date / heure Java est l'un des pires bits de la plate-forme Java, l'OMI.

Autres conseils

A mon avis, l'inconvénient le plus important dans Joda-temps est de la précision: de nombreuses bases de données magasin horodatages avec microsecondes (ou même nanoseconde ) précision. Joda-temps ne fait que millisecondes . Ce n'est pas acceptable pour moi: tous les « modèles de données » classes que j'utilise doivent refléter la pleine précision des données dans ma base de données. Approximations ou troncature de mes données par une bibliothèque ne coupe pas juste.

Voici le raisonnement derrière le choix de la milliseconde, tirée de la JSR 310 liste de diffusion:

  

"Joda-Time a choisi d'utiliser millisecondes comme il a fait des conversions à ce jour et calendrier plus facile." - S. Colebourne

plus facile pour qui? L'auteur de la bibliothèque, on peut supposer ... décision de conception incorrecte, à mon avis, quand presque toutes les bases de données des temps de magasin de précision microseconde / nanoseconde. Le non-respect des valeurs de base de données est préoccupante.

Le plus gros problème que nous avons eu lors de l'utilisation Joda Time est l'intégration avec Spring et tapisserie, comme ils voulaient tous deux utiliser le haut-Date et heure. Nous étions constamment écrivons enrubanneuse en getters / setters pour la date et l'heure: soit nous le stocker sous forme Joda temps et un ensemble de getters / setters passés à travers et l'autre convertiraient à la volée, et certaines classes stockées en interne comme Java Date / heure, et le getter / setter Joda dû changer à la volée.

En fait, il était un mal de tête parce que les classes sont également nommés, et à moins que vous pouvez obtenir votre architecture complète (y compris d'autres bibliothèques vous intégrez) pour passer à l'heure Joda, vous allez écrire plus code wrapper que vous êtes susceptibles d'économiser en utilisant les bibliothèques Joda.

une présentation par Stephen Colebourne à propos JSR-310, M. Colebourne l'auteur de Joda-Time et JSR-310. Il commence par expliquer les faiblesses du support date / heure standard Java et pourquoi vous voulez utiliser une solution de rechange. Il peut être utile de montrer cette présentation à votre gestionnaire d'architecture. Je ne peux pas sembler lien profond

La raison Joda-Time met à jour son fichier de fuseau horaire est assez souvent parce que les données de fuseau horaire change tout le temps, souvent à court préavis (aujourd'hui sur Slashdot: saut de seconde ajouté sur 2008-12-31 ) et pas toujours scientifiquement motivés (par exemple, je me souviens un état insulaire du pacifique a changé de fuseau horaire être le premier pays à entrer dans l'année 2000).

Dans le passé, je l'ai rencontré des entreprises qui ne voulaient pas d'intégrer des logiciels tiers open source, ou au moins l'avocat requis de l'entreprise de certifier que la licence ne va pas les exposer à toute sorte de responsabilité ou ont un effet viral sur leur produit.

Comme toutes les bibliothèques de tiers, vous devriez probablement le mettre dans le contrôle source afin que vous puissiez trouver la version que vous livré avec les versions particulières de votre code en cas de problème.

Le choix de millisecondes pour le continuum temporel sous-jacente est bon pour la mise en œuvre des calendriers de l'antiquité, et des calendriers spéciaux. Contrairement à de nombreux compteurs, le compteur de milliseconde 64 bits a une bonne couverture de gamme pour les calendriers de l'antiquité, avec des propriétés de roulement de plus de 260 millions de +/- années.

Il ne gère pas les secondes sautées. C'est une bonne chose. Une transition en douceur est proposé par les gens d'horloge atomique pour permettre à des systèmes qui ne déploient pas des secondes intercalaires pour ajuster progressivement leurs horloges plus de 100 secondes pour recevoir le deuxième saut de correction.

Entretien des tables de fuseau horaire sera également un problème.

Le continuum sous-jacente permet également un ancien calendrier français et l'horloge qui divisait par jour en 10 intervalles appelés métrique temps au lieu de 24 heures. Le calendrier chinois classique divise un jour en 100 incréments, chacun un peu plus de 14 minutes. Tous ces calendriers peuvent être mis en œuvre et coordonné sur le continuum de temps de milliseconde sous-jacent.

Le principal problème avec elle est au moins lockin vendeur jusqu'à ce qu'il devienne une partie de la norme.

Pour la plupart, j'utiliseraient désire ardemment pour stocker des informations de date d'affaires sur une base de données. Cela me donne la possibilité d'ajuster la précision comme je l'entends. Dans la plupart des cas que je viens de les convertir à java.util.Date.

Les fuseaux horaires Je traiterais être un problème au niveau de la présentation d'un problème de données. Cela simplifie la base de données et augmente la portabilité puisque les bases peuvent représenter temporaux dans différentes modes.

La classe standard de calendrier me donne des fonctions de manipulation de la date que je convertir en milliseconde depuis que les données d'époque.

En ce qui concerne la précision nanoseconde je stockerait que comme un décalage de 0 comme une longue colonne séparée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top