background preloader

Java

Facebook Twitter

Guide. Dozer - Dozer. Introduction à la programmation fonctionnelle. On distingue deux grands paradigmes dans la programmation informatique : L’impératif : basé sur une notion d’états modifiés par des instructions (le modèle de Turing), il s’agit de l’approche la plus répandue. Plus immédiate et intuitive, la plupart des langages informatiques utilisés (notamment les langages objet) sont basés sur ce paradigme.Le déclaratif : le programme est décrit sous forme d’une description de la solution par rapport à un état initial. La programmation fonctionnelle en fait partie. Facilement vue comme un joujou pour matheux aimant manier des concepts compliqués, la programmation fonctionnelle n’est pourtant pas incompatible avec les concepts de la programmation orienté objet. Une fonction pure, au sens mathématique, est une fonction qui ne change pas l’état du monde.

Nous prendrons comme exemple, afin d’illustrer chacun de ces principes, un programme permettant de calculer les occurrences suivantes de suites. On constate que cette fonction n’est pas pure. P6Spy, l'espion qui m'aidait. 13 sept. 2012 Hibernate est un bon outil, mais complexe. Pour surveiller les requêtes qu'il envoie à la base de données, il est possible d'activer différentes options : hibernate.show_sql = true hibernate.format_sql = true hibernate.use_sql_comments = true Mais les traces ainsi produites ne sont pas vraiment satisfaisantes : on voit bien la structure des statements, mais pas les véritables valeurs des paramètres : Hibernate: insert into VILLE (version, nom, PAYS_ID, ID) values (?

On sent bien qu'Hibernate a fait de son mieux pour nous aider, qu'une petite goutte de sueur a ruisselé sur son front fiévreux au cours de l'effort, mais tout de même, le résultat est loin d'être satisfaisant. Et c'est là que P6Spy intervient. P6Spy, l'espion qui m'aidait Mise en place P6Spy est une toute petite librairie fort pratique. Pour configurer P6Spy, il vous faut : Dans le fichier spy.properties, vous n'avez plus qu'à déclarer le véritable pilote JDBC, ainsi que les options de logging, et le tour est joué : Les tests unitaires paramétriques avec JUnitParams, une alternative à Junit Parameterized. Lorsque l’on souhaite tester un même comportement sur différentes données, on peut soit : Développer plusieurs méthodes de tests qui vérifient le même code avec des entrées différentes ; Utiliser une méthode de test paramétrique. Les tests paramétriques permettent d’exécuter une même méthode de test sur des données différentes (les paramètres).

Cela permet de ne pas avoir à écrire de multiples tests unitaires pour tester des entrées différentes. Junit permet de faire des tests unitaires paramétriques, quoique de manière peu pratique et concise. Il existe une bonne alternative qui efface ces problèmes : JUnitParams, dont la première version stable (1.0.0) est sortie en mai 2013, et la dernière version (1.0.2) en juin 2013. Dans cet article, nous allons comparer l’aspect test paramétrique de ces deux frameworks à travers un exemple simple. Avec Junit Le framework de test unitaire Junit permet de développer des tests paramétriques. Utiliser Parameterized Observations Ou bien pire ! Conclusion. Release15 - guava-libraries - Release notes for Guava Release 15.0 - Guava: Google Core Libraries for Java 1.6+ Release 15.0 was release on September 06, 2013. Release 15.0-rc1 was released on August 26, 2013. (See ReleaseHistory.) Full API Documentation Using Guava in your project This release will be identified in the Maven Central repository as com.google.guava:guava:15.0 and com.google.guava:guava-gwt:15.0 See UseGuavaInYourBuild for help integrating Guava into your build environment.

If you don't use managed dependencies, you can also just manually download JARs of the classes, sources and documentation from: Issues resolved 38 issues are resolved in this release. API Changes Full JDiff Report of changes since release 14.0.1 To build a combined report of the API changes between release 15.0 and any older release, check out our docs tree and run jdiff/jdiff.sh with the previous release number as argument (example: jdiff.sh 5.0). Significant API additions Escaper, Escapers, various simple Escaper implementations. HtmlEscapers XmlEscapers common.base StandardSystemProperty Splitter.splitToList common.collect.

Spring

Craftsman Recipes : Soignez vos tests unitaires. La pratique des tests unitaires est maintenant bien acceptée dans les équipes de développement Java. Malheureusement, le code de test reste moins soigné que le code de l’application, en particulier au niveau du nommage des classes et des méthodes de test. Difficile de maintenir une classe de test dont les méthodes sont nommées test1, test2 et test3… D’autant plus quand le développeur responsable a quitté l’équipe depuis plusieurs mois !

Cet article montre une démarche à suivre pour donner du sens à vos tests unitaires, en appliquant certains principes du Behavior Driven Development afin d’obtenir une classe de tests unitaires claire et maintenable. Les tests seront réalisés avec Junit. Le composant à tester Prenons l’exemple d’un système très rudimentaire de recommandation musicale que nous baptiserons Music Guide (MG). C’est un composant dont le rôle est défini très précisément : sa responsabilité est de suggérer des artistes.

Principes de conception de l’interface : L’approche standard. Java 8 : du neuf dans les interfaces ! 23 janv. 2014 Parmi les nouveautés apportées par Java 8, on en trouve deux qui concernent les interfaces : les méthodes statiques et les méthodes par défaut. Les méthodes statiques définies sur les interfaces fonctionnent exactement de la même façon que celles portées par les classes, il n'y a donc pas grand-chose à en dire. En revanche, les méthodes par défaut risquent de modifier assez profondément notre façon de concevoir nos API.

En Java 7 et antérieur, une méthode déclarée dans une interface ne fournit pas d'implémentation. Ce n'est qu'une signature, un contrat auquel chaque classe dérivée doit se conformer en fournissant une implémentation propre. Mais il arrive que plusieurs classes similaires souhaitent partager une même implémentation de l'interface. Factoriser le code commun dans une classe abstraite, mais il n'est pas toujours possible de modifier la hiérarchie des classesExtraire le code commun dans une classe utilitaire, sous forme de méthode statique (ex: Collections.sort()). Google Java Style. 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein.

Like other programming style guides, the issues covered span not only aesthetic issues of formatting, but other types of conventions or coding standards as well. However, this document focuses primarily on the hard-and-fast rules that we follow universally, and avoids giving advice that isn't clearly enforceable (whether by human or tool). 1.1 Terminology notes In this document, unless otherwise clarified: The term class is used inclusively to mean an "ordinary" class, enum class, interface or annotation type (@interface).The term comment always refers to implementation comments. Other "terminology notes" will appear occasionally throughout the document. 1.2 Guide notes Example code in this document is non-normative. 2 Source file basics 2.1 File name.