CarmaBlog

Agilité, Développement Java, Nouvelles technologies et plus…
  • rss
  • Accueil
  • Management
  • Programmation agile
  • Technologie
  • Linux
  • Evénement
  • Contact
  • A propos de l'auteur
  • English
  • Francais

Java EE & CDI vs. Spring

Fabian Piau | jeudi 13 octobre 2011 - 21:58
10 210 vues
  • Twitter
  • Facebook
  • Google +1
  • LinkedIn

Mercredi soir au JUG nantais, nous avons pu assister à la présentation “Stateful is beautiful” d’Antoine Sabot-Durand.


Expert en Java EE depuis plusieurs années, Antoine nous a donné sa vision sur le paysage Java actuel, en particulier sur Java EE (Enterprise Edition) et l’alternative Spring.


Spring est un conteneur dit léger qui permet d’obtenir une infrastructure similaire à celle d’un serveur d’application Java EE plus lourd. Si le premier ne connait que les beans stateless, le second connait aussi les beans stateful.

L’exemple d’un site e-commerce est souvent choisi pour expliquer concrètement ces deux notions.
Le panier sera représenté par un bean stateful dans le code. Son état est conservé pendant une certaine durée. Cela commence quand l’utilisateur ajoute un produit et prend fin lorsqu’il saisit son numéro de carte bancaire pour payer. L’état stateless est suffisant pour la consultation du catalogue de produits. Pour afficher une fiche produit, on ne se préoccupe pas des produits que l’utilisateur aura consulté précédemment. Le produit sera représenté par un bean stateless.


Java EE et ses vieux démons       

Antoine a également passé en revue les idées reçues sur Java EE. Ces idées découlent pour la plupart de son historique et continuent de le poursuivre. A l’époque de J2EE (comprenez Java EE 4 et inférieur – les versions sorties jusqu’en 2003), la spécification EJB 1.X – 2.1 incluse a essuyé de nombreuses critiques de la part de la communauté Java. Très lourde à mettre en oeuvre du fait de sa complexité et rendant vite votre code très difficilement testable, cette plateforme Java dédiée Entreprise n’a pas convaincu…

Ce manque a même donné naissance au développement de solutions alternatives dans le monde Open Source, tels que Spring et Hibernate.


Depuis, la plateforme (renommée Java EE) a évolué et a été simplifiée, la nouvelle spécification EJB 3.X incluse est devenue plus légère se rapprochant ainsi de ses concurrents. Cela est particulièrement vrai pour la dernière version Java EE 6 sortie fin 2009. En effet, celle-ci inclut CDI (Contexts and Dependency Injection), le standard qu’il lui manquait pour concurrencer sérieusement Spring. Elle inclut également la notion de “profile”, permettant à Java EE de se spécialiser. Dans les grandes lignes, on ne prend que les composants dont on a besoin. Pour les tests d’intégration dans le conteneur, Antoine nous a conseillé d’utiliser l’outil Arquillian.


       Logo Spring

Spring a fait le choix de ne pas implémenter le nouveau standard CDI. Pourquoi? La réponse n’est pas si simple. Peut-être qu’implémenter ce nouveau standard allait être impactant sur le code existant et risquait de mettre un frein aux évolutions du framework. En même temps, fort de son nombre d’utilisateurs, peut-être que SpringSource a décidé de continuer son développement parallèle en espérant un jour détrôner définitivement CDI. En général, les entreprises sont plutôt frileuses lorsqu’il s’agit de revoir leurs habitudes, connaissances et autres bonnes pratiques (utiliser CDI au lieu de Spring serait un investissement très important). En même temps, cela peut être à double tranchant si CDI se met à décoller dans les années à venir. Affaire à suivre!
A noter : contrairement à Spring, Hibernate implémente JPA pour la couche de persistance (qui est le standard Java EE) lui assurant une plus grande pérennité pour l’avenir.


Comme Antoine l’a rappelé à de nombreuses reprises, le but de sa présentation n’est pas de dénigrer Spring. Bien au contraire, il continue d’ailleurs de l’utiliser et pourrait difficilement s’en passer. Il a notamment fait la métaphore du “marteau doré” avec Spring que j’ai trouvée plutôt intéressante. Aujourd’hui, la majorité des développeurs Java ne se posent pas de questions lorsqu’ils veulent faire de l’injection de dépendance et utilisent spontanément Spring (on a un clou, hop on prend notre marteau favori). Pourtant, il faudrait pouvoir poser ce marteau doré quelques temps et voir ce qui se fait autour. En fonction du projet, Spring n’est pas toujours le plus adéquat.


