L'objet de ce billet, en deux parties, est de comparer l'annotation standard @Resource du package javax.annotation.Resource à celle de
spring @Autowired du package org.springframework.beans.factory.annotation.
Nous verrons les situations où nous sommes obligés de favoriser les annotations standards.
L'utilisation des annotations réduit considérablement la verbosité des fichiers de configuration de Spring.
C'est aussi le même constat pour d'autres frameworks.
En effet, le principe "convention Over configuration" participe à cette diffusion.
Certes, les pours et les contres ne manqueront pas d'arguments pour débattre.
Mais ceci n'est pas l'objet de ce billet.
L'objectif ici est de comparer ces deux types d'annotations.
Pour cela, nous nous appuyons sur un projet projet java simple, sans maven, que vous pouvez créer sous Eclipse en suivant les étapes décrites ci-après.
Nous écrivons d'abord un projet avec les annotations de Spring puis nous illustrons les difficultés qui nous amèneront à introduire les annotations standards.
En ce moment sur Netapsys Blog
Spring annotations vs standards annotations: Que choisir entre @Autowired et @Resource?
Par Abderrazek CHINE le dimanche 7 mars 2010, 19:32 - Spring Java
Retour d'expérience sur OSCommerce
Par Pawel Firsowicz le vendredi 5 mars 2010, 19:01 - Web

OSCommerce (Online Shop Commerce) est une plateforme d'e-commerce open source. C'est une solution historique par excellence qui fête ses 10 ans ce mois ci ! Créé en 2000 par les passionnés, cette solution Php / MySQL, a réussi à s'imposer durant ses années d'existence en tant que la référence dans le domaine. Le nombre officiel de boutiques est estimé à 12.000 (boutiques inscrites sur oscommerce.com) mais le chiffre réel est plus près de 100.000 sites e-commerce avec le noyau métier d'OSCommerce.
OSCommerce est une solution complète de vente du catalogue de produits par le biais d'Internet. La plateforme permet, grâce à son front office, de présenter au client la gamme des produits et de réaliser des achats. Elle dispose d'un grand nombre de fonctionnalités annexes au cœur du métier : enregistrement du client, gestion de panier, calcul de taxes, la recherche, les promotions, les flux rss, les newsletters et plein d'autres encore ! Le client a aussi la possibilité d'accéder à son compte avec toutes ses informations personnelles et l'historique de ses commandes. Le back office, quant à lui, permet à l'administrateur d'accéder aux statistiques, à la gestion des commandes et des clients ainsi qu'au catalogue de produits.
La version en cours est la RC 2.2. La nouvelle version 3.0 Alpha est déjà disponible en téléchargement depuis 2 ans mais sa sortie finale tarde à voir le jour.
La force d'OSCommerce réside dans son expérience. En effet, cette plateforme est la solution e-commerce open source disposant de la plus importante communauté, aussi bien pour la version anglophone que pour la version française. Le nombre de modules additionnels (modules de paiement, de référencement, etc. ) est important, environ 6.000 modules disponibles en téléchargement sur oscommerce.com !
La première utilisation est facile, intuitive et sans problèmes. La configuration minimum requise est Php, MySQL et un serveur web. L'installation consiste à décompresser et coller le contenu du dossier "catalogue" à l'endroit souhaité. Ensuite, il suffit de lancer l'installation (script install.php à exécuter) qui va créer toute la structure de la base de données.
La plateforme a été pensée pour être une solution clé en main, configurable et utilisable aisément. Ceci reste vrai uniquement pour le système d'information qui ne présentent pas de particularités fonctionnelles dans le catalogue des produits. Une fois sorti de ce cadre, les modifications du code source de la plateforme deviennent laborieuses, faute à une architecture peu structurée.
Également, le design d'OSCommerce commence à être largement démodé. S'occuper de la présentation devient une obligation. L'utilisation d'un template est possible mais très souvent, ils sont payants et difficiles à intégrer.
Opter pour une solution OSCommerce demande à se plonger dans le code source de la plateforme. L'ajout de chaque nouveau module est accompagné d'une difficulté supplémentaire, ce qui rend le code illisible. De plus, le noyau surchargé par les modules additionnels et adapté au système d'information existant est difficilement évolutif.
La division entre les couches dao - métier - présentation est quasiment inexistante. Les accès à la base de données sont trop fréquents et très peu optimisés. La couche de présentation n'utilise pas les standards actuels du développement web. Les pages d'affichage sont composées de tableaux imbriqués, difficilement évolutifs qui nuisent au référencement naturel et à l'accessibilité de la boutique.
Pour une utilisation professionnelle plus avancée, OSCommerce n'est pas la solution la plus adaptée. L'intégration dans un système d'information existant peut s'avérer complexe. L'ajout de spécifications fonctionnelles nécessitera l'intervention d'un développeur qui connait le langage Php. Il en est de même pour une éventuelle maintenance et les mises à jour.
Dans le cas de mon expérience de la plateforme OSCommerce, la couche de présentation a été entièrement refaite, la partie dao très fortement optimisée. La partie métier a été largement modifiée pour prendre en compte les spécificités fonctionnelles. Le nettoyage et la refonte du code a été nécessaire afin de supprimer les parties devenues obsolètes.
Des alternatives existent sur le marché. En particulier, Prestashop (une alternative française à OSCommerce née en 2005) et Magento (première sortie en 2008). Ce sont deux solutions, assez récentes, qui prennent de plus en plus d'ampleur. Il existe aussi des solutions de couplage des plateformes CMS classiques avec un module additionnel orienté vente de produits (p.ex : Virtuemart avec Joomla! ou bien Ubercart avec Drupal) et les dérivés du noyau d'OSCommerce (p.ex : OsCSS ou bien Cpcommerce).
Pour aller plus loin :
Site officiel français
OSCommerce : version de démonstration (front office)
OSCommerce : version de démonstration (back office) : (login : admin / mot de passe : demo)
Guide complet et comparateur solutions e-commerce (étude faite en 2008)
Les plus belles boutiques oscommerce
Le développement logiciel, la confiance, l'arrogance et l'humilité
Par Abderrazek CHINE le jeudi 4 mars 2010, 20:11 - Générale
A la lecture de cet article en anglais, je me suis dit qu'il est bon de partager l'essentiel avec vous.
Ce n'est pas une traduction mais plutôt une adaptation libre.
De plus, l'intérêt sur la vie des développeurs ( nous le sommes tous) est bien évident.
Albert Einstein disait "The more I learn, the more I realize I don’t know" ce qui peut se traduire "Plus ta connaissance est grande, plus ton ignorance l'est aussi".
C'est justement ça la beauté de la science avec grand S. "I have told you that you have to have a big intent to become a man of Science".
Allons donc à l'essentiel en quelques lignes.
Retour d'expérience sur l'intégration continue
Par Fabian Piau le lundi 1 mars 2010, 22:29 - Agile
Sébastien Roul et moi-même allons co-animer une présentation sur l'intégration continue le mercredi 17 mars dans le cadre d'une rencontre Agile à Nantes.

