Developpez.com - Rubrique Java

Le Club des Développeurs et IT Pro

Introduction aux API utilitaires fournies par Google Guava,

Un tutoriel de Thierry Leriche-Dessirier

Le 2013-10-09 21:53:42, par thierryler, Rédacteur
Bonjour à tous,

Je vous propose une série d'articles consacrés à la bibliothèque Guava, by Google, dont voici le 4ème épisode : les utilitaires.

http://thierry-leriche-dessirier.dev...a/utilitaires/

Comme toujours, les remarques sont les bienvenues.

Bonne lecture
  Discussion forum
15 commentaires
  • adiGuba
    Expert éminent sénior
    Salut,

    A noter que certaines de ces fonctionnalités ont été intégré dans Java 7, dans la classe java.util.Objects comme avec Objects.equals() et Objects.hash() pour générer les equals()/hashCode(), ou Objects.requireNonNull() pour générer les erreurs en cas de null...

    Enfin Java 8 intégrera une classe Optional

    a++
  • bulbo
    Rédacteur
    C'est fort, tu connais l'API Guava mais pas l'API standard ni les règles associées aux opérateurs logique du langage.

    Ca, ça suffit par exemple:

    Code :
    ((x == null) || x.isEmpty())
    Et le pire c'est que parfois on se retrouve avec un import d'une librairie complète genre guava (attention je ne remets pas en cause la qualité de ladite librairie hein) pour 2 utilisations en tout et pour tout d'un Strings.isNullOrEmpty(xxx).

    Bon, dans mon vécu c'était commons.lang.StringUtils.isEmpty() .. 2 appels dans une seule classe de tout le projet .. et utilisé dans une applet donc downloadée à chaque fois.. bravo

    Bulbo
  • rg77140
    Membre confirmé
    Bonjour,

    C'est un article assez complet sur Guava. Il serait peut-être intéressant de montrer ce que ça donne chez la "concurrence" (commons3 et lombok notamment).

    La seule chose qui ne me convainc pas vraiment sont les Optional. Je n'aime pas trop me trimbaler dans toutes les couches de mon application des interfaces qui ne font pas parties du JDK... Si un jour on décide de changer de méthode et de se passer des Optional, il faudra revenir sur toutes les signatures des méthodes de l'application quasiment... J'ai pas de retour sur le long terme mais à première vue ça ne me parait pas une bonne idée.

    Quelques coquilles dans l'article. Tous les morceaux de code apparaissent en double. Il y a un TODO dans les remerciementx. Le lien pour commenter ne pointe pas sur le bon topic.

    Romain.
  • thierryler
    Rédacteur
    Merci pour cette réponse.

    C'est un article assez complet sur Guava. Il serait peut-être intéressant de montrer ce que ça donne chez la "concurrence" (commons3 et lombok notamment).
    Simplifier le code de vos beans Java à l'aide de Commons Lang, Guava et Lombok : http://thierry-leriche-dessirier.dev...-guava-lombok/

    La seule chose qui ne me convainc pas vraiment sont les Optional. Je n'aime pas trop me trimbaler dans toutes les couches de mon application des interfaces qui ne font pas parties du JDK... Si un jour on décide de changer de méthode et de se passer des Optional, il faudra revenir sur toutes les signatures des méthodes de l'application quasiment... J'ai pas de retour sur le long terme mais à première vue ça ne me parait pas une bonne idée.
    L'utilisation des Optional (Option en Scala) est très importante pour la JVM. Personnellement, je trouve qu'elle simplifie beaucoup le code, en particulier dans un contexte multi couche. Je suis néanmoins d'accord avec ta remarque qui précise que ce n'est pas un objet du JDK...

    Quelques coquilles dans l'article. Tous les morceaux de code apparaissent en double. Il y a un TODO dans les remerciementx. Le lien pour commenter ne pointe pas sur le bon topic.
    Je confirme. Je m'en occupe asap.
  • thierryler
    Rédacteur
    Enfin Java 8 intégrera une classe Optional
    Le même nom de classe ;-) ça permettra une transition en douceur.
  • adiGuba
    Expert éminent sénior
    Envoyé par thierryler
    Le même nom de classe ;-) ça permettra une transition en douceur.
    Par contre je ne sais pas si l'API est la même.
    Pour info : http://download.java.net/jdk8/docs/a.../Optional.html

    a++
  • thierryler
    Rédacteur
    Ça devrait être bon là. Je ne sais pas ce qui a pu se passer dans l'export de l'article.
  • Derf59
    Membre actif
    Petite astuce, plutôt que de tester la chaine null quand on écrit du code
    str != null && str.equals("abcd"

    c'est plus simple de l'écrire
    "abcd".equals(str)

    Java fait alors le travail tout seul
  • thierryler
    Rédacteur
    @Derf59: Non non non, ce n'est pas du tout pareil ! Le résultat semble le même mais la mécanique ne l'est pas. Et je ne parle même pas de l’aspect sémantique.
  • bulbo
    Rédacteur
    Pour moi le résultat fait qu'un peu plus que sembler être pareil non ? Ca fait le boulot.

    Après s'inquiéter de l'aspect sémantique dans un cas aussi basique, on est pas loin de la drosophilie non ?

    Enfin je dis ça, on est vendredi aussi on a le droit d'être taquin.

    Bulbo