Aujourd’hui, le succès de Java EE reste globalement mitigé, les idées reçues ont la dent dure, Spring a encore de beaux jours devant lui. Combien de temps encore? Seul l’avenir nous le dira… En attendant, Antoine nous invite fortement à essayer Java EE 6 pour se faire sa propre opinion. A la fin, nous avons eu le droit à une démonstration : un projet exemple en Java EE, créé en quelques minutes à partir d’un archetype Maven et exploitant les notions stateful et stateless.


Pour en savoir davantage, je vous invite à lire ces deux articles écrits par Antoine :

  • Les rendez-vous manqués de Spring (une courte histoire de Java EE)
  • Java EE 6 ici et maintenant!

Articles similaires

Java User GroupJava User Group – JUG Les Cast CodeursLes Cast Codeurs, le podcast Java en Français
Commentaires
Pas de Commentaires »
Catégories
Evénement
Tags
cdi, hiberner, java, java ee, jug, spring
Flux rss des commentaires Flux rss des commentaires

Les Cast Codeurs, le podcast Java en Français

Fabian Piau | samedi 14 août 2010 - 19:05
463 vues
  • Twitter
  • Facebook
  • Google +1
  • LinkedIn

Pour être au courant des technologies Java et de tout ce qui gravite autour, j’ai pris l’habitude d’écouter le podcast des Cast Codeurs. Il me semble que la première fois que j’en ai entendu parler fut à un JUG.

Logo Les Cast Codeurs

N’ayant pas beaucoup de temps à consacrer à la lecture des blogs et des sites d’actualité informatique, les Cast Codeurs est une bonne alternative. De plus, grâce au format audio, il est possible de faire autre chose en même temps.

Ce podcast est relativement récent. A ce jour, il existe 25 épisodes d’une heure environ avec en moyenne 2 épisodes par mois. Il regroupe quelques passionnés Java : Emmanuel Bernard (JBoss, Hibernate), Guillaume Laforge (VMWare, Groovy), Antonio Goncalves (freelance sur JEE, auteur), Vincent Massol (XWiki, Maven).

Les sujets sont variés et toujours dans la bonne humeur : discussion libre sur l’actualité, interview sur une technologie ou un concept particulier, des astuces techniques, des présentations d’outils, les conférences à venir, etc. Je vous invite à l’écouter pour vous faire votre idée.

Articles similaires

Java EE vs SpringJava EE & CDI vs. Spring Java User GroupJava User Group – JUG
Commentaires
Pas de Commentaires »
Catégories
Evénement
Tags
actualités, java, podcast
Flux rss des commentaires Flux rss des commentaires

Plus loin avec le Maven Site

Fabian Piau | dimanche 4 avril 2010 - 22:29
639 vues
  • Twitter
  • Facebook
  • Google +1
  • LinkedIn

Introduction

Si votre projet est mavenisé (comprenez sous Maven), il serait vraiment dommage de ne pas utiliser toutes les possibilités du Maven Site.

Bien configuré, il peut devenir rapidement la “vitrine” de votre projet en centralisant ses informations les plus utiles tout en gardant un effort de maintenance très faible. Les sites Maven sont de plus en plus utilisés dans les projets open source.

Cela peut être des informations générales sur le projet (description, équipe, dépendances…), des sous-rapports spécifiques (Checkstyle, PMD, Javadoc, SureFire, Cobertura…), une FAQ (Frequently Asked Questions) sur le projet, bref ce que vous voulez…

Ce tutoriel va vous apprendre à personnaliser le site de base généré par Maven.


Prérequis : Maven doit être installé sur votre machine.

Version utilisée : 2.0.9. Suivant les versions, les commandes peuvent être différentes.


Création du projet

Tout au long du tutoriel, nous allons utiliser un projet Maven 2 de test généré grâce au plugin Archetype.

Dans un terminal, tapez :

mvn archetype:generate

Choisissez le modèle “maven-archetype-site”. Il permet de générer une structure complète de site.

17

