<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Next Presso</title>
	<atom:link href="http://www.next-presso.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.next-presso.com</link>
	<description>Java, Seam, Spring &#38; co</description>
	<lastBuildDate>Fri, 30 Sep 2011 15:33:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Please JBoss don&#8217;t let CDI become the &#8220;Betamax&#8221; of Java by destroying Seam 3</title>
		<link>http://www.next-presso.com/2011/09/please-jboss-dont-let-cdi-become-the-betamax-of-java-by-destroying-seam-3/</link>
		<comments>http://www.next-presso.com/2011/09/please-jboss-dont-let-cdi-become-the-betamax-of-java-by-destroying-seam-3/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 13:42:07 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://www.next-presso.com/?p=358</guid>
		<description><![CDATA[Following the <a href="http://relation.to/Bloggers/SoWhatsHappeningWithSeam" target="_blank">in.relation.to</a> blog post of last tuesday.As a tech lead on one Seam Module (Seam Social),  I wrote this open Letter to Red Hat employees in charge of Seam project and community. I find useful to share my point of view with the community on this matter.  You also might find interesting to read the <a href="http://hannelita.wordpress.com/2011/09/28/seam-3-whats-going-on/" target="_blank">blog post of Hannelita</a> on the same subject. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://t3.gstatic.com/images?q=tbn:ANd9GcQNHkaAUCvMxaQKyp2C33sIfRo1LJ8nhQahRRg0KrMGZhqElYzI" alt="" width="195" height="127" /><br />
Following the <a href="http://relation.to/Bloggers/SoWhatsHappeningWithSeam" target="_blank">in.relation.to</a> blog post of last tuesday, as a tech lead on one Seam Module (<a href="http://seamframework.org/Seam3/SocialModule" target="_blank">Seam Social</a>),  I wrote this open Letter to Red Hat employees in charge of Seam project and community. I find useful to share my point of view with the community on this matter.  You also might find interesting to read the <a href="http://hannelita.wordpress.com/2011/09/28/seam-3-whats-going-on/" target="_blank">blog post of Hannelita</a> on the same subject.</p>
<p>Here is my letter :</p>
<p><em>This email is a tentative to gather and synthesize all my thought following the yesterday announce on in.relation.to about Seam 3 reorganization. I want it to be seen as a positive feedback. I don&#8217;t pretend to have all the answers but being someone external to Red Hat and having worked with other frameworks / technologies give me (I think) a better &#8220;big picture&#8221; view and a more objective perception of the matter.</em></p>
<h2><em>Who&#8217;s talking ?</em></h2>
<p><em>I&#8217;m not going to tell you all my life here. But it can help for my legitimacy to know that I graduated from a famous IT School in 1995 (yes I&#8217;m 40) and had been working in IT since then. I started with C / C++ and then Lotus Domino (talking about mistakes). I started looking into Java in 1997 as a hobby and more seriously for work in 2001. I worked with a lot of Java frameworks : pure servlet and JSP, Struts 1.X, iBatis, Spring, JSF, Hibernate, EJB3, Seam 2 (I started with 2 beta in 2007) to finally adopt Java EE 6.</em></p>
<p><em>I&#8217;d been  working alone for 10 years then after that as a CTO in a small Web Agency (where I learnt some web marketing) and I&#8217;ve bee working since 2009 as a consultant in an IT Consulting company specialized on Java. My Job is to audit applications, design new application as an architect and doing support to other developer on a bunch of technologies.</em></p>
<h2><em>History (knowing our &#8220;opponent&#8221;)</em></h2>
<p><em>Again, I&#8217;m not going to write a novel here but I think it&#8217;s better to put things in perspective.</em></p>
<p><em>JCP had clearly a bad start. Most of specification in J2EE before Java EE 5 were full of flaws (especially EJB 1.X and 2.X). That&#8217;s mainly the reason why Spring was created and has been so successful : it was a pragmatic and rather clean way to address Java Enterprise needs. From a lightweight solution spring grown to a heavy but quite consistent eco-system and today it has a big market share in the Java Industry. Meanwhile spring was getting bigger, the JCP somehow took notice of its past errors and worked to change things and provide nice specification for the new Java EE edition. But we had to wait for Java EE 6 to get an official standard that was able to compete with Spring (the de Facto Standard) thanks to CDI and the tremendous work that JBoss guys put in it.</em></p>
<p><em>So today we are in a paradoxical situation where the official Java EE stack is the challenger of the de facto standard : Spring. To be honest, Java EE is better than core Spring but not way better. Also Spring has a lot of popular modules that help developers in their daily work (a big eco-system). A lot of  company have invested on Spring (training, support, etc&#8230;) and they have no obvious reason to switch to Java EE 6. If we want to bring them to this switch we have to build something better and something bigger</em></p>
<h2><em>What should be Red Hat goals ?</em></h2>
<p><em>The main goal for Red Hat is to sell licenses and support. I don&#8217;t know your exact income on JBoss activity but with a real big Java EE adoption, those incomes should rise very clearly. Right now most of the JBoss EAP server I see at my customer run Spring application and most of these server could be switched to Tomcat or Jetty tomorrow without any big trouble (the same for most WAS or Weblogic).</em></p>
<p><em>A secondary goal (that interest me more) is philosophical. The Java EE 6 stack is a community creation, its blue print doesn&#8217;t belong to a single shop and tomorrow if someone want to propose something new he could contribute to this community. Ok, it&#8217;s not perfect but for me it&#8217;s far way  better than having VMWare deciding what&#8217;s good and wrong for me. I often say to Spring Fanboys that if they want to have one editor to decide for them they&#8217;d better switch to .Net : Microsoft does a better Job than VMWare  and C# is better than Java <img src='http://www.next-presso.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . The advantage of Java eco-system is the community. So the Goal is to use the force of this community and bring open solutions to them.</em></p>
<p><em>Creating a big and good CDI eco-system will create value, bring real competition to the Java stack and create more business for Red Hat (AS license or support on main CDI components)</em></p>
<h2><em>Why CDI is so special</em></h2>
<p><em>CDI is not a spec among others. It&#8217;s the long awaited cement in Java EE stack. It could have been an extension of EJB spec but it was clever to create it as a separate spec and allow it to deal with EJBs. CDI is the first Java EE spec that contains in its DNA a natural extension mechanism. And last but not least CDI is probably the first Java EE spec to be usable in its V 1.0 (perhaps with Jax-RS).</em></p>
<p><em>A common critic to Java EE is that it has a very long cycle between each iteration and that it delivers outdated specs. Another common critic is that it provides a bunch of specs that doesn&#8217;t work well together.</em></p>
<p><em>This second critic was addressed by Seam 2. Seam was a big help to make Java EE 5 easy to use, but as you know it was proprietary.</em></p>
<p><em>CDI address both critics : it has the potential to provide the same services than Seam 2  and it is a good way to extend Java EE between two versions.</em></p>
<p><em>To sum up CDI is a central spec for Java EE (it&#8217;s its spine) :</em></p>
<ol>
<li><em>CDI is the cement between main Java EE spec</em></li>
<li><em>CDI the &#8220;melting pot&#8221; engine for adding new spec in Java EE. First in a proprietary approach and then by standardization in next EE version.</em></li>
<li><em>For extension that can&#8217;t be integrated in Java EE (like Seam social) it&#8217;s an elegant and seamless way to enhance the stack.</em></li>
</ol>
<h2><em>Past and present Errors</em></h2>
<h3>Error 1 : a bad name</h3>
<p><em>The first error in my opinion was to call it &#8220;Seam 3&#8243;. This bad choice triggered these pb :</em></p>
<ol>
<li><em>giving the impression that Seam 3 was an evolution of Seam 2. Which it is not.</em></li>
<li><em>creating the obligation to build a compatibility module from Seam 2 to Seam 3. This module is costing a lot of energy to the community and will only produce deception</em></li>
<li><em>Hiding the CDI nature of these extensions by calling them after  the name of an &#8220;old&#8221; JBoss proprietary framework</em></li>
</ol>
<div><em>What is done is done, Seam 3 is now among us, but the legacy is heavy&#8230;</em></div>
<h3>Error 2 : pretending Spring doesn&#8217;t exist</h3>
<p><em> Ignore existing market is a big mistake. Spring is well implanted and doing as if it wasn&#8217;t there is wrong. I think a better way would be to adopt the following philosophy :  &#8220;We know that you had to use this proprietary framework because there was nothing else but now we will show you something new, better, but <strong>that can use your Spring </strong>eco-system&#8221;. Yes the <strong>Spring bridge</strong> is not an option, It&#8217;s a priority. You have to help people switching by giving them a way to use their Spring components so they don&#8217;t feel lost and can use Spring module until Seam has the equivalent functionality.</em></p>
<p><em>Spring team is totally ignoring Java EE. Their ref doc is full of J2EE, EJB 2.1 and nothing about CDI or EJB 3. We have to show the Java community that we&#8217;re more open than them and care about people using Spring to come, see and perhaps adopt the standard. The idea is to behave at the opposite of the locking VMWare strategy by being opened and avoiding trolls and </em><em>misinformation like they do.</em></p>
<h3><em>Error 3  : eating our own dog food with Seam university.</em></h3>
<p><em>Don&#8217;t get me wrong : the idea of Seam University website is great. What is not so great is to use our tool to create the site. We don&#8217;t have time to build something neat, so it&#8217;ll be crappy and we&#8217;ll lost time on it.  Result : bad impression and time wasted. Other Framework don&#8217;t use themselves to create their website, they use standard tools. We should do the same for the Seam website. People are waiting for simple demo and example not a big steam machine like the Seam Wiki is today.</em></p>
<h3><em>Error 4 : mix internal functioning with façade functioning of the project</em></h3>
<p><em>Having Seam module created near their mother project (Hibernate, Resteasy&#8230;) is not a bad idea. The bad idea is to make them disappear from the Seam stack. You can have CDI-persistence (note I didn&#8217;t wrote CDI-Hibernate) driven by Hibernate project , but it should be visible in both  Seam stack and hibernate.  Because One can discover it while using Hibernate or while looking for a persistent CDI extension.</em></p>
<h3><em>Error 5 : giving the impression that those modules will have adherence to Jboss implementation</em></h3>
<p><em>Calling the module Hibernate-CDI or RestEasy-CDI is a big step back (even if you keep portability). Tomorrow developers on WAS or Glassfish won&#8217;t choose them because it doesn&#8217;t support JPA but hibernate (it&#8217;s in the name). A non sense after all the effort that Jboss has injected in working on standard.</em></p>
<p><em>It&#8217;s important that Seam appear as collection of CDI extension that allow to leverage standard Java EE. Having them under one umbrella allow Red Hat to sell optional support for them if people want to use them on WAS, Glassfish, Tomcat or Resin.</em></p>
<h3><em>What should Seam 3 be (according to me) </em></h3>
<p><em>Seam should be turned to the community. I don&#8217;t know if Red Hat would be ok to do that but the core project should be outside of JBoss and community driven. It would be the best solution to gather our effort with those of CDI Source, Codi, Caucho and others.</em></p>
<p><em>Seam 3 should run on all CDI implementation. That&#8217;s a priority (today, Solder doesn&#8217;t work on Candi, I didn&#8217;t tested on Open WebBeans but I guess there are issues).</em></p>
<p><em>Seam should provide light modules with good documentation and example. I mention that because i have he impression that Solder is becoming a kind of trash can. It&#8217;s not good. On the other way the split between persistence and transaction was a good move in my opinion</em></p>
<p><em>Seam should have a clear roadmap and timeline. We have to communicate, communicate and communicate. Don&#8217;t forget that we have to convince people using an equivalent solution. We must show why we are better and that we have a clear Goal.</em></p>
<p><em>Thanks for your time reading my long mail. I hope it&#8217;ll be useful and I&#8217;m ready to contribute to these orientation.</em></p>
<p><em>regards,</em></p>
<p><em>Antoine</em></p>
<p><strong>UPDATE : </strong>Shane Bryzak project leader on Seam 3 <a href="http://in.relation.to/Bloggers/SeamNextUpdate" target="_blank">posted an update</a> this morning, to explain there is something in preparation around Seam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2011/09/please-jboss-dont-let-cdi-become-the-betamax-of-java-by-destroying-seam-3/feed/</wfw:commentRss>
		<slash:comments>11049</slash:comments>
		</item>
		<item>
		<title>Synchronisation automatique de l&#8217;agenda et des contacts entre Google, le Mac et l&#8217;iPhone</title>
		<link>http://www.next-presso.com/2009/08/synchronisation-automatique-de-lagenda-et-des-contacts-entre-google-le-mac-et-liphone/</link>
		<comments>http://www.next-presso.com/2009/08/synchronisation-automatique-de-lagenda-et-des-contacts-entre-google-le-mac-et-liphone/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 03:57:38 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=297</guid>
		<description><![CDATA[<p>Voici un petit tutoriel sur la mise en œuvre de la synchronisation entre les applications Google Calendar et contacts, votre Mac et votre iPhone, que vous utilisiez la version standard des applis Google ou la version Google Apps. </p> Résultats et limitations <p>A l&#8217;issue de cette mise en place, vous pourrez modifier vos agendas et [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit tutoriel sur la mise en œuvre de la synchronisation entre les applications Google Calendar et contacts, votre Mac et votre iPhone, que vous utilisiez la version standard des applis Google ou la version Google Apps.<br />
<span id="more-297"></span></p>
<h3>Résultats et limitations</h3>
<p>A l&#8217;issue de cette mise en place, vous pourrez modifier vos agendas et contacts sur l&#8217;un des trois environnements et voir vos modifications appliquées automatiquement sur les deux autres.</p>
<p>La solution a malheureusement 3 limitations  qui devraient disparaître avec le temps :</p>
<ul>
<li>les listes de tâches ne peuvent pas être pris en charge par ce système</li>
<li>Pour envoyer un rendez-vous à des invités pour une réunion; vous devrez utiliser Google Calendar, les deux autres plate-forme provoqueront un bug si vous tenter de le faire</li>
<li>Vous ne pouvez pas synchroniser les groupes de contacts</li>
</ul>
<h3>Avant de commencer</h3>
<p>Ce n&#8217;est pas obligatoire mais avant de commencer, je vous conseil de désactiver la synchronisation d&#8217;iCal et du carnet d&#8217;adresse avec votre iPhone via iTunes à moins que vous n&#8217;aimiez avoir votre agenda et carnet d&#8217;adresse en double .Vous pouvez le faire en ayant connecté votre iPhone à votre Mac et en entrant dans les paramètres de synchronisation de l&#8217;iPhone.</p>
<p>Et n&#8217;oubliez pas les sauvegardes.</p>
<h3>Connexion entre iCal et Google Calendar</h3>
<p>Pour ajouter votre agenda Google dans iCal, rien de plus simple. Dans iCal allez dans les préférences sur l&#8217;onglet &#8220;compte&#8221;. Ajoutez un compte</p>
<p><img class="aligncenter size-medium wp-image-312" title="Nouveau compte iCal" src="http://www.next-presso.fr/wp-content/uploads/2009/07/Image-1-300x197.png" alt="Nouveau compte iCal" width="300" height="197" /></p>
<p>Saisissez votre login et mot de passe Google. Si votre agenda est dans Google Apps saisissez le login complet avec votre nom de domaine.</p>
<p>Dans &#8220;options du serveur&#8221;, saisissez l&#8217;url de votre calendrier Google semblable à celle-ci : &#8220;<strong>https://www.google.com/calendar/dav/<em>votrelogin</em>/user</strong>&#8220;. Si vous utilisez Google Apps n&#8217;oubliez pas de mettre le domaine également.</p>
<p>Après avoir validé vous obtenez une nouvelle entrée dans la liste des comptes :</p>
<p><img class="aligncenter size-medium wp-image-311" title="Listes de comptes" src="http://www.next-presso.fr/wp-content/uploads/2009/07/Image-5-300x248.png" alt="Listes de comptes" width="300" height="248" />Si vous avez accès à d&#8217;autres agendas à partir de ce compte Google calendar, vous pouvez utiliser l&#8217;onglet délégation pour ajouter ces agendas supplémentaire à iCal.</p>
<p>Vous pouvez désormais utiliser votre agenda aussi bien sous iCal que sous Google. Si vous disposez d&#8217;un ancien agenda sous iCal vous pouvez l&#8217;exporter au format ics (menu fichier/exporter) pour l&#8217;importer das votre nouvel agenda via iCal et le menu Fichier/Importer. Les modifications seront répliquées vers Google Calendar.</p>
<h3>Préparation de votre compte Google Apps pour l&#8217;iPhone</h3>
<p>Cette étape est nécessaire si vous utilisez un compte Google Apps (pour un compte Goggle classique vous pouvez passer au paragraphe suivant). Vous devez configurer votre compte Google Apps pour supporter le push  vers l&#8217;iPhone. Pour cela vous devez vous rendre dans le tableau de bord de votre compte Google Apps (en tant qu&#8217;administrateur Google Apps) et passer en mode &#8220;nouvelle génération&#8221; du panneau de configuration dans les paramètres du Domaine.</p>
<p><img class="aligncenter size-medium wp-image-314" title="Panneau de configuration Google Apps" src="http://www.next-presso.fr/wp-content/uploads/2009/07/Image-2-300x129.png" alt="Panneau de configuration Google Apps" width="300" height="129" />Cette action basculera votre interface d&#8217;administration en anglais (mais pas le tableau de bord et les applications de vos utilisateurs qui devrait rester en Français).</p>
<p>L&#8217;option permet d&#8217;accéder aux paramètre de configuration des mobiles. Vous pouvez désormais accéder au menu &#8220;Service Settings / Mobile&#8221;. Dans cette page cochez &#8220;Enable Google Sync&#8221; et validez pour pouvoir configurer vos iPhone afin qu&#8217;ils se synchronisent avec Calendar et Contact.</p>
<h3>Configuration de l&#8217;iPhone</h3>
<p>Les manipulations suivantes vont écraser vos données d&#8217;agenda sur votre iPhone, donc avant tout <strong>faites une sauvegarde</strong>.</p>
<p>Nous allons un créer un compte pour exploiter le service Google Sync qui se comporte du point de vue de l&#8217;iPhone comme un serveur Exchange. Bien que nous créions un compte mail iPhone, celui-ci ne pourra pas servir à récupérer vos mails Google pour le moment : le service Google Sync ne supporte pour l&#8217;instant que l&#8217;agenda et les contacts. Pour la messagerie, on devra créer un autre compte classique dans l&#8217;iPhone (soit Gmail, soit imap3 pour Google Apps).</p>
<p>Rendez-vous dans la configuration de l&#8217;iPhone dans la rubrique &#8220;Mails, Contacts, Calendrier&#8221; et ajoutez un nouveau compte en sélectionnant &#8220;Ajouter un compte&#8221;.</p>
<p><img class="aligncenter size-medium wp-image-318" title="choix de compte" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0332-200x300.PNG" alt="choix de compte" width="200" height="300" /></p>
<p>Choisissez Microsoft Exchange comme type de compte. Vous arrivez sur le formulaire suivant :</p>
<p><img class="aligncenter size-medium wp-image-319" title="Config 1" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0333-200x300.PNG" alt="Config 1" width="200" height="300" /></p>
<p>Saisissez les informations de votre compte Google. Le nom d&#8217;utilisateur doit inclure votre domaine si vous configurez votre iPhone pour Google Apps. Une fois vos paramètres saisis cliquez sur &#8220;Suivant&#8221;. L&#8217;iPhone part dans une vérification (pouvant durer plusieurs minutes) du compte &#8220;Exchange&#8221;. A l&#8217;issue de cette étape vous serez probablement invité à saisir l&#8217;adresse du serveur &#8220;Exchange&#8221;. Il s&#8217;agit de &#8220;m.google.com&#8221; pour ce qui nous concerne. Saisissez l&#8217;adresse et tapez sur &#8220;suivant&#8221;</p>
<p><img class="aligncenter size-medium wp-image-321" title="config 2" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0335-200x300.PNG" alt="config 2" width="200" height="300" /></p>
<p>Le dernier écran vous permet de choisir les éléments à synchroniser. Désactivez &#8220;Courrier&#8221; (sinon le compte ne fonctionnera pas) et contacts (pour l&#8217;instant. nous l&#8217;activerons plus tard si vous le souhaitez dans la suite du tutoriel)</p>
<p><img class="aligncenter size-medium wp-image-322" title="config 3" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0336-200x300.PNG" alt="config 3" width="200" height="300" /></p>
<p>Après avoir choisi &#8220;terminé&#8221; vous avez activé la synchronisation entre votre agenda Google et votre iPhone. Si vous disposez de plusieurs agendas dans votre compte Google, vous pouvez maintenant choisir précisément quels agenda synchroniser avec votre iPhone.</p>
<h3>Choix des Agendas délégués à synchroniser</h3>
<p>A partir de l&#8217;OS 3.0 de l&#8217;iPhone, vous pouvez synchroniser jusqu&#8217;à 25 agendas avec votre joujou. Pour choisir les agendas Google que vous souhaitez synchroniser pour un compte Google standard, rendez-vous avec votre iPhone sur http://m.google.com/sync. Si vous êtes en Français, vous allez être accueilli par une page disant que votre matériel n&#8217;est pas compatible.  Cliquez sur &#8220;changer de langue&#8221; en bas de l&#8217;écran pour passer en anglais, et magie&#8230; votre appareil est maintenant compatible. Il ne reste plus qu&#8217;à vous identifier.</p>
<p><img class="aligncenter size-medium wp-image-325" title="Google Sync" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0337-200x300.PNG" alt="Google Sync" width="200" height="300" /></p>
<p>Si vous configurez un compte Google Apps, vous devrez d&#8217;abord configurer votre domaine sur http://m.google.com ou via <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284815942&amp;mt=8" target="_blank">l&#8217;application gratuite Google</a> pour l&#8217;iPhone, puis passer votre interface en anglais également. Votre interface s&#8217;enrichit de nouvelles icônes dont &#8220;sync&#8221; :</p>
<p><img class="aligncenter size-medium wp-image-326" title="Panneau Google Apps" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0338-200x300.PNG" alt="Panneau Google Apps" width="200" height="300" /></p>
<p>Cliquez dessus, vous arrivez sur un écran vous invitant à vous identifier (comme pour le compte Gmail standard). Après vous être identifié, vous arrivez sur la liste des appareils à synchroniser. Sélectionnez l&#8217;appareil. Il ne vous reste plus qu&#8217;à choisir les agendas que vous souhaitez synchroniser.</p>
<p><img class="aligncenter size-medium wp-image-327" title="choix des calendriers" src="http://www.next-presso.fr/wp-content/uploads/2009/07/IMG_0340-200x300.PNG" alt="choix des calendriers" width="200" height="300" /></p>
<p>Et voilà.</p>
<h3>Et les contacts</h3>
<p>La synchronisation des contacts entre Google et l&#8217;iPhone est impeccable. Il suffit de retourner dans les préférences du compte Exchange, créé précédemment sur l&#8217;iPhone et d&#8217;ajouter l&#8217;option de synchronisation des contacts. L&#8217;activation de cette option va effacer les contacts existants sur votre iPhone donc assurez vous avant de le faire que tous vos contacts sont bien dans le carnet d&#8217;adresse sur votre Mac ou dans Google contact.</p>
<p>Le point un peu délicat, c&#8217;est la synchro entre le carnet d&#8217;adresses du Mac et Google. Cette synchronisation va s&#8217;opérer avec l&#8217;application iSync de MacOS X. Donc la première étape est de lancer iSync (dans le dossier Applications) et de le configurer (via les préférences) pour afficher l&#8217;icône de synchronisation dans la barre des menus :</p>
<p><img class="aligncenter size-medium wp-image-329" title="configuration iSync" src="http://www.next-presso.fr/wp-content/uploads/2009/08/Image-1-300x222.png" alt="configuration iSync" width="300" height="222" /></p>
<p>Après cela, vous pouvez fermer iSync et entrer dans les préférences du carnet d&#8217;adresses. Sur l&#8217;onglet général vous allez cocher la synchronisation avec Google et paramétrer votre compte Gmail ou Google apps comme ci-dessous :</p>
<p><img class="aligncenter size-medium wp-image-330" title="Préférences Carnet d'adresses" src="http://www.next-presso.fr/wp-content/uploads/2009/08/Image-4-272x300.png" alt="Préférences Carnet d'adresses" width="272" height="300" />après avoir valider ces préférences, on devrait en principe pouvoir synchroniser avec iSync via la barre de menu et le choix &#8220;synchroniser&#8221;, cependant, le module de synchronisation Google est mal configuré, il est en mode &#8220;app&#8221; et ne peut pas déclencher la synchronisation d&#8217;iSync. La solution est de la passer en mode serveur.</p>
<p>Ouvrez une fenêtre Terminal et tapez la commande suivante :</p>
<pre><strong>sudo defaults write /System/Library/PrivateFrameworks/GoogleContactSync.framework/Resources/ClientDescription Type 'server'</strong></pre>
<p>Le système vous demande votre mot de passe (vous devez avoir les droits d&#8217;administrateurs sur le Mac) puis effectue la modification. Vous devez ensuite rétablir les droits que votre commande vient de modifier en tapant la commande suivante:</p>
<pre><strong>sudo chmod 644 /System/Library/PrivateFrameworks/GoogleContactSync.framework/Resources/ClientDescription.plist
</strong></pre>
<p>(Merci à <a href="http://blog.markojung.net/2009/02/sync-everything-with-google/" target="_blank">Marco Jung</a> pour cette solution plus élégante que d&#8217;activer la synchronisation Exchange)</p>
<h3>Lancement automatique d&#8217;iSync</h3>
<p>iSync ne permet pas d&#8217;automatiser la synchronisation : vous devez la lancer à la main en cliquant sur &#8220;synchroniser&#8221;. Si vous souhaitez automatiser cette tâche, il suffit de rajouter une entrée dans la crontab de votre Mac.</p>
<p>Pour ce faire, lancez un terminal puis la commande <strong>crontab -e</strong></p>
<p>Cette commande lancée, vous entrez dans le monde merveilleux de vi. Pour entrer en mode édition tapez <strong>i</strong>, la mention &#8220;INSERT&#8221; devrait apparaître en bas de la fenêtre.</p>
<p>Saisissez ensuite l&#8217;entrée suivante :</p>
<pre><strong>30 * * * * osascript -e 'tell application "iSync" to synchronize'</strong></pre>
<p>qui lancera iSync toute les heures à la demi. Pour sauvegarder appuez sur la touche escape puis saisissez <strong>:wq</strong> et validez pour ecrire  les modifications et sortir de vi.</p>
<p>Voilà, votre synchro est fin prête.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/08/synchronisation-automatique-de-lagenda-et-des-contacts-entre-google-le-mac-et-liphone/feed/</wfw:commentRss>
		<slash:comments>13442</slash:comments>
		</item>
		<item>
		<title>Une semaine avec l&#8217;e-reader Sony PRS-505</title>
		<link>http://www.next-presso.com/2009/07/une-semaine-avec-le-reader-sony-prs-505/</link>
		<comments>http://www.next-presso.com/2009/07/une-semaine-avec-le-reader-sony-prs-505/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 16:49:22 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Test]]></category>
		<category><![CDATA[e-book]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=287</guid>
		<description><![CDATA[<p>Ça faisait des mois que je tournais autour de l&#8217;engin : un véritable lecteur d&#8217;e-book me permettant d&#8217;embarquer toutes les documentations techniques dont j&#8217;ai besoin, ainsi que les nombreux documents spécifique à chaque projet. Le fait de pouvoir aussi embarquer des &#8220;vrais&#8221; livres à lire pour le plaisir constituait un plus important. Mais à chaque [...]]]></description>
			<content:encoded><![CDATA[<p>Ça faisait des mois que je tournais autour de l&#8217;engin : un véritable lecteur d&#8217;e-book me permettant d&#8217;embarquer toutes les documentations techniques dont j&#8217;ai besoin, ainsi que les nombreux documents spécifique à chaque projet. Le fait de pouvoir aussi embarquer des &#8220;vrais&#8221; livres à lire pour le plaisir constituait un plus important. Mais à chaque fois, devant le prix de la bébête et le doute sur le réel besoin que je pourrais en avoir, je repoussais l&#8217;acquisition de l&#8217;engin. Jusqu&#8217;à ce que, à l&#8217;occasion d&#8217;une promo la semaine dernière, je craque sur le bidule. Voici mon court retour d&#8217;expérience sur le sujet.</p>
<p><span id="more-287"></span></p>
<h3><img class="alignright" title="PRS-505" src="http://sp.sony-europe.com/media/58/28951" alt="" width="320" height="193" />A quoi ça me sert ?</h3>
<p>J&#8217;ai un certain nombre de PDF de &#8220;chevet&#8221; pour mon travail, que ce soit de la documentation de référence comme celle de Spring, d&#8217;Hibernate ou de Seam ou du livre en version électronique acheté sur Internet (Seam in Action, Open-Source ESB in action). Bref tout ce petit monde représente quelques kilos et deux ou trois forêts abattues une fois imprimés et là avec ce petit gadget de 260 g, j&#8217;embarque tout le monde. Idem pour les documents de mes projets convertis en RTF ou PDF (on peut passer en mode paysage pour regarder des présentations). Mais ce n&#8217;est pas tout, l&#8217;engin est livré avec une carte pleine de classiques de la littérature de Balzac à Zola en passant par Conan Doyle, ce qui me permet de joindre l&#8217;agréable à l&#8217;utile.</p>
<h3>L&#8217;encre sympathique</h3>
<p>Franchement l&#8217;e-ink est un procédé vraiment bluffant. On a l&#8217;impression de lire une page de papier légèrement glacé. La vision n&#8217;est pas plus altérée que sur du papier en changeant l&#8217;angle de la &#8220;page&#8221;, aucun scintillement ni aucune fatigue oculaire ne se manifeste après plusieurs heures de lecture. En fait, l&#8217;engin est la plupart du temps passif : ce n&#8217;est que lors d&#8217;un changement de page qu&#8217;un peu d&#8217;énergie est consommée pour effacer l&#8217;ancien contenu et en afficher un nouveau (un peu dans le genre d&#8217;un Télécran pour les plus vieux d&#8217;entre vous <img src='http://www.next-presso.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). Ce qui permet à l&#8217;engin d&#8217;assurer une autonomie d&#8217;environ 8000 pages avant de devoir être rechargé.</p>
<p>L&#8217;écran n&#8217;est ni rétro-éclairé, ni tactile (bien qu&#8217;il existe des readers plus chers supportant ces fonctionnalités) ce qui donne au lecteur le même niveau d&#8217;expérience visuel qu&#8217;avec un vrai livre (pas de lecture sans lumière par exemple).</p>
<h3>Capacité et formats supportés</h3>
<p>Au chapitre de la capacité pas de soucis à avoir, l&#8217;engin dispose en standard de 192 Mo auxquels peuvent s&#8217;ajouter une carte Memory Stick Pro Duo et une carte SD HC, soit plus de 32 Go possibles. A 1 ou 2 mo le livre, ça  permet d&#8217;embarquer quelques rayons de bibliothèque&#8230;</p>
<p>Sinon le lecteur supporte à peu près tous les formats e-book actuels: EPUB eBook, BBeB eBook, Adobe PDF (les 3 avec ou sans DRM) Microsoft Word, TXT, RTF. Au chapitre des PDF que j&#8217;ai pas mal testé, on dispose de deux niveaux de zoom qui permettent de lire un format A4 sans problème. On déplorera cependant une mise en page un peu éclatée lorsque l&#8217;on zoom dans ce genre de format. J&#8217;ai également pu tester le format EPUB sans DRM, la lecture est agréable et le texte reste bien mis en page avec le zoom.</p>
<p>Dans la série &#8220;trucs pas utiles&#8221; (pour moi en tout cas), le lecteur supporte les formats audio MP3 et AAC, ainsi que les formats d&#8217;image jpeg, gif, png et bmp (ce qui avec un affichage en noir et blanc est assez peu intéressant).</p>
<h3>Autour du reader</h3>
<p>Le lecteur de Sony est fourni avec le logiciel Windows e-book library qui permet de gérer sa bibliothèque, la mise à jour du firmware du lecteur et la gestion des fichiers DRM. Une version Mac du logiciel devrait voir le jour cet été comme indiqué <a href="http://www.mobileread.com/forums/showthread.php?t=50418" target="_blank">ici</a>. Sinon on pourra toujours utiliser le très bon logiciel <a href="http://calibre.kovidgoyal.net/" target="_blank">Calibre</a> qui fonctionne également sous Linux et qui vous permettra de gérer votre bibliothèque électronique bien plus efficacement.</p>
<h3>Ce qui manque</h3>
<p>On déplorera l&#8217;absence total d&#8217;un système de recherche, ce qui est dommage pour un dispositif pouvant embarquer autant de livres. Pour les personnes ayant des problèmes de vue, il aurait été intéressant de pouvoir inverser le contraste des caractères (blanc sur fond noir). Enfin, j&#8217;aurais aimé pouvoir télécharger les articles de mes blogs préférés pour pouvoir les lire tranquillement dans les transports, pour l&#8217;instant ça ne semble pas hyper simple de le faire. Tant pis, je continuerai à le faire depuis mon iPhone.</p>
<h3>Sur le front des e-books payant</h3>
<p>A part quelques exceptions plutôt du côté de la littérature technique (Manning, O&#8217;Reilly, Apress) et plutôt au format PDF qui n&#8217;est certainement pas le meilleur pour e-book, on est encore loin d&#8217;avoir une offre crédible en la matière. La Fnac qui fait la promotion des livres électroniques présente un catalogue anémique (aucune nouveauté) à des prix scandaleux. Bref encore une révolution électronique absolument pas gérée par les acteurs du marché. Comme quoi aucun enseignement n&#8217;a été tiré de la nullité des majors du disque&#8230; Espérons que les éditeurs ou les distributeurs prendront le temps d&#8217;organiser ça de façon un peu plus intelligente comme ça à l&#8217;air d&#8217;être le cas dans le monde anglophone.</p>
<h3>Sur le front des e-books gratuits</h3>
<p>En revanche là, il y de quoi faire . Pour peu que vous aimiez les grands classiques, vous pouvez vous constituer une bibliothèque de tous les grands auteurs français et anglophone pour 0 €. Evidemment, ce n&#8217;est pas là que vous allez trouver le roman de l&#8217;été ou le dernier Harry Poter (pour ma part ça ne me dérange pas trop), mais pour du Dickens (même en VF), du Jules Vernes ou du Maupassant, vous trouverez votre bonheur.</p>
<p>Conclusion : si le marché de l&#8217;e-book grand public n&#8217;est pas encore ouvert  un e-book reader est d&#8217;ors et déjà très intéressant pour embarquer de la littérature technique, de la documentation Home Made, des livres un peu parallèles ou de la littérature ayant dépassée la DLC des droits d&#8217;auteurs <img src='http://www.next-presso.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<h3>Quelques liens pour conclure</h3>
<p>Pour bien démarrer sur le sujet voici quelques liens permettant de récupérer des e-books ou des informations sur l&#8217;univers de la lecture électronique.</p>
<p>Le projet Gutenberg ( une bibliothèque bien fournie de livres gratuits en anglais et français) : <a href="http://www.gutenberg.org/wiki/Main_Page" target="_blank">http://www.gutenberg.org/wiki/Main_Page</a></p>
<div id=":6z">
<div><span></p>
<div style="overflow: hidden;">The Pragamatic Bookshelf (Livres informatique payants dans d&#8217;autre formats que PDF) : <a href="http://www.pragprog.com/" target="_blank">http://www.pragprog.com/</a></div>
<div style="overflow: hidden;">FeedBooks (de la littérature gratuite ancienne et récente mais pas &#8220;main stream&#8221;) :<a href="http://www.feedbooks.com/" target="_blank"> http://www.feedbooks.com/</a></div>
<div style="overflow: hidden;">Ubibooks (livres payants en français entre autres) :<a href="http://www.ubibooks.com/shop/toplist.aspx?top=sales" target="_blank"> http://www.ubibooks.com/shop/toplist.aspx?top=sales</a></div>
<div style="overflow: hidden;">Smashwords (livres gratuits d&#8217;auteurs indépendants anglophones) :<a href="http://www.smashwords.com/" target="_blank"> http://www.smashwords.com/</a></div>
<div style="overflow: hidden;">Le Blog mobile read pour se tenir au courant des nouveautés sur le sujet :<a href="http://www.mobileread.com/forums/showthread.php?t=3968" target="_blank"> http://mobileread.com/forums/showthread.php?t=3968</a></div>
<div style="overflow: hidden;"><span><span>Le Tiers Livre (Blog d&#8217;information en Français de haute qualité) : </span></span><a href="http://www.tierslivre.net" target="_blank">http://www.tierslivre.net</a></div>
<div style="overflow: hidden;">Le Blog Actualitté (du même tonneau): <a href="http://www.actualitte.com/" target="_blank">http://www.actualitte.com/</a></div>
<div style="overflow: hidden;">Merci à Lucas pour les liens.</div>
<div style="overflow: hidden;">Vos retours sur le sujet seront les bienvenus</div>
<p></span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/07/une-semaine-avec-le-reader-sony-prs-505/feed/</wfw:commentRss>
		<slash:comments>13423</slash:comments>
		</item>
		<item>
		<title>WTP + M2eclipse + Seam : Maven works !</title>
		<link>http://www.next-presso.com/2009/06/wtp-m2eclipse-seam-cest-bien-maven/</link>
		<comments>http://www.next-presso.com/2009/06/wtp-m2eclipse-seam-cest-bien-maven/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 16:19:10 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Outil]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=167</guid>
		<description><![CDATA[<p> Lucky me ! It&#8217;s only now that I need that one of my Seam project works with Eclipse WTP and Maven. Lucky because a few months ago, that tutorial would have been impossible to write. This article will show how to adapt a JEE5 project in order to make it usable with Eclipse WTP [...]]]></description>
			<content:encoded><![CDATA[<p>
Lucky me ! It&#8217;s only now that I need that one of my Seam project works with Eclipse WTP and Maven. Lucky because a few months ago, that tutorial would have been impossible to write. This article will show how to adapt a JEE5 project in order to make it usable with Eclipse WTP and Maven.
</p>
<p><span id="more-167"></span></p>
<h3>Starting the tutorial</h3>
<p>We start this tutorial with 3 Eclipse projects : an EAR, an EJB and a WAR project. These projects are showed in the following picture</p>
<p style="text-align: center;"><img class="size-full wp-image-204" title="figure1" src="http://www.next-presso.fr/wp-content/uploads/2009/06/figure1.png" alt="figure 1 : les trois projets sous Eclipse et WTP" width="235" height="168" /></p>
<p>
The 3 projects are linked with the Eclipse configuration files which contains informations about EAR, EJB and WAR projects. In this article the projects are based on JBoss Seam, but all the tutorial could be used in any project type.
</p>
<p>On the disk, the 3 projects are 3 directories in the workspace folders. Useless to say it&#8217;s not the Maven way to organize projects.</p>
<h4>Creation of the parent Project</h4>
<p>First step, we create a Maven parent project which will contain our EAR, EJB and WAR projects (that Maven call modules). In this parent project we can define global parameters for the modules. To create this project click on &#8220;File/New/Porject&#8230;&#8221;</p>
<p style="text-align: center;"><img class="size-medium wp-image-212 aligncenter" title="ChooseMavenProject" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-11-300x285.png" alt="ChooseMavenProject" width="300" height="285" /></p>
<p>Choose Maven Project in the Maven category and click on Next, this opens the &#8220;New Maven Project&#8221; wizard :</p>
<p style="text-align: center;"><img class="size-medium wp-image-213 aligncenter" title="New Maven Project 1" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-2-300x298.png" alt="New Maven Project 1" width="300" height="298" /></p>
<p>You can go to the next step after checking that &#8220;Create a simple project&#8221; is unchecked.</p>
<p style="text-align: center;"><img class="size-medium wp-image-214 aligncenter" title="Choose Archetype" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-3-300x254.png" alt="Choose Archetype" width="300" height="254" /></p>
<p>In this dialog box you have to choose an archetype (a template for your project). In Catalog choose Nexus Indexer which brings a richer list than the internal default one. In the filter field enter &#8220;pom&#8221; to reach the &#8220;pom-root&#8221; archetype&#8221;. Select it and click on &#8220;Next&#8221;.</p>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-217" title="Maven Project Name" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-4-300x252.png" alt="Maven Project Name" width="300" height="252" /></p>
<p>In this last dialog box you choose the project name. click on &#8220;Finish&#8221;. Now you have a new project in your workspace. In my case it&#8217;s &#8220;pfm77-parent&#8221;</p>
<h4>Creating the Maven modules</h4>
<p>In the same way we created parent project, we&#8217;re going to create the children projects or modules. click on &#8220;File/New/Project&#8230;&#8221;</p>
<p style="text-align: center;"><img class="size-medium wp-image-211 aligncenter" title="Choose Maven Module" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-1-300x283.png" alt="Choose Maven Module" width="300" height="283" /></p>
<p>Choose &#8220;Maven Module&#8221; then click on &#8220;Next&#8221;. A new wizard opens :</p>
<p style="text-align: center;"><img class="size-medium wp-image-219 aligncenter" title="create ear module" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-5-300x204.png" alt="create ear module" width="300" height="204" /></p>
<p>Enter the name for the EAR module and the name of the parent project then click on &#8220;Next.</p>
<p style="text-align: center;"><img class="size-medium wp-image-220 aligncenter" title="Archetype EAR" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-6-300x253.png" alt="Archetype EAR" width="300" height="253" /></p>
<p>Don&#8217;t forget to choose &#8220;Nexus Indexer&#8221; in the catalog, enter &#8220;ear&#8221; in the filter field. Choose the &#8220;ear-jee5&#8243; archetype then click on &#8220;finish&#8221;</p>
<p>To create the EJB and WAR modules, we&#8217;ll use the same wizard choosing archetypes &#8220;ejb-jee5&#8243; and &#8220;webapp-jee5&#8243;.</p>
<p>After all those wizards and clicks, we have 4 new projects in the workspace :</p>
<p style="text-align: center;"><img class="size-medium wp-image-221 aligncenter" title="projets maven créés" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-7-300x285.png" alt="projets maven créés" width="300" height="285" /></p>
<p />
<p>The physical structure of these Eclipse projects are different. If you look on your disk, you&#8217;ll see a Maven hierarchy (a main project and modules in in the folder of the main project). It&#8217;s one of the m2eclipse benefits : supporting sub-projects in Eclipse. But it&#8217;s not the only advantage of the plugin.</p>
<h4>Benefits of m2eclipse</h4>
<h5>1) Managing sub-projects in Eclipse</h5>
<p>As we saw, you can have a Maven hierarchy that m2eclipse make look likes different Eclipse project in the IDE. This also works when you import existing maven project in the worskpace from the disk or versioning system.</p>
<h5>2) Managing Maven dependencies</h5>
<p>The plugin use the pom.xml files to download and add jar files in your project.</p>
<h5>3) Maven build in Eclipse</h5>
<p>The least we can wait for this plugin. A m2eclipse project has 2 builders : the standard Eclipse one and the maven one.</p>
<h5>4) A nice user interface to manage pom.xml files</h5>
<p>You can use this interface to look for dependencies or exclude a sub-dependency easily. It was rather bugy in the past but with version 0.99 of m2eclipse it starts to be very usefull.</p>
<h5>5) Automatic management of Eclipse projects configuration</h5>
<p>That&#8217;s an important benefit that is not very well documented on m2eclipse site. M2eclipse uses pom.xml information to generate and maintain Eclipse configuration files for the project. For instance the projects we just created are not Eclipse project. They were created from Maven Archetypes that have nothing to do with Eclipse. So the eclipse configuration files of these new project (.classpath, .project files and .settings folder) were generated by m2eclipse from the pom files. When pom files are modified, m2eclipse will change Eclipse configuration files automatically. For instance, let&#8217;s have a look at the Facets of the EJB project (right-click on the project, and choose properties/facets) :</p>
<p style="text-align: center;"><img class="size-full wp-image-222 aligncenter" title="project facets" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-9.png" alt="project facets" width="753" height="308" /></p>
<p>M2eclipse have added this EJB3 facets by analyzing the pom.xml file. So if you change Eclipse configuration on the project there can be some chance that you touch a configuration driven by m2eclipse. So take care of your modification. To be sure you won&#8217;t go battle wth m2eclipse in the configuration you should check the <a href="http://docs.codehaus.org/display/M2ECLIPSE/Integration+with+WTP" target="_blank">m2eclipse documentation</a>. This page show all the Maven parameters (with green checkboxes) that are used by m2eclipse to build and maintain Eclipse WTP configuration files.</p>
<p>To finish with this point, you&#8217;ll have to be extremely carrefull when you put those project under versioning system. The best solution is to ignore Eclipse configuration files and let m2eclipse do the job on the other systems (you&#8217;ll have to create local configuration on each IDE to configure information that are not in Maven files like deploying servers for instance).</p>
<h4>Copying Files</h4>
<p>Let&#8217;s go back to our tutorial : moving WTP projects to maven/WTP projects. The next step consist to copy files from our old WTP project to the newly created Maven/WTP projects. You can do this by dragging files from file system (Explorer, Finder, or whatever you use) to Eclipse using the &#8220;resources&#8221; perspective which is the more close to filesystem perspective. To keep it simple try to stick with the <a href="http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html" target="_blank">default Maven layout</a>, It will make pom files lighter.</p>
<ul>
<li style="list-style: none"></li>
<li>For the EAR module you&#8217;ll put  the content of META-INF in src/main/application/META-INF all the other files in te project will be  build from pom.xml</li>
<li>For the EJB module, all your classes should be put in src/main/java, resources files like properties or META-INF folder should be in src/main/resources.</li>
<li>For the WAR module you&#8217;ll use the same folders as EJB for classes and resources. The site files will be copied in src/main/webapp folder (be carefull and don&#8217;t take the WEB-INF/lib folder)</li>
</ul>
<p>
You should ignore Manifest files in all the project because they can cause runtime errors.</p>
<p>Now we have to deal with our pom files</p>
<h4>Pom pom pom pom</h4>
<p>It&#8217;s not a symphony but almost (sorry for that). The setting of our 4 pom.xml files will ask some patience (it&#8217;s the Maven feng-shui side) but we will get trough.</p>
<h4>Parent project</h4>
<p>I won&#8217;t detail all my pom.xml files content : I want to keep my readers till the end. Instead I&#8217;ll show you the result and comment the main part of each file</p>
<ul>
<li style="list-style: none"></li>
<li>Introduction : here I tell Maven that it is a pom project that drive construction of sub-projects (modules).</li>
<li>modules : here are the modules contained by this parent project.</li>
<li>properties : here I define variables that will be used in configuration of all the modules (libraries version for instance)</li>
<li>repositories : in this section I add Maven repositories used by my project. For me it&#8217;s JBoss repositories for Seam and java.net to get all Jee5 dependencies</li>
<li>dependencyManagement : In this part, I declare all the dependencies used by my modules. Declaring them here, I can set their version once for all.</li>
<li>build : in this final section I can set up compilation configuration once for all.</li>
</ul>
<p> </p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;cos&lt;/groupId&gt;
  &lt;artifactId&gt;pfm77-parent&lt;/artifactId&gt;
  &lt;packaging&gt;pom&lt;/packaging&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;pfm77-parent Multi Project&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;
  &lt;modules&gt;
    &lt;module&gt;pfm77-ear&lt;/module&gt;
    &lt;module&gt;pfm77-ejb&lt;/module&gt;
    &lt;module&gt;pfm77-war&lt;/module&gt;
  &lt;/modules&gt;

  &lt;properties&gt;
    &lt;seam.version&gt;2.0.3.CR1&lt;/seam.version&gt;
    &lt;jsf.version&gt;1.2_10&lt;/jsf.version&gt;
    &lt;richfaces.version&gt;3.2.1.GA&lt;/richfaces.version&gt;
  &lt;/properties&gt;

  &lt;repositories&gt;
    &lt;repository&gt;
      &lt;id&gt;jboss&lt;/id&gt;
      &lt;name&gt;JBoss Repository&lt;/name&gt;
      &lt;url&gt;http://repository.jboss.org/maven2&lt;/url&gt;
      &lt;snapshots&gt;
        &lt;enabled&gt;false&lt;/enabled&gt;
      &lt;/snapshots&gt;
    &lt;/repository&gt;
    &lt;repository&gt;
      &lt;id&gt;jboss-snapshots&lt;/id&gt;
      &lt;name&gt;JBoss Snapshot Repository&lt;/name&gt;
      &lt;url&gt;http://snapshots.jboss.org/maven2&lt;/url&gt;
      &lt;releases&gt;
        &lt;enabled&gt;false&lt;/enabled&gt;
      &lt;/releases&gt;
      &lt;snapshots&gt;
        &lt;enabled&gt;true&lt;/enabled&gt;
      &lt;/snapshots&gt;
    &lt;/repository&gt;
    &lt;repository&gt;
          &lt;id&gt;java.net1&lt;/id&gt;
          &lt;name&gt;Java.Net Maven1 Repository, hosts the javaee-api dependency&lt;/name&gt;
          &lt;url&gt;http://download.java.net/maven/1&lt;/url&gt;
          &lt;layout&gt;legacy&lt;/layout&gt;
      &lt;/repository&gt;
  &lt;/repositories&gt;

 &lt;dependencyManagement&gt;
 &lt;dependencies&gt;

  &lt;dependency&gt;
      &lt;groupId&gt;commons-beanutils&lt;/groupId&gt;
      &lt;artifactId&gt;commons-beanutils&lt;/artifactId&gt;
      &lt;version&gt;1.8.0&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
       &lt;/dependency&gt;
        &lt;dependency&gt;
      &lt;groupId&gt;org.ostermiller&lt;/groupId&gt;
      &lt;artifactId&gt;utils&lt;/artifactId&gt;
      &lt;version&gt;1.07.00&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;/dependencies&gt;
 &lt;/dependencyManagement&gt;

  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
        &lt;configuration&gt;
          &lt;source&gt;1.5&lt;/source&gt;
          &lt;target&gt;1.5&lt;/target&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;

    &lt;/plugins&gt;
  &lt;/build&gt;

&lt;/project&gt;
</pre>
<p></p>
<h4>EAR project</h4>
<p>In the pom file, we can get rid of compilation plug-in because we configured it in the parent project. But we&#8217;ll have to add all the depending jars and their version. The m2eclipse auto-completion tools are very usefull for this. Right-click on the project and choose &#8220;Maven/add Maven dependency&#8221;. The following dialog box opens  </p>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-252" title="Image 10" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-10-300x263.png" alt="Image 10" width="300" height="263" /></p>
<p>With this box you can search in Maven repositories the right jar and version for your project and add it the pom.xml file. With time some sub-depencies can appear in the project. You can exclude them by using the &#8220;Dependency graph&#8221; in pom editor. This view show a graph like this one : </p>
<p style="text-align: center;"><img class="size-full wp-image-253 aligncenter" title="dependency graph" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-111.png" alt="dependency graph" width="858" height="248" /></p>
<p>If yo want to exclude a jar you can do it via the context menu and choosing &#8220;Exclude Maven Artefact&#8230;&#8221; (wasn&#8217;t working in version 0.98 of m2eclipse). Now, back to our pom file of EAR module here are its content</p>
<ul>
<li>header : I specify that it&#8217;s an EAR module and I don&#8217;t forget to point to the Parent project</li>
<li>In the dependencies I don&#8217;t forget EJB and War modules</li>
<li>In the build section I add the Maven EAR plugin. In the configuration of the plugin I give the directory where to put the lib and ask Maven to generate my application.xml file</li>
<li>In the modules section of the plugin, I add my EJB and WAR modules that I defined at the beginning of the file as dependencies</li>
</ul>
<p></p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;parent&gt;
    &lt;artifactId&gt;pfm77-parent&lt;/artifactId&gt;
    &lt;groupId&gt;cos&lt;/groupId&gt;
    &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;/parent&gt;
  &lt;groupId&gt;cos&lt;/groupId&gt;
  &lt;artifactId&gt;pfm77-ear&lt;/artifactId&gt;
  &lt;packaging&gt;ear&lt;/packaging&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;pfm77-ear JEE5 Assembly&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;

  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;cos&lt;/groupId&gt;
      &lt;artifactId&gt;pfm77-ejb&lt;/artifactId&gt;
      &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
      &lt;type&gt;ejb&lt;/type&gt;
      &lt;scope&gt;compile&lt;/scope&gt;

    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;cos&lt;/groupId&gt;
      &lt;artifactId&gt;pfm77-war&lt;/artifactId&gt;
      &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
      &lt;type&gt;war&lt;/type&gt;
      &lt;scope&gt;compile&lt;/scope&gt;

    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
      &lt;artifactId&gt;jboss-seam&lt;/artifactId&gt;
      &lt;version&gt;${seam.version}&lt;/version&gt;
      &lt;type&gt;ejb&lt;/type&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
      &lt;exclusions&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;javax.el&lt;/groupId&gt;
          &lt;artifactId&gt;el-api&lt;/artifactId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;artifactId&gt;javassist&lt;/artifactId&gt;
          &lt;groupId&gt;javassist&lt;/groupId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;artifactId&gt;dom4j&lt;/artifactId&gt;
          &lt;groupId&gt;dom4j&lt;/groupId&gt;
        &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.ostermiller&lt;/groupId&gt;
      &lt;artifactId&gt;utils&lt;/artifactId&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.richfaces.framework&lt;/groupId&gt;
      &lt;artifactId&gt;richfaces-api&lt;/artifactId&gt;
      &lt;version&gt;${richfaces.version}&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
      &lt;exclusions&gt;
        &lt;exclusion&gt;
          &lt;artifactId&gt;commons-collections&lt;/artifactId&gt;
          &lt;groupId&gt;commons-collections&lt;/groupId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;artifactId&gt;commons-logging&lt;/artifactId&gt;
          &lt;groupId&gt;commons-logging&lt;/groupId&gt;
        &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;

  &lt;/dependencies&gt;

  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-ear-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.3.2&lt;/version&gt;
        &lt;configuration&gt;
          &lt;version&gt;5&lt;/version&gt;
          &lt;defaultLibBundleDir&gt;lib&lt;/defaultLibBundleDir&gt;
          &lt;generateApplicationXml&gt;true&lt;/generateApplicationXml&gt;

          &lt;modules&gt;
            &lt;ejbModule&gt;
              &lt;groupId&gt;cos&lt;/groupId&gt;
              &lt;artifactId&gt;pfm77-ejb&lt;/artifactId&gt;
            &lt;/ejbModule&gt;
            &lt;ejbModule&gt;
              &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
              &lt;artifactId&gt;jboss-seam&lt;/artifactId&gt;
            &lt;/ejbModule&gt;
            &lt;webModule&gt;
              &lt;groupId&gt;cos&lt;/groupId&gt;
              &lt;artifactId&gt;pfm77-war&lt;/artifactId&gt;
              &lt;contextRoot&gt;PFM77&lt;/contextRoot&gt;
            &lt;/webModule&gt;
          &lt;/modules&gt;

        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
    &lt;finalName&gt;pfm77-ear&lt;/finalName&gt;
  &lt;/build&gt;

&lt;/project&gt;
</pre>
<p></p>
<h4>EJB project</h4>
<p>Next step the EJB pom file. Not a lot of things to say about it except concerning the Maven EJB plugin which is used to set the EJB version.</p>
<p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;parent&gt;
    &lt;artifactId&gt;pfm77-parent&lt;/artifactId&gt;
    &lt;groupId&gt;cos&lt;/groupId&gt;
    &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;/parent&gt;
  &lt;groupId&gt;cos&lt;/groupId&gt;
  &lt;artifactId&gt;pfm77-ejb&lt;/artifactId&gt;
  &lt;packaging&gt;ejb&lt;/packaging&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;pfm77-ejb JEE5 EJB&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;
  &lt;dependencies&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;javaee&lt;/groupId&gt;
      &lt;artifactId&gt;javaee-api&lt;/artifactId&gt;
      &lt;version&gt;5&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;3.8.1&lt;/version&gt;
      &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
      &lt;artifactId&gt;jboss-seam&lt;/artifactId&gt;
      &lt;version&gt;${seam.version}&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;

    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
      &lt;artifactId&gt;hibernate-annotations&lt;/artifactId&gt;
      &lt;version&gt;3.2.0.ga&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;commons-beanutils&lt;/groupId&gt;
      &lt;artifactId&gt;commons-beanutils&lt;/artifactId&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.ostermiller&lt;/groupId&gt;
      &lt;artifactId&gt;utils&lt;/artifactId&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
    	&lt;groupId&gt;mysql&lt;/groupId&gt;
    	&lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
    	&lt;version&gt;5.1.6&lt;/version&gt;
    	&lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;

  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-ejb-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.1&lt;/version&gt;
        &lt;configuration&gt;
          &lt;ejbVersion&gt;3.0&lt;/ejbVersion&gt;

        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
    &lt;finalName&gt;pfm77-ejb&lt;/finalName&gt;
  &lt;/build&gt;
&lt;/project&gt;
</pre>
<p></p>
<h4>WAR project</h4>
<p>Last but not least the WAR pom file. Notice that we&#8217;re not using Maven war plugin in this pom file, the default values of War packaging are enough.</p>
<p></p>
<p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;parent&gt;
    &lt;artifactId&gt;pfm77-parent&lt;/artifactId&gt;
    &lt;groupId&gt;cos&lt;/groupId&gt;
    &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;/parent&gt;
  &lt;groupId&gt;cos&lt;/groupId&gt;
  &lt;artifactId&gt;pfm77-war&lt;/artifactId&gt;
  &lt;packaging&gt;war&lt;/packaging&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;pfm77-war JEE5 Webapp&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;
  &lt;dependencies&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
      &lt;artifactId&gt;servlet-api&lt;/artifactId&gt;
      &lt;version&gt;2.5&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;javax.servlet.jsp&lt;/groupId&gt;
      &lt;artifactId&gt;jsp-api&lt;/artifactId&gt;
      &lt;version&gt;2.1&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;3.8.1&lt;/version&gt;
      &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
      &lt;artifactId&gt;jboss-seam-ui&lt;/artifactId&gt;
      &lt;version&gt;${seam.version}&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
      &lt;exclusions&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
          &lt;artifactId&gt;jboss-seam&lt;/artifactId&gt;
        &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
      &lt;artifactId&gt;jboss-seam-debug&lt;/artifactId&gt;
      &lt;version&gt;${seam.version}&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
      &lt;exclusions&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
          &lt;artifactId&gt;jboss-seam&lt;/artifactId&gt;
        &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
      &lt;artifactId&gt;jboss-seam-pdf&lt;/artifactId&gt;
      &lt;version&gt;${seam.version}&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
      &lt;exclusions&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;org.jboss.seam&lt;/groupId&gt;
          &lt;artifactId&gt;jboss-seam&lt;/artifactId&gt;
        &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.richfaces.ui&lt;/groupId&gt;
      &lt;artifactId&gt;richfaces-ui&lt;/artifactId&gt;
      &lt;version&gt;${richfaces.version}&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.richfaces.framework&lt;/groupId&gt;
      &lt;artifactId&gt;richfaces-impl&lt;/artifactId&gt;
      &lt;version&gt;${richfaces.version}&lt;/version&gt;
      &lt;exclusions&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;commons-logging&lt;/groupId&gt;
          &lt;artifactId&gt;commons-logging&lt;/artifactId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;junit&lt;/groupId&gt;
          &lt;artifactId&gt;junit&lt;/artifactId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;javax.faces&lt;/groupId&gt;
          &lt;artifactId&gt;jsf-api&lt;/artifactId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;org.richfaces.framework&lt;/groupId&gt;
          &lt;artifactId&gt;richfaces-api&lt;/artifactId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
          &lt;artifactId&gt;servlet-api&lt;/artifactId&gt;
        &lt;/exclusion&gt;
        &lt;exclusion&gt;
          &lt;groupId&gt;javax.faces&lt;/groupId&gt;
          &lt;artifactId&gt;jsf-impl&lt;/artifactId&gt;
        &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;

  &lt;/dependencies&gt;
  &lt;build&gt;

    &lt;finalName&gt;pfm77-war&lt;/finalName&gt;
  &lt;/build&gt;
&lt;/project&gt;
</pre>
<p></p>
<h4>Generating Eclipse configuration</h4>
<p>Now that we have our pom files, we&#8217;ll ask m2eclipse to refresh eclipse config files by accessing the &#8220;Maven/update configuration file&#8221; in the context menu of each project. Doing this refresh .classpath, .project files and .settings folder of our projects.</p>
<h4>First Maven build and first fix</h4>
<p>From the context menu of the parent project (not the EAR), choose &#8220;Run as&#8230;/Maven install&#8221; or &#8220;Maven package&#8221;. Maven is launched but the build fails. Don&#8217;t panic this issue is caused by a conflict in Maven resolution and Workspace resolution. Disable Worksapce resolution in the parent project by choosing  &#8220;Maven/Disable Workspace Resolution&#8221; in contextual menu of the parent project. Launch the build again and &#8220;voila&#8221;. You get an ear file in the target directory of the EAR project. In command line you&#8217;ll have to launch &#8220;mvn install&#8221; from parent project folder to have the same result.</p>
<h4>What about WTP ?</h4>
<p>Before using WTP to deploy your project you&#8217;ll have to copy the application.xml file from the target folder (of the EAR project) to the &#8220;src/main/application/META-INF&#8221; folder and do it again each time EAR modules change (which is not so often). And now ? Beleive it or not but it&#8217;s over and it works. In the server view choose your server (if you don&#8217;t have one you can create a &#8220;local deployer&#8221;). In the contextual menu choose &#8220;Add remove&#8230;&#8221; and add your project.</p>
<p style="text-align: center;"><img class="size-medium wp-image-254 aligncenter" title="Deployment" src="http://www.next-presso.fr/wp-content/uploads/2009/06/Image-12-293x300.png" alt="Deployment" width="293" height="300" /></p>
<p>Then click on &#8220;publih&#8221; and tadaaa, your project is deployed with WTP (if it&#8217;s not, you just have to restart all this tutorial over <img src='http://www.next-presso.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ). The only issue is a WEB-INF directory in the root of the EAR which contains a copy of the lib directory of the good WEB-INF directory of the war module. This problem should be harmless for a local deployment and is caused by this <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=247090" target="_blank">Eclipse bug</a>.</p>
<h4>Conclusion</h4>
<p>So m2eclipse is not working out of the box with WTP project. However it&#8217;s a powerfull tool even without this need. About Seam and Maven, JBoss is working on making developer life more simple. JBoss tools 3.1 should include extensions to <a href="https://jira.jboss.org/jira/browse/JBIDE-3874" target="_blank">ease the work with m2eclipse and Seam</a> and Seam 3.0 should be totally mavenized, so easier to be <a href="http://sfwk.org/Download/SeamDownloads#H-BuildingSeam3" target="_blank">build with Maven</a>.</p>
<p>We&#8217;ll keep an eye on it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/06/wtp-m2eclipse-seam-cest-bien-maven/feed/</wfw:commentRss>
		<slash:comments>14337</slash:comments>
		</item>
		<item>
		<title>Ma todo list du deuxième semestre</title>
		<link>http://www.next-presso.com/2009/06/ma-todo-list-du-deuxieme-semestre/</link>
		<comments>http://www.next-presso.com/2009/06/ma-todo-list-du-deuxieme-semestre/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:25:18 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=181</guid>
		<description><![CDATA[<p>Depuis le début de l&#8217;année et le démarrage de mon nouveau job, j&#8217;ai vu passer beaucoup de nouveautés et n&#8217;ai pas vraiment eu le temps de m&#8217;y attarder.</p> <p>Voici les outils ou technologies que j&#8217;aimerai au moins explorer, au mieux expérimenter pendant cette fin d&#8217;année :</p> Le développement d&#8217;application iPhone : là c&#8217;est sûr, un [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis le début de l&#8217;année et le démarrage de mon nouveau job, j&#8217;ai vu passer beaucoup de nouveautés et n&#8217;ai pas vraiment eu le temps de m&#8217;y attarder.</p>
<p>Voici les outils ou technologies que j&#8217;aimerai au moins explorer, au mieux expérimenter pendant cette fin d&#8217;année :</p>
<ul>
<li>Le développement d&#8217;application iPhone : là c&#8217;est sûr, un beau projet iPhone vient de me tomber dessus. J&#8217;essaierai de vous tenir informés de mon avancée sur le sujet</li>
<li>Le développement pour Androïd : c&#8217;est pas fait, mais le comparatif avec l&#8217;iPhone m&#8217;intéresse <img src='http://www.next-presso.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Mener mon premier projet full agile : ça vient aussi</li>
<li>Mettre en oeuvre Seam 2.2 la première version vraiment JEE (voir mon <a href="https://jira.jboss.org/jira/browse/JBSEAM-3119" target="_blank">ticket JIRA</a> préféré sur le sujet)</li>
<li>Utiliser Asap Eclipse 3.5 et JBoss tools 3.0 : ça devrait commencer la semaine prochaine</li>
<li>Faire des tests avec Google Application Engine</li>
<li>Lancer le projet Open Source que je dois lancer depuis une éternité.</li>
</ul>
<p>Beaucoup de sujets sur le feu. Bon mettons que je n&#8217;en fasse que a moitié ce serait déjà pas mal. J&#8217;essaierai aussi de produire un peu plus de contenu sur mon blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/06/ma-todo-list-du-deuxieme-semestre/feed/</wfw:commentRss>
		<slash:comments>13827</slash:comments>
		</item>
		<item>
		<title>Lifting et accès mobile pour Next Presso</title>
		<link>http://www.next-presso.com/2009/06/lifting-et-acces-mobile-pour-next-presso/</link>
		<comments>http://www.next-presso.com/2009/06/lifting-et-acces-mobile-pour-next-presso/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 07:29:49 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=169</guid>
		<description><![CDATA[<p>Je viens de changer le thème du blog pour quelque chose de plus aéré et évolutif.</p> <p>Par ailleurs, grâce au plugin wptouch next presso est maintenant optimisé pour la plupart des terminaux mobiles (iPhone/iPod Touch, Android, Blackberry&#8230;).</p> <p>Vos retours sur le sujet sont bienvenus.</p> ]]></description>
			<content:encoded><![CDATA[<p>Je viens de changer le thème du blog pour quelque chose de plus aéré et évolutif.</p>
<p>Par ailleurs, grâce au plugin <a href="http://www.bravenewcode.com/wptouch/" target="_blank">wptouch</a> next presso est maintenant optimisé pour la plupart des terminaux mobiles (iPhone/iPod Touch, Android, Blackberry&#8230;).</p>
<p>Vos retours sur le sujet sont bienvenus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/06/lifting-et-acces-mobile-pour-next-presso/feed/</wfw:commentRss>
		<slash:comments>14559</slash:comments>
		</item>
		<item>
		<title>Les castcodeurs : une initiative vraiment sympa</title>
		<link>http://www.next-presso.com/2009/06/les-castcodeurs/</link>
		<comments>http://www.next-presso.com/2009/06/les-castcodeurs/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 18:48:39 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=162</guid>
		<description><![CDATA[<p>Un peu de pub pour les Castcodeurs : un podcast de spécialistes du monde du développement Java. Réservé à un public un peu geek et branché Java, mais c&#8217;est vraiment sympa. </p> ]]></description>
			<content:encoded><![CDATA[<p>Un peu de pub pour les Castcodeurs : un podcast de spécialistes du monde du développement Java. Réservé à un public un peu geek et branché Java, mais c&#8217;est vraiment sympa.<br />
<a href="http://lescastcodeurs.com"><img src="http://lescastcodeurs.com/img/jecoute_les_castcodeurs_200px.png" border="0" alt="J'ecoute les Cast Codeurs" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/06/les-castcodeurs/feed/</wfw:commentRss>
		<slash:comments>14544</slash:comments>
		</item>
		<item>
		<title>La guerre des RIA aura-t&#8217;elle lieu ?</title>
		<link>http://www.next-presso.com/2009/06/la-guerre-des-ria-aura-telle-lieu/</link>
		<comments>http://www.next-presso.com/2009/06/la-guerre-des-ria-aura-telle-lieu/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:51:51 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[JavaFx]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Wave]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=144</guid>
		<description><![CDATA[<p>Depuis deux ou trois ans, on nous prédit une guerre sans merci entre les différents acteurs des technologies Internet Riches. L&#8217;arrivée de Microsoft avec Silverlight semble avoir mis le feu au poudre, dans la foulée Adobe a commencé à communiquer de plus en plus sur Flex et à sortir Air (qui est plus une technologie [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis deux ou trois ans, on nous prédit une guerre sans merci entre les différents acteurs des technologies Internet Riches. L&#8217;arrivée de Microsoft avec <a href="http://www.microsoft.com/silverlight/" target="_blank">Silverlight</a> semble avoir mis le feu au poudre, dans la foulée Adobe a commencé à communiquer de plus en plus sur <a href="http://www.adobe.com/fr/products/flex/" target="_parent">Flex</a> et à sortir <a href="http://www.adobe.com/fr/products/air/" target="_parent">Air</a> (qui est plus une technologie &#8220;desktop&#8221;) , enfin Sun est sorti du bois (un peu tard) pour prendre la place d&#8217;outsider avec <a href="http://www.javafx.com/" target="_blank">JavaFx</a>. Aujourd&#8217;hui, de nombreux décideurs s&#8217;interrogent sur ces technologies et quelques projets sont lancés en s&#8217;appuyant sur elles (pour JavaFx, il va falloir encore attendre), mais cette guerre annoncée risque d&#8217;être remportée par un acteur déjà en place et qui dispose d&#8217;un contrôle incontestable sur le web : Google.</p>
<p><span id="more-144"></span></p>
<h3>Le concept, les principes et les acteurs</h3>
<p>Avant tout, juste un petit point sur le concept des RIA. Je discutais du sujet il y a quelque jours avec un décideur qui m&#8217;expliquait qu&#8217;il faisait des RIA il y a déjà 10 ans avec Delphi. A ce compte, moi aussi il ya dix ans je faisais des RIA avec Lotus Notes. Cette anecdote illustre combien le concept n&#8217;est pas forcément clair.</p>
<p>L&#8217;idée générale des RIA est d&#8217;amener une expérience riche au sein d&#8217;une navigation Web. Plus prosaïquement : donner à l&#8217;utilisateur l&#8217;impression qu&#8217;il utilise un client lourd (une application &#8220;installée&#8221; sur son ordinateur) sans l&#8217;obliger à quitter son navigateur. Rien de révolutionnaire en soit, mais la facilité de mise en oeuvre de ce logiciel client riche pour l&#8217;utilisateur lève les principaux freins à son adoption. Les RIA permettent donc de déployer un applicatif client serveur sans aucune intervention de l&#8217;utilisateur (quand la configuration de son ordinateur est correcte).Pour une définition plus fouillée des RIA, faites un tout sur <a href="http://blog.aysoon.com/Que-sont-les-applications-riches-RIA-Partie-1-Definition-et-usages-195" target="_blank">cet excellent article</a> sur le sujet qui aborde aussi le concept de RDA (Rich Desktop Application).</p>
<p>Aujourd&#8217;hui deux principes prévalent pour la mise en oeuvre des RIA. Le premier repose sur l&#8217;idée que le navigateur ne propose pas d&#8217;outils suffisamment sophistiqués pour concevoir une interface riche. La technologie s&#8217;appuie donc sur un plugin qui vient enrichir le navigateur, c&#8217;est le cas des solutions d&#8217;Adobe, Microsoft ou Sun.</p>
<p>L&#8217;autre principe s&#8217;appuie sur les outils standard du navigateur à savoir le HTML et le language javascript. Ce mélange mis en oeuvre par Microsoft dans Internet Explorer 5 en 1999 grace au contrôle ActiveX &#8220;XMLHTTP&#8221; a été baptisé Ajax (Asynchronous Javascript And Xml) en 2005 puis standardisé par le W3C en 2006. Aujourd&#8217;hui beaucoup d&#8217;acteurs gravitent autour d&#8217;Ajax et s&#8217;appuient sur ses concepts simples et les fonctionnalités évoluées de HTML pour proposer des bibliothèque de composants Ajax permettant de concevoir des applications riches dans le navigateur. Parmi les pus populaires on peut citer <a href="http://jquery.com/" target="_blank">JQuery</a>, <a href="http://www.dojotoolkit.org/" target="_blank">Dojo</a>, <a href="http://developer.yahoo.com/yui/" target="_blank">YUI</a> (Yahoo) et <a href="http://code.google.com/intl/fr/webtoolkit/" target="_blank">GWT</a> (Google). Dans l&#8217;univers Java, des technologies comme <a href="http://wicket.apache.org/" target="_blank">Wicket</a> ou <a href="http://java.sun.com/javaee/javaserverfaces/" target="_blank">JSF</a> permettent d&#8217;embarquer de l&#8217;Ajax sans avoir à produire le Javascript et le HTML nécessaire pour le mettre en oeuvre. Côté JSF on peut citer des acteurs comme <a href="http://www.jboss.org/jbossrichfaces/" target="_blank">RichFaces</a> ou <a href="http://www.icefaces.org" target="_blank">IceFaces</a>.</p>
<p>Quoiqu&#8217;il en soit, l&#8217;acteur qui a popularisé le plus Ajax et en a fourni une &#8220;proof of concept&#8221; est certainement Google qui dès 2004 avec Gmail puis en 2005 avec Google maps a fait la démonstration qu&#8217;Ajax était viable et pouvait être utilisé pour concevoir des applications très sollicités  et hautement interactives. Google a ainsi été le pionnier du Web 2.0 où d&#8217;autres acteurs l&#8217;ont suivi rapidement comme Facebook ou Netvibes.</p>
<p>En schématisant on peut donc dire que l&#8217;univers RIA compte 4 acteurs majeurs :</p>
<ul>
<li>Adobe avec Flex ;</li>
<li>Microsoft avec Silverlight ;</li>
<li>Sun / Oracle avec JavaFx (Ok, celui là est franchement discutable) ;</li>
<li>Google avec GWT en tant que tête de pont de la mise en oeuvre d&#8217;Ajax.</li>
</ul>
<h3>En route vers le Web 3.0</h3>
<p>Cette semaine s&#8217;est tenu le Google I/O, la conférence développeur de Google à San Francisco. <a href="http://code.google.com/intl/fr/events/io/" target="_blank">Les annonces</a> faites lors de cet événement sont peut être les prémices d&#8217;une nouvelle &#8220;révolution&#8221; du Web. Ces annonces ont tourné autour de deux points :</p>
<ul>
<li>HTML 5 : la plupart des nouvelles versions des navigateurs supportent en avant première les nouveauté d&#8217;HTML 5 (annoncé pour 2010). Tim O&#8217;Reilly, brillant analyste <a href="http://radar.oreilly.com/2009/05/google-bets-big-on-html-5.html" target="_blank">résume assez bien cette conférence</a> sur son blog. Pour faire court, HTML 5 enrichit son ancêtre en intégrant nativement les technologies suivantes :
<ul>
<li>Canvas : qui permet de générer dynamiquement du contenu graphique sur la page web en cours ;</li>
<li>L&#8217;intégration de la vidéo : aujourd&#8217;hui une telle intégration nécessite un plugin. HTML 5 supportera nativement la vidéo permettant ainsi de créer des applications de manipulation d&#8217;images comme du montage vidéo ;</li>
<li>La Géolocalisation déjà présente sur la plupart des terminaux mobiles comme l&#8217;iPhone ou Androïd ;</li>
<li>AppCache et Database qui permettent de répliquer une application Web pour la mettre en mode offline</li>
<li>Web workers qui permet de paralléliser des traitements serveurs et clients et d&#8217;augmenter significativement la performance d&#8217;une application web</li>
</ul>
</li>
<li>Google Wave : le nouvel outil hyper-communiquant de Google qui sortira cette année. <a href="ditorial/502822/google-wave-le-futur-couteau-suisse-de-la-communication/" target="_blank">Cet article de 01</a> résume assez bien cet outil. Plus qu&#8217;un bureau communiquant, Wave sera apparemment une plate-forme SaaS dans laquelle les développeurs pourront enrichir l&#8217;écosystème applicatif à l&#8217;instar de Salesforce ou de l&#8217;appsotre d&#8217;Apple. Bref, un croisement fonctionnel entre la messagerie, le forum de discusssion, la messagerie instantanée, le réseau social et le travail collaboratif, le tout en opensource et librement extensible. Wave va probablement révolutionner notre façon de communiquer sur Internet. Et quoi qu&#8217;il en soit, il constitue la Killer App (tout comme Maps le fut en 2005) pour pousser HTML 5 et Google Web Toolkit.</li>
</ul>
<h3>Conclusion</h3>
<p>Google semble mettre toutes ses forces sur HTML 5 et les évolutions d&#8217;Ajax qui en découleront, et sur le papier (ou l&#8217;écran) ça à l&#8217;air très très prometteur. Face à ces évolutions alléchantes qui seront partie intégrantes de tous les navigateurs modernes sur toutes les plate-formes, les investissements colossaux des acteurs qui parient sur des technologies propriétaires avec des plug-in à adapter à chaque plate-forme et chaque navigateur semblent un peu plus hasardeux.</p>
<p>Mais, personne ne dispose d&#8217;une boule de cristal et les prophètes sur le sujet se sont maintes fois trompés par le passé. La seule certitude que l&#8217;on puisse avoir c&#8217;est que la conception d&#8217;applications en ligne et l&#8217;ergonomie de ces applications d&#8217;ici 5 ans n&#8217;aura pas grand chose à voir avec celle d&#8217;aujourd&#8217;hui.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/06/la-guerre-des-ria-aura-telle-lieu/feed/</wfw:commentRss>
		<slash:comments>14966</slash:comments>
		</item>
		<item>
		<title>Salesforce : la tête dans les nuages, les pieds trop sur terre</title>
		<link>http://www.next-presso.com/2009/04/salesforce-la-tete-dans-les-nuages-les-pieds-trop-sur-terre/</link>
		<comments>http://www.next-presso.com/2009/04/salesforce-la-tete-dans-les-nuages-les-pieds-trop-sur-terre/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 03:44:55 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Salesforce]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=98</guid>
		<description><![CDATA[<p></p> <p>Deux événements important ont eu lieu la semaine dernière dans l&#8217;univers encore brumeux du cloud computing.</p> Le lancement par Google de la bêta public de Google App engine for Java ; L&#8217;évenement CloudForce organisé par Salesforce à Londres ; <p>Si le premier est plus exposé médiatiquement, il n&#8217;en reste pas moins que l&#8217;actualité autour [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-104 alignleft" style="border: 1px solid black; margin: 2px;" title="Nuage" src="http://www.next-presso.fr/wp-content/uploads/2009/04/images.jpg" alt="nuage" width="135" height="102" /></p>
<p>Deux événements important ont eu lieu la semaine dernière dans l&#8217;univers encore brumeux du cloud computing.</p>
<ul>
<li>Le lancement par Google de la bêta public de <a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html" target="_blank">Google App engine for Java</a> ;</li>
<li>L&#8217;évenement <a href="http://www.salesforce.com/eu/cloudforce/09-london/" target="_blank">CloudForce</a> organisé par Salesforce à Londres ;</li>
</ul>
<p>Si le premier est plus exposé médiatiquement, il n&#8217;en reste pas moins que l&#8217;actualité autour de Salesforce est à suivre de très prêt, car il y a fort à parier que cette société très innovante aujourd&#8217;hui partenaire de Google se rapproche un peu plus du géant dans un proche avenir. Mais ne brulons pas les étapes, comme je m&#8217;intéresse depuis quelques temps au cloud computing, j&#8217;ai pensé utile de faire un point sur les notions et acteurs de ce secteur.</p>
<p><span id="more-98"></span></p>
<h3>Un peu de vocabulaire</h3>
<p>Comme bien souvent en informatique on habille des vieux concepts avec de nouveaux noms. Ainsi, le &#8220;cloud computing&#8221; n&#8217;est pas vraiment une idée neuve. Au siècle dernier au parlait déjà d&#8217;applications en mode ASP (Application Service Provider) ou d&#8217;applications &#8220;on-demand&#8221;. Toutefois, le cloud computing introduit 3 concepts qu&#8217;il est intéressant de distinguer :</p>
<ul>
<li>IaaS (Infrastructure as a Service) : mise à disposition d&#8217;hébergement évolutif, comme le propose aujourd&#8217;hui <a href="http://fr.gandi.net/hebergement/" target="_blank">Gandi</a> ou <a href="http://aws.amazon.com/" target="_blank">Amazon</a> (ces derniers offrant aussi des sevices PaaS) ;</li>
<li>PaaS (Plateform as a Service) : un hébergement et une plate-forme de développement dotée de services spécifiques (base de données, paiement en ligne) permettant de développer sur la plate-forme en question.</li>
<li>SaaS (Software as a Service) : environnement applicatif complet dans le nuage. Analogue à ce qu&#8217;on pouvait appeler mode &#8220;ASP&#8221; dans une vie antérieur (mas ça fait moins sexy). L&#8217;environnement peut englober un service PaaS ou non. L&#8217;usage de l&#8217;application nécessite de payer un abonnement dont le montant peut être fonction du niveau de consommation que l&#8217;on a de l&#8217;application ou plus classiquement, d&#8217;un niveau fonctionnel.</li>
</ul>
<h3>Les acteurs</h3>
<p>Le monde du SaaS regroupe aujourd&#8217;hui beaucoup d&#8217;acteurs. En France on peu citer des gens comme Trace One ou RunMyProcess. Dans les poids lourds on retrouve les gands éditeurs d&#8217;ERP comme Sap, Oracle ou Cegid. Mais les acteurs les plus intéressants, à mon sens, sont ceux capables de jouer sur les deux niveaux : SaaS + PaaS. Là, les trois grands acteurs sont aujourd&#8217;hui Google avec ses Google apps pour le SaaS et Google App Engine pour le PaaS, Microsoft avec son offre Azure et bien sûr SalesForce.</p>
<p>Je ne m&#8217;étendrais pas sur Microsoft dans ces colonnes, des gens bien plus intéressés et bien plus spécialistes le font très bien ailleurs. Concernant Google, leur approche originale basée jusqu&#8217;à présent sur le langage python pour le PaaS et sur Google Apps pour le SaaS prend de l&#8217;envergure en supportant désormais Java. Comme le Touilleur Express relate extrêmement bien la soirée de lancement de Google Apps Engine <a href="http://www.touilleur-express.fr/2009/04/09/google-appengine-retour-de-soiree/" target="_blank">ici</a>, je vais m&#8217;épargner quelques paragraphes. Il me reste à vous entretenir de Saleforce.</p>
<h3>Salesforce : une offre innovante mais un plan tarifaire des années 90</h3>
<p>Salesforce s&#8217;est imposé ces dernières années comme un acteur majeur du CRM en mode SaaS. L&#8217;évolution récente de sa plate-forme mérite vraiment que l&#8217;on s&#8217;y arrête. En effet, Salesforce est probablement le seul acteur avec une offre métier aussi forte ayant franchi le pas du SaaS pour aller vers le PaaS. Aujourd&#8217;hui Salesforce propose une réelle plateforme de développement basée sur un langage propriétaire dont la syntaxe est calquée sur Java : apex et d&#8217;un IDE basé sur Eclipse. Cette plateforme permet à des partenaires de développer des extensions au CRM et de les proposer dans un écosystème comparable  à l&#8217;Appstore d&#8217;Apple : l&#8217;Appexchange. Elle permet également de développer des applications indépendantes du CRM mais qui bénéficie de l&#8217;infrastructure de Salesforce pour s&#8217;exécuter. Bref, Salesforce joue une place à part dans l&#8217;univers des SaaS et empiète sur le territoire d&#8217;acteurs comme Google ou Amazon ayant une très forte expertise métier comme colonne vertébrale de son offre de service.</p>
<p>Ces innovations assez audacieuses rendent d&#8217;autant plus surprenant un système tarifaire des plus classiques qui rappel celui des logiciels vendus sur support physiques et donc figé  (dans la veine : &#8220;édition personnelle&#8221;, &#8220;édition PME&#8221;, &#8220;édtion Pro&#8221;).  Je passe sur les prix en euros plus chers qu&#8217;en dollars (3000 $ deviennent 3240 €) qui sont à mon sens plus propices à dégrader l&#8217;image et la confiance dans la marque qu&#8217;autre chose pour m&#8217;interroger sur l&#8217;impossibilité qu&#8217;une société comme celle-ci puisse imaginer des formules d&#8217;abonnements plus astucieuses et surtout plus souples, plus &#8220;on-demand&#8221;. Bref, une réelle sensation d&#8217;enfumage commercial et un boulevard pour la concurrence : ça tombe bien Microsoft fourbit ses armes.</p>
<p>Google et Salesforce ayant déjà opérés un certain nombre de partenariats, je ne pense pas prendre beaucoup de risque en pariant sur un futur rachat de l&#8217;un par l&#8217;autre (devinez dans quel sens) et la prochaine constitution d&#8217;une offre très attractive sur une plateforme SaaS et PaaS proposant CRM, bureautique et plus si affinité. On parie ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/04/salesforce-la-tete-dans-les-nuages-les-pieds-trop-sur-terre/feed/</wfw:commentRss>
		<slash:comments>13400</slash:comments>
		</item>
		<item>
		<title>De retour</title>
		<link>http://www.next-presso.com/2009/04/de-retour/</link>
		<comments>http://www.next-presso.com/2009/04/de-retour/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 15:00:55 +0000</pubDate>
		<dc:creator>Antoine Sabot-Durand</dc:creator>
				<category><![CDATA[Général]]></category>

		<guid isPermaLink="false">http://www.next-presso.fr/?p=95</guid>
		<description><![CDATA[<p>Après quelques péripéties personnelles et profesionnelles, me voici de retour sur mon bog. Je viens de voir que mon dernier post s&#8217;intitulait &#8220;pourquoi je blogue&#8221;, plutôt comique avant de faire une pause de 6 mois .</p> <p>Allez c&#8217;est reparti sur Du Seam, du Spring et un peu de nuages&#8230;</p> ]]></description>
			<content:encoded><![CDATA[<p>Après quelques péripéties personnelles et profesionnelles, me voici de retour sur mon bog. Je viens de voir que mon dernier post s&#8217;intitulait &#8220;pourquoi je blogue&#8221;, plutôt comique avant de faire une pause de 6 mois <img src='http://www.next-presso.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>Allez c&#8217;est reparti sur Du Seam, du Spring et un peu de nuages&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.next-presso.com/2009/04/de-retour/feed/</wfw:commentRss>
		<slash:comments>14089</slash:comments>
		</item>
	</channel>
</rss>