Notre objectif ne sera pas seulement d'en présenter les concepts, nous apporterons aussi notre vision et retour d'expérience.
En effet, après plus d'un an d'utilisation chez Netapsys Atlantique, l'intégration continue s'inscrit au coeur de notre métier avec une mise en place systématique sur l'ensemble de nos projets client.
L'intérêt de cette double intervention permettra de présenter ma vision de développeur avec une utilisation quotidienne, mais aussi la vision de chef de projet avec Sébastien.
L'intégration continue n’est pas seulement l'installation d'un serveur avec quelques outils appropriés, c’est vraiment un état d'esprit qui doit vivre au sein de l'équipe...
Pour en savoir plus ou assister à la présentation, vous pouvez consulter ce billet sur le site d'Agile Nantes.
[CSS3] Quand les coins tournent rond...
Par Benoît Cotinat le jeudi 11 février 2010, 20:56 - Web
Je vais faire dans ce post une petite présentation d'une nouveauté introduite par la version 3 de CSS, qui permet d'arrondir les angles des bordures de façon très simple.
Avant (ou presque)
Auparavant (ou actuellement si une compatibilité est exigée avec un navigateur ne gérant pas -encore ?- cette fonctionnalité) pour avoir des coins arrondis, il fallait (faut) passer par des images. Et quand on veut une zone totalement dynamique, ça peut vite devenir la galère (gérer une image par coin, en gardant tous les alignements lors du changement de taille).
Maintenant
Une des nouveautés du CSS3 est un attribut permettant de gérer nativement les arrondis de toutes les bordures.
Cet attribut, border-radius, n'est pas encore publié officiellement, mais certains navigateurs le prennent déjà en charge avec un attribut "propriétaire" :
-moz-border-radiuspour le moteur Gecko (utilisé entre autre par Firefox)-webkit-border-radiuspour le moteur de rendu webkit (utilisé entre autre par Chrome)
Pour les exemples ci-dessous, j'ai utilisé firefox 3.5 et chrome 4.0. Cette nouveauté n'est donc pas gérée par Internet Explorer, et ce quelle que soit sa version ; la version 3.0 de firefox quant à elle ne la gère que partiellement.
Utilisation
Utilisée seule, la valeur de l'attribut (exprimé en px, pt, em ou %) permet de définir l'angle de l'arrondi appliqué aux quatre coins. Plus la valeur est élevée, plus l'arrondi sera donc grand :
Différentes variations de l'attribut existent pour personnaliser la zone. Déjà des divergences dans la notation apparaissent.
Ici le moteur webkit suit la spécification du W3C :
(À noter qu'il n'existe pas d'attribut pour arrondir uniquement les 2 angles du haut par exemple)
Un arrondi ovale peut ausi être appliqué à un coin en associant 2 valeurs au même attribut. La première valeur indique la courbure de l'angle horizontal, la deuxième de l'angle vertical :
Il est possible de gérer l'arrondi de plusieurs angles au sein de la même balise, tout en spécifiant l'incurvation horizontale et verticale. Le séparateur utilisé pour différencier les valeurs de chaque axe est le "/" :
Compatibilité
Inévitablement, des différences de syntaxe et de rendu selon les navigateurs apparaissent quand on essaye de regrouper toutes ces valeurs au sein du même attribut :
Analysons rapidement ce style. Les deux valeurs sont censées s'appliquer respectivement à l'angle supérieur gauche et supérieur droit (leur angle opposé reprendront ces valeurs). Le séparateur de valeur n'étant pas utilisé, l'arrondi horizontal devrait être le même que l'arrondi vertical.
Ici, pas de jaloux, c'est Firefox qui respecte les spécifications du W3C ; alors que Chrome applique un arrondi ovale aux 4 angles.
Si on utilise le slash, aucune ambiguïté n'est possible, et les 2 rendus sont identiques.
Conclusion
La norme CSS met ici à disposition un outil simple pour obtenir un rendu plus agréable. Il peut facilement être utilisé pour la création d'un style lors de l'ajout de fonctionnalité par exemple, ou lors de la modification d'une charte graphique. Et même si des problèmes de compatibilité entre navigateurs persistent encore et toujours, ils ne sont ici pas bloquants pour le traitement "de base", à savoir des coins... ronds.
Liens
La chandeleur est de retour chez Netapsys Atlantique
Par Denis Sanchez le mardi 2 février 2010, 21:33 - Netapsys
On ne faillit pas à la tradition. Aujourd'hui les crêpes et le cidre étaient au rendez vous chez Netapsys Atlantique.
L'équipe en a profité pour intégrer comme il se doit l'arrivée d'un nouveau Chef de projet.
JAX-RS web service REST avec Spring (implémentation RestEasy)
Par Abderrazek CHINE le samedi 30 janvier 2010, 19:54 - Spring Java
L'objet de ce billet: Illustrer avec un exemple assez complet la mise en pratique du web service REST (JAX-RS) s'appuyant sur l'implémentation RestEasy de JBoss avec Spring 2.5.
L'exemple repose sur les briques (api) suivantes. Notez bien la version lorsqu'elle est mentionnée.
- RestEasy: L'implémentation Jboss de jax-rs (JSR 311),
- Spring 2.5 et les annotations,
- Hibernate pour la partie persistence
- L'api Dozer v4.0 pour les DTO (Data Transfert Objetc) ou VO((Value Object).
- Junit 4.4,
- HttpUnit,
- XMLUnit.
Nota:La version Dozer 4.0 a renommé complètement ses packages. Certains tutos sur le web sont donc caduques.
C'est à la fin de l'étape 5 que nous détaillons l'emploi de l'api Dozer.
Quelques repères:
REST (Representational State Transfer) développé par Roy Fielding qui est l’un des fondateurs du protocol HTTP.
JSR 311 est la spec JAX-RS: Java API for RESTful Web Service. Finalisée en mars 2008.
Les CINQ principes de REST
- P1: Tout est ressource, un identifiant unique à chaque ressource (http://localhost:8888/clients/2 pointe sur le client ayant id=2),
- P2: Utiliser les méthodes HTTP (HEAD/GET/POST/PUT/DELETE). Et les erreurs standards HTTP,
- P3: Les échanges avec plusieurs représentations ( xml,(x)html, json,..),
- P4: Échanges sans état (stateless),
- P5: Lier les ressources entre elles.
PRÉ-REQUIS: Java5.
[JUG Nantes]Retour du Jeudi 14 Janvier 2010 : Les nouveautés de Java EE6 avec Antonio Goncalves
Par Denis Sanchez le lundi 25 janvier 2010, 11:52 - Java
Jeudi 14 Janvier nous avons eu le plaisir de recevoir Antonio Goncalves au JUG de Nantes, qui est venu nous présenter les dernières nouveautés de Java EE6.
Avant de commencer la liste des nouveautés de Java EE6. Je pense qu'il faut s'arrêter sur le parcours d'Antonio.
Comme le dit si bien Antonio "Il n'appartient à personne!" et il est Architecte sénior en freelance.
Antonio intervient chez ses clients comme consultant et formateur.
Ancien de chez BEA en tant que consultant Weblogic , il s'est spécialisé depuis 1998 dans l'architecture logicielle et les technologies Java.
Antonio est l'auteur de plusieurs livres dont Java EE5 aux éditions Eyrolles et Java EE 6 aux éditions Apress.
Il est membre du JCP (Java Community Process) et intervient sur les JSR 316 (Java EE 6), JSR 317 (JPA 2.0) et JSR 318 (EJB 3.1).
Il enseigne également la plate-forme Java EE au Conservatoire National des Arts et Métiers (http://www.cnam.fr/).
Il est rédacteur technique pour les sites DevX et Developpez.com, co-fondateur du Paris Java User Group (http://www.parisjug.org/) et co-animateur des Cast Codeurs (http://lescastcodeurs.com/).
Depuis peu, Il a été élu "Java Champion" pour sa forte implication sur la plateforme Java.
Suivez-le sur son blog http://agoncal.wordpress.com/ ou sur Twitter http://twitter.com/agoncal.
Résolutions pour la nouvelle année
Par Abderrazek CHINE le vendredi 15 janvier 2010, 15:15 - Netapsys
Le jour de mon anniversaire (oui Bénédicte, je l'avais oublié mais je te rassure : ça dure depuis un moment...). Il est 15:15, je me suis appliqué à écrire mes quinze moins quatre résolutions suite à la lecture de la lettre du père noël sur le blog .
Après réflexion, j'ai décidé de les partager avec vous.
Avec ces onze là, on est qualifié au mondial en Afrique du sud :).
Onze ça fait trop, impossible à tenir!
Aïe, ce n'est pas équitable ! Il y en a plus pour les développeurs que pour les CP ! Injuste !
Oui. c'est vrai ! Mais ça ne date pas d'aujourd'hui.
Voici ces résolutions (recommandations) réparties en trois groupes.
Le père noël est passé avant l'heure.
Par Denis Sanchez le mercredi 2 décembre 2009, 10:09 - Netapsys
Hier, il a fait tomber de sa hotte 3 belles certifications.
On peut féliciter Céline, Benoît et Denis pour l'obtention du diplôme Sun Certified Programmer For JAVA.
Les prochains candidats auront fort à faire surtout pour battre Céline qui a réussi l'exploit de faire 100%.
Les révisions ont commencé il y a déjà plus de 6 mois avec une série de questions tous les jours, histoire de s'entraîner.
Le partage et la bonne humeur ont, je pense, été la clé du succès.
Merci à Céline et Benoît de m'avoir permis de réviser dans de bonnes conditions.
Le travail a été dur mais l'effort a payé.
« billets précédents - page 1 de 12
Derniers commentaires