Archetype vous demande plusieurs informations :

  • Le groupId du projet : demo.mavensite.personalization;
  • L’artifactId : maven-site-personalization;
  • La version : Appuyez directement sur Entrée, la version 1.0-SNAPSHOT nous convient;
  • Le package où mettre les classes : Par défaut, il reprend l’artifactId. C’est parfait, appuyez donc sur Entrée.

Maven-archetype-plugin

Un récapitulatif s’affiche, validez vos choix en appuyant sur Entrée une dernière fois.

Le projet est maintenant créé.


Parcours rapide du projet créé

Un dossier a été créé portant le nom “maven-site-personalization” .

Voici son architecture :

Architecture du projet

Un dossier “fr”? Et oui! Le Maven Site supporte l’internationalisation. Par défaut, celui généré par Archetype est disponible en anglais (langue par défaut) et en français.

Voici une description des différents fichiers créés.

  • site.xml : Le descripteur de site. Il définit le site dans son ensemble (la bannière, le menu à gauche, les liens disponibles). C’est en quelque sorte le point d’entrée de la génération;
  • site_fr.xml : Le descripteur pour la version française;
  • Tous les autres fichiers représentent une page du site. Pas d’HTML ici, les pages sont écrites dans des formats spécifiques à Maven qui serviront ensuite à générer du HTML.

Le site d’exemple reprend les 3 différents formats possibles (APT, Xdoc et FML).

  • Format Xdoc : C’est un format XML, ce format est disponible depuis les versions 1.x de Maven;
  • Format APT “Almost Plain Text” : Désigné remplaçant du Xdoc, ce format de type wiki est beaucoup moins verbeux;
  • Format FML : C’est le format utilisé pour créer des FAQ.


Génération du site

Après cette analyse de structure, nous allons générer le site à l’aide de la commande :

mvn site

ou

mvn site:run

pour le lancer en local avec le serveur Jetty.

Le site généré est disponible dans /target/site/index.html (ou http://localhost:8080 si vous avez choisi Jetty)

Le Maven Site généré

Le Maven Site généré

Il s’agit du site par défaut. Pour accéder à la version française modifiez le chemin par /site/fr/index.html (ou http://localhost:8080/fr).

Un peu contraignant ce changement de langue, n’est-ce pas?

Nous allons voir juste après comment ajouter des liens pour naviguer facilement entre les 2 langues.


Ajout d’une page

Pour ajouter une nouvelle page au site, il suffit d’ajouter un fichier dans un des 3 dossiers

( “apt”, “fml” ou “xdoc” ).

Par exemple, j’ai ajouté le fichier “my_new_category.apt” contenant un texte bien formaté dans le dossier “apt”.

Il faut ensuite le référencer dans le descripteur de site.

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Maven">
  <bannerLeft>
    <name>Maven</name>
    <src>http://maven.apache.org/images/apache-maven-project.png</src>
    <href>http://maven.apache.org/</href>
  </bannerLeft>
  <bannerRight>
    <src>http://maven.apache.org/images/maven-small.gif</src>
  </bannerRight>
  <body>
    <links>
      <item name="Apache" href="http://www.apache.org/" />
      <item name="Maven 1.0" href="http://maven.apache.org/"/>
      <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
    </links>
    <menu name="Maven 2.0">
      <item name="APT Format" href="format.html"/>
      <item name="FAQ" href="faq.html"/>
      <item name="Xdoc Example" href="xdoc.html"/>
      <item name="My new category" href="my_new_category.html"/>	  
    </menu>
  </body>
</project>

Relancez la génération du site

mvn clean site

et un nouvel item apparait dans le menu dirigeant vers votre nouvelle page.

Ajout d'une nouvelle page

Ajout d'une nouvelle page

J’en ai profité pour vous montrer les différentes fonctionnalités d’ATP (tableaux, liste, titres, formatage de texte…)


Internationaliser son site facilement

Nous allons ajouter des liens pour changer la langue.

Dans site.xml :

<project name="Maven">
  [...]
  <body>
    [...]
    <menu name="Other languages">
      <item name="Français" href="/fr/index.html"/> 
    </menu>
  </body>
</project>

Dans site_fr.xml :

<project name="Maven">
  [...]
  <body>
    [...]
    <menu name="Autres langues">
      <item name="English" href="../index.html"/> 
    </menu>
  </body>
</project>
Internationalisation du site

Internationalisation du site

Par défaut, l’anglais est la langue principale. Pour modifier cela, il faut modifier le POM du projet.

<locales>fr</locales>

Le français est la seule langue disponible.

<locales>en,fr</locales>

L’anglais est la langue par défaut, le français est disponible.

<locales>fr,en</locales>

Le français est la langue par défaut, l’anglais est disponible.

<locales>fr,en,es,de</locales>

Le site est multilingue, disponible également en espagnol et en allemand.


Ajouter les rapports par défaut

Comme on peut le constater, il est très simple d’ajouter des pages et de modifier la structure du site.

Vous remarquerez que les différents rapports Maven par défaut (informations générales sur le projet) ne sont pas inclus dans le site.

Il vous suffit d’ajouter la balise :

<project>
  [...]
  <body>
    [...]
    <menu ref="reports"/>
  </body>
</project>
Les rapports par défaut

Les rapports par défaut


Autres modifications du contenu

Il existe d’autres possibilités de personnalisation en modifiant uniquement le descripteur :

  • Ajouter des liens dans la bannière;
  • Changer le titre de la fenêtre;
  • Modifier la position de la date de publication;
  • Modifier le logo “Built by Maven”, les images dans la bannière…;
  • Afficher la version du logiciel (dans notre cas, la 1.0-SNAPSHOT);
  • etc.

Toutes les informations ici.


Changer le design du site avec des “skins”

Il est également possible de changer l’interface graphique générale du site.

Pour cela, il suffit (une fois de plus) de modifier le descripteur du projet (pas le POM) en ajoutant :

<project>
  [...]
  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-stylus-skin</artifactId>
    <version>1.2</version>
  </skin>
  [...]
</project>

Malheureusement, peu de thèmes sont disponibles. A l’heure où j’écris cet article, 3 thèmes officiels seulement existent.

  • maven-classic-skin (ancien thème, version 1.0);
  • maven-default-skin (thème par défaut, version 1.0);
  • maven-stylus-skin (thème utilisé par le site officiel, version 1.2).
Classic-site-skin

Classic-site-skin

Default-site-skin

Default-site-skin

Stylus-site-skin

Stylus-site-skin

En recherchant un peu sur internet, vous réussirez à en trouver quelques autres.

En plus du contenu, il est tout à fait possible d’avoir des skins différents pour les versions française et anglaise (car 2 descripteurs de site différent).


Aller plus loin dans la personnalisation

Pour obtenir un site à votre image, il est possible d’aller encore plus loin en modifiant soit même le design.

Il est possible d’ajouter vos propres images, vos fichiers de style CSS respectant votre charte graphique, vos liens spécifiques sur le projet… et ainsi à ne pas vous limiter aux fonctions de base.

Ensuite et si le résultat vous convient, vous pourrez packager vos modifications et les rendre disponibles sous forme de skin.

Voici une sélection de designs que j’ai pu apprécier. Il faut dire que le résultat est plutôt réussi pour certains. On en oublierait presque qu’il s’agit d’un Maven Site…

Cecilia-site-skin Embedchat-site-skin
Fluido-site-skin Wicket-site-skin
James-site-skin Mydoggy-site-skin
Lift-site-skin Netapsys-site-skin


Ressources

Le site officiel du plugin “Maven-site” :

http://maven.apache.org/plugins/maven-site-plugin/

Les skins officiels :

http://repo1.maven.org/maven2/org/apache/maven/skins/

La référence pour le langage ATP :

http://maven.apache.org/doxia/references/apt-format.html

La référence pour le langage FML :

http://maven.apache.org/doxia/references/fml-format.html

Articles similaires

Apache CamelUne première approche du Camel d’Apache
Commentaires
Pas de Commentaires »
Catégories
Programmation agile
Tags
java, maven, maven-site
Flux rss des commentaires Flux rss des commentaires
Page 1 sur 212»

Langue

  • Français
  • English

Articles les plus consultés

  • Changer la langue de Firefox - 20 521 vues
  • Java EE & CDI vs. Spring - 10 210 vues
  • Personnaliser Gnome 3 (Shell) - 8 782 vues
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 6 813 vues
  • Extensions WordPress de CarmaBlog - 5 664 vues
  • Open Street Map, une meilleure carte que Google Maps? - 3 284 vues
  • Ce fichier est actuellement utilisé, vous ne pouvez rien y faire… Merci Windows ! - 2 966 vues
  • Belbin – Théorie des rôles dans une équipe - 2 503 vues
  • Réaliser un sondage en ligne avec Google Docs - 2 398 vues
  • Changer le splash screen d’Eclipse en quelques secondes - 2 131 vues

Twitter

My Tweets

Tags

gestion des configurations éjecter google tdd mongodb ebook agile social script nosql agilité plugin java test unitaire windows 7 extension cloud formation eclipse jquery moteur de recherche de documents outil hiberner partage extreme programming firefox chrome intégration continue disque dur automatisation bash wordpress watin build .net mobilité informatique windows seven wave démonter bonnes pratiques docjax itil blog ic test c# fosdem ubuntu jug nantes

Articles récents

  • Mesurez votre influence sur le web avec Klout vendredi 31 mai 2013
  • Saisissez l’opportunité de suivre un cours sur la Gamification mardi 2 avril 2013
  • Comparaison NoSQL: Couchbase et MongoDB vendredi 8 mars 2013
  • IconFinder, la recherche d’icônes efficace vendredi 1 mars 2013
  • Retour sur Fosdem 2013 mercredi 20 février 2013
  • Fosdem, une conférence vraiment libre lundi 28 janvier 2013
  • Formation en ligne gratuite sur MongoDB mardi 1 janvier 2013
  • Découvrez Maxthon mardi 11 décembre 2012
  • Eteindre, mettre en veille ou hiberner son ordinateur? dimanche 9 décembre 2012
  • Une version mobile de votre Blog WordPress dimanche 28 octobre 2012
  • Réaliser un sondage en ligne avec Google Docs lundi 24 septembre 2012
  • Open Street Map, une meilleure carte que Google Maps? mercredi 25 juillet 2012
  • Une première approche du Camel d’Apache vendredi 11 mai 2012
  • Ce fichier est actuellement utilisé, vous ne pouvez rien y faire… Merci Windows ! dimanche 22 avril 2012
  • Personnaliser Gnome 3 (Shell) jeudi 15 mars 2012

Flux RSS

RSS Feed RSS - Articles

RSS Feed RSS - Commentaires

Abonnement via Email

Saisissez votre adresse email pour être informé des nouveaux articles.

Liens

  • Agile Nantes
  • Blog Ippon Technologies
  • Blog Netapsys
  • Blog Xebia France
  • Blog Zenika
  • Coursera
  • Developpef
  • Le Touilleur Express
  • Les Cast Codeurs Podcast
  • new Blog( perso );
  • OCTO talks !
  • The Coder's Breakfast

Suivez-moi!

Suivez-moi sur TwitterSuivez-moi sur LinkedInSuivez-moi sur Google+Suivez-moi sur About.meSuivez-moi sur SlideShare

Catégories

  • Evénement (9)
  • Linux (3)
  • Management (4)
  • Programmation agile (11)
  • Technologie (27)

Archives

  • Mai 2013 (1)
  • Avril 2013 (1)
  • Mars 2013 (2)
  • Février 2013 (1)
  • Janvier 2013 (2)
  • Décembre 2012 (2)
  • Octobre 2012 (1)
  • Septembre 2012 (1)
  • Juillet 2012 (1)
  • Mai 2012 (1)
  • Avril 2012 (1)
  • Mars 2012 (1)
  • Février 2012 (1)
  • Janvier 2012 (2)
  • Décembre 2011 (1)
  • Novembre 2011 (2)
  • Octobre 2011 (2)
  • Septembre 2011 (1)
  • Juillet 2011 (1)
  • Juin 2011 (2)
  • Avril 2011 (1)
  • Mars 2011 (1)
  • Février 2011 (1)
  • Janvier 2011 (2)
  • Novembre 2010 (2)
  • Septembre 2010 (1)
  • Août 2010 (1)
  • Juillet 2010 (1)
  • Juin 2010 (1)
  • Mai 2010 (1)
  • Avril 2010 (1)
  • Mars 2010 (1)
  • Février 2010 (1)
  • Décembre 2009 (1)
  • Novembre 2009 (1)
  • Octobre 2009 (2)
  • Septembre 2009 (2)
  • Août 2009 (3)
  • Juillet 2009 (1)
  • Juin 2009 (2)
rss Flux rss des commentaires get firefox
Fabian Piau | Copyright © 2009 - 2013
Tous droits réservés | Haut ↑