<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5977041875295618643</id><updated>2024-10-01T14:57:24.465-07:00</updated><title type='text'>First Step To JEE</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://first-step-jee.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://first-step-jee.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jean</name><uri>http://www.blogger.com/profile/15925637809573494664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5977041875295618643.post-6043680476636767374</id><published>2011-02-18T07:08:00.001-08:00</published><updated>2011-02-19T04:50:44.176-08:00</updated><title type='text'>Convertire une image en byte et byte [] vers image</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Il existe déjà des milliers d&#39;exemple sur internet sur comment convertire&lt;br /&gt;
une image vers un tableau des &lt;span style=&quot;font-weight: bold;&quot;&gt;byte []&lt;/span&gt; en &lt;span style=&quot;font-weight: bold;&quot;&gt;java &lt;/span&gt;et vis versa, récement j&#39;ai eu l&#39;occasion de travailer sur un petit projet qui&amp;nbsp; m&#39;oblige a convertire une image vers un &lt;span style=&quot;font-weight: bold;&quot;&gt;tableau de bytes&lt;/span&gt;, stocker dans une base des données et de récuperer l&#39;image par la suite.&lt;br /&gt;
&lt;br /&gt;
Ma recherche sur internet n&#39;etait pas satisfaisante vu que j&#39;arrive pa&lt;br /&gt;
a convertire les images de n&#39;importe types &lt;span style=&quot;font-weight: bold;&quot;&gt;gif&lt;/span&gt;, &lt;span style=&quot;font-weight: bold;&quot;&gt;tiff&lt;/span&gt;, &lt;span style=&quot;font-weight: bold;&quot;&gt;jpeg&lt;/span&gt;, &lt;span style=&quot;font-weight: bold;&quot;&gt;jpg&lt;/span&gt;, &lt;span style=&quot;font-weight: bold;&quot;&gt;png&lt;/span&gt; ... &lt;br /&gt;
&lt;br /&gt;
Le but de cette article est donc de présenter et expliquer&lt;br /&gt;
comment on converti tous type d&#39;images vers un tableau de &lt;span style=&quot;font-weight: bold;&quot;&gt;bytes en java&lt;/span&gt; ..&lt;br /&gt;
&lt;br /&gt;
On commence par créer une classe Utils avec des methodes&lt;br /&gt;
static &lt;br /&gt;
&lt;br /&gt;
Premiere methode : convertire une image vers un &lt;span style=&quot;text-decoration: underline;&quot;&gt;tableau de bytes&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;byte []&lt;/span&gt; prend comme paramétre le chemin d&#39;image à convertire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;2&quot; cellspacing=&quot;2&quot; style=&quot;text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td style=&quot;vertical-align: top;&quot;&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;public static byte [] ImageToByte(File filePath) throw FileNotFoundException{&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;FileInputStream fis = new FileInputStream(filePath);&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
ByteArrayOutputStream bos = new ByteArrayOutputStream();&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
byte[] buf = new byte[1024];&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
try {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;for (int readNum; (readNum = fis.read(buf)) != -1;) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;bos.write(buf, 0, readNum); &lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
System.out.println(&quot;read &quot; + readNum + &quot; bytes,&quot;);&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
} catch (IOException ex) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] bytes = bos.toByteArray();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return bytes;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;Pour la deuxiéme méthode : convertire un tableau de bytes &lt;span style=&quot;font-weight: bold;&quot;&gt;byte[]&lt;/span&gt; vers une image ici la format de l&#39;image et &lt;span style=&quot;font-weight: bold;&quot;&gt;JPEG&lt;/span&gt; vous pouvez la changer de votre choix&lt;br /&gt;
&lt;br /&gt;
imageFile : chemin vers le path destination&lt;br /&gt;
&lt;br /&gt;
bytes : le tableau des byte [] a convertire&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;2&quot; cellspacing=&quot;2&quot; style=&quot;color: #2912df; text-align: left; width: 100%;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td style=&quot;vertical-align: top;&quot;&gt;public static void byteToImage(byte [] bytes,File imageFile) throws IOException{&lt;br /&gt;
&lt;br /&gt;
ByteArrayInputStream bis =new ByteArrayInputStream(bytes);&lt;br /&gt;
Iterator&amp;lt;?&amp;gt; readers =ImageIO.getImageReadersByFormatName(&quot;jpeg&quot;);&lt;br /&gt;
ImageReader reader =(ImageReader) readers.next();&lt;br /&gt;
Object source = bis; &lt;br /&gt;
ImageInputStream iis =ImageIO.createImageInputStream(source);&lt;br /&gt;
reader.setInput(iis, true);&lt;br /&gt;
ImageReadParam param =reader.getDefaultReadParam();&lt;br /&gt;
Image image = reader.read(0,param);&lt;br /&gt;
BufferedImage bufferedImage= new BufferedImage(image.getWidth(null), image.getHeight(null),BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
Graphics2D g2 =bufferedImage.createGraphics();&lt;br /&gt;
g2.drawImage(image, null,null);&lt;br /&gt;
ImageIO.write(bufferedImage,&quot;jpeg&quot;, imageFile);&lt;br /&gt;
System.out.println(imageFile.getPath());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Notre Class Utils :&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;2&quot; cellspacing=&quot;2&quot; style=&quot;color: #2912df; text-align: left; width: 100%;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td style=&quot;vertical-align: top;&quot;&gt;import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import java.io.ByteArrayInputStream;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileNotFoundException;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.logging.Level;&lt;br /&gt;
import javax.imageio.ImageIO;&lt;br /&gt;
import javax.imageio.ImageReadParam;&lt;br /&gt;
import javax.imageio.ImageReader;&lt;br /&gt;
import javax.imageio.stream.ImageInputStream;&lt;br /&gt;
&lt;br /&gt;
public class Utils {&lt;br /&gt;
&lt;br /&gt;
public static byte [] ImageToByte(File filePath) throws FileNotFoundException{&lt;br /&gt;
&lt;br /&gt;
FileInputStream fis = new FileInputStream(filePath);&lt;br /&gt;
ByteArrayOutputStream bos =new ByteArrayOutputStream();&lt;br /&gt;
byte[] buf = new byte[1024];&lt;br /&gt;
try {&lt;br /&gt;
&lt;br /&gt;
for (int readNum; (readNum = fis.read(buf)) != -1;) {&lt;br /&gt;
bos.write(buf, 0, readNum); &lt;br /&gt;
System.out.println(&quot;read &quot; + readNum + &quot; bytes,&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException ex) {&lt;br /&gt;
}&lt;br /&gt;
byte[] bytes =bos.toByteArray();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
return bytes; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
public static void byteToImage(byte [] bytes,File imageFile) throws IOException{&lt;br /&gt;
&lt;br /&gt;
ByteArrayInputStream bis =new ByteArrayInputStream(bytes);&lt;br /&gt;
Iterator&amp;lt;?&amp;gt; readers =ImageIO.getImageReadersByFormatName(&quot;jpeg&quot;);&lt;br /&gt;
ImageReader reader =(ImageReader) readers.next();&lt;br /&gt;
Object source = bis; &lt;br /&gt;
ImageInputStream iis =ImageIO.createImageInputStream(source);&lt;br /&gt;
reader.setInput(iis, true);&lt;br /&gt;
ImageReadParam param =reader.getDefaultReadParam();&lt;br /&gt;
Image image = reader.read(0,param); &lt;br /&gt;
BufferedImage bufferedImage= new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
Graphics2D g2 =bufferedImage.createGraphics();&lt;br /&gt;
g2.drawImage(image, null,null);&lt;br /&gt;
ImageIO.write(bufferedImage,&quot;jpeg&quot;, imageFile); &lt;br /&gt;
System.out.println(imageFile.getPath()); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;Et enfin une petite Class de test &lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;2&quot; cellspacing=&quot;2&quot; style=&quot;height: 332px; text-align: left; width: 967px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td style=&quot;vertical-align: top;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2912df;&quot;&gt;public static void main(String[] args) throws FileNotFoundException, IOException {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
byte [] bytes = Utils.ImageToByte(new File(&quot;c:/chemin_source/fileSource.png&quot;));&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;Utils.byteToImage(bytes,new File(&quot;c:/chemin_destination/fileDestination.jpeg&quot;));&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
} catch (Exception e) {&lt;/span&gt;&lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt; &lt;span style=&quot;color: #2912df;&quot;&gt;&lt;br /&gt;
&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #2912df;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;Dans un autre article je vous explique comment afficher une image converti en byte dans une page web&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://first-step-jee.blogspot.com/feeds/6043680476636767374/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://first-step-jee.blogspot.com/2011/02/convertire-une-image-en-byte-et-byte.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/6043680476636767374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/6043680476636767374'/><link rel='alternate' type='text/html' href='http://first-step-jee.blogspot.com/2011/02/convertire-une-image-en-byte-et-byte.html' title='Convertire une image en byte et byte [] vers image'/><author><name>Jean</name><uri>http://www.blogger.com/profile/15925637809573494664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5977041875295618643.post-3880775999520218904</id><published>2011-02-01T06:05:00.001-08:00</published><updated>2011-02-01T06:05:55.958-08:00</updated><title type='text'>Simple exemple : JSF 2.0, PRIMEFACES 2.2.RC, EJB 3.1, JPA 2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://first-step-jee.blogspot.com/feeds/3880775999520218904/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://first-step-jee.blogspot.com/2011/02/simple-exemple-jsf-20-primefaces-22rc.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/3880775999520218904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/3880775999520218904'/><link rel='alternate' type='text/html' href='http://first-step-jee.blogspot.com/2011/02/simple-exemple-jsf-20-primefaces-22rc.html' title='Simple exemple : JSF 2.0, PRIMEFACES 2.2.RC, EJB 3.1, JPA 2'/><author><name>Jean</name><uri>http://www.blogger.com/profile/15925637809573494664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5977041875295618643.post-1503146395130717673</id><published>2010-11-19T13:52:00.001-08:00</published><updated>2011-02-01T08:55:44.083-08:00</updated><title type='text'>Multiples datasource  avec JPA et SEAM</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://first-step-jee.blogspot.com/feeds/1503146395130717673/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://first-step-jee.blogspot.com/2010/11/multiples-datasource-avec-jpa-et-seam.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/1503146395130717673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/1503146395130717673'/><link rel='alternate' type='text/html' href='http://first-step-jee.blogspot.com/2010/11/multiples-datasource-avec-jpa-et-seam.html' title='Multiples datasource  avec JPA et SEAM'/><author><name>Jean</name><uri>http://www.blogger.com/profile/15925637809573494664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5977041875295618643.post-4176066899110923024</id><published>2010-10-22T13:46:00.001-07:00</published><updated>2011-02-18T13:39:40.958-08:00</updated><title type='text'>Deux liste de données avec seam</title><content type='html'>&lt;p&gt;Pour gérer une ou plusieurs liste de données vous n&#39;êtes pas obligé d&#39;utiliser un EJB, vous pouvez utiliser un Composant Seam simple.&lt;br /&gt;
&lt;p&gt;Un composant Seam est moins lourd en terme de mémoire, de performances et de consommation des ressources .&lt;br /&gt;
  Le but de cet exemple est d&#39;afficher deux liste de données dans une page JSF pour se faire nous utilisons les annontation Seam :&lt;br /&gt;
&lt;div&gt;  &lt;p&gt;&lt;strong&gt;@DataModel&lt;/strong&gt; :   Ici on annote la liste @DataModel (Annotation Seam) c&#39;est elle qui va   être notre modèle de données. l&#39;annotation renvoie à jsf une liste à la   page jsf. Ce qui permet d&#39;utiliser la liste dans une interface jsf.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p&gt;    &lt;strong&gt;&lt;br /&gt;
      @DataModelSelection&lt;/strong&gt; :   l&#39;annotation Seam  qui permet de lier la ligne sélectionnée sur la page   web à un objet java. L&#39;annotation @DataModelSelection dit à seam   d&#39;injecter l&#39;élément de liste qui correspond à la ligne cliquée.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;@Factor&lt;/strong&gt;&lt;strong&gt;y&lt;/strong&gt; :  Une annotation magique de Seam : le @Factory  explique à Seam de   créer         une instance de la liste puis d&#39;invoquer la méthode  pour   initialiser l&#39;objet dans la view&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://first-step-jee.blogspot.com/feeds/4176066899110923024/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://first-step-jee.blogspot.com/2010/10/deux-data-table-avec-seam.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/4176066899110923024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/4176066899110923024'/><link rel='alternate' type='text/html' href='http://first-step-jee.blogspot.com/2010/10/deux-data-table-avec-seam.html' title='Deux liste de données avec seam'/><author><name>Jean</name><uri>http://www.blogger.com/profile/15925637809573494664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5977041875295618643.post-778511194312462278</id><published>2010-10-02T16:35:00.000-07:00</published><updated>2011-02-01T08:53:51.570-08:00</updated><title type='text'>Etude comparatif entre les framworks de présentation JEE</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;div trbidi=&#39;on&#39; style=&#39;text-align: left;&#39; dir=&#39;ltr&#39;&gt;&lt;div style=&#39;line-height: 150%;&#39; class=&#39;MsoNormal&#39;&gt;    &lt;p&gt;&lt;span style=&#39;line-height: 150%;&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;Voir le nombre important de Framework destinés aux développements de la couche présentation, le choix d’une solution se base sur les principales fonctionnalités et besoins et ressources (qualité, interopérabilité, évolutive ainsi que le temps de production de maquettes de la charte graphique et la présentation des interfaces attractives). Les plus connus dans la communauté freeware sont &lt;strong&gt;JSF-Richfaces, Spring MVC, Struts, &lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;GWT, WICKET, FLEX &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&#39;font-weight: normal;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;      &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&#39;font-weight: normal;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;strong&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;u&gt; &lt;/u&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;strong&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;WICKET&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/u&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br/&gt;      &lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Wicket est un framework à base de composants, à l&#39;inverse des frameworks &lt;/span&gt;&lt;/span&gt;&lt;span lang=&#39;EN-US&#39;&gt;&lt;a title=&#39;Modèle-Vue-Contrôleur&#39; href=&#39;http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur&#39;&gt;&lt;span lang=&#39;FR&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;MVC&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt; traditionnels à base d&#39;actions, comme Apache &lt;/span&gt;&lt;/span&gt;&lt;span lang=&#39;EN-US&#39;&gt;&lt;a title=&#39;Apache Struts&#39; href=&#39;http://fr.wikipedia.org/wiki/Apache_Struts&#39;&gt;&lt;span lang=&#39;FR&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Struts&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt; ou &lt;/span&gt;&lt;/span&gt;&lt;span lang=&#39;EN-US&#39;&gt;&lt;a title=&#39;Spring Framework&#39; href=&#39;http://fr.wikipedia.org/wiki/Spring_Framework&#39;&gt;&lt;span lang=&#39;FR&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Spring MVC&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt; par exemple.&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;        &lt;/span&gt;&lt;/span&gt;&lt;br/&gt;      &lt;b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;Avantages :&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;/p&gt;    &lt;ul&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Utilise exclusivement les pages &lt;/span&gt;&lt;/span&gt;&lt;span lang=&#39;EN-US&#39;&gt;&lt;a title=&#39;XHTML&#39; href=&#39;http://fr.wikipedia.org/wiki/XHTML&#39;&gt;&lt;span lang=&#39;FR&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;XHTML&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt; comme technologie de présentation. De plus, il n&#39;y a aucune logique à écrire directement dans les pages &lt;/span&gt;&lt;/span&gt;&lt;span lang=&#39;EN-US&#39;&gt;&lt;a title=&#39;XHTML&#39; href=&#39;http://fr.wikipedia.org/wiki/XHTML&#39;&gt;&lt;span lang=&#39;FR&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;XHTML&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Wicket permet de séparer l’HTML et le code Java.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Véritable séparation entre la partie cliente et la partie serveur.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Pas de fichier de configuration : une classe définie dans le web.xml sert de point d’entrée Pas de configuration complexe (XML).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Navigation entre les pages définies en Java.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Limites&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Wicket stocke beaucoup d’informations en session et il est donc trop lourd pour gérer plusieurs centaine d’utilisateurs simultanés. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;A l’usage, on se rend compte que l’intégration manuelle avec le JavaScript n’est pas évidente. Toujours ces histoires d’Id générés qui rendent plus compliqué un framework orienté &lt;/span&gt;&lt;/span&gt;&lt;a href=&#39;http://www.blogger.com/post-edit.g?blogID=5977041875295618643&amp;amp;postID=778511194312462278&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Composants.&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;GWT Google Web Toolkit&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;div style=&#39;line-height: 150%;&#39; class=&#39;MsoNormal&#39;&gt;&lt;span style=&#39;line-height: 150%;&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;L’outil de Google est dédié à la présentation. « Il permet de coder 5 fois plus vite la couche graphique Web de son application ». GWT repose sur un modèle en composant. Par exemple, il dispose d’objets Champ texte, Tableau… Chacun de ces composants supporte les CSS et est donc potentiellement skinnable.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&#39;line-height: 150%;&#39; class=&#39;MsoNormal&#39;&gt;&lt;span style=&#39;line-height: 150%;&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&#39;line-height: 150%;&#39; class=&#39;MsoNormal&#39;&gt;&lt;span style=&#39;line-height: 150%;&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;Avantages :&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&#39;line-height: 150%;&#39; class=&#39;MsoNormal&#39;/&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;Côté intégration à un modèle de page, il n’y aurait aucun souci. Il suffit de partir du HTML et d’appliquer les styles au composant &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;a href=&#39;http://www.blogger.com/post-edit.g?blogID=5977041875295618643&amp;amp;postID=778511194312462278&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;GWT&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;Limites :&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;Manque guidé de bonnes pratiques et de la documentation en général.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;br/&gt;    &lt;/font&gt;      &lt;div style=&#39;line-height: 150%; mso-list: l0 level1 lfo1; text-indent: -18pt;&#39; class=&#39;MsoListParagraph&#39;/&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Il n’y a que des composants graphiques « simples ». Si l’on veut utiliser des composants plus évolués, il faut soit les coder ou bien se tourner vers des librairies de widgets GWT Open Source « non Google » (avantage : elles offre des composant telle que agenda facile à intégrer).&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;JSF Java Server Faces&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;br/&gt;      &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Java Server Faces est un Framework pour la conception d&#39;interfaces graphiques Web en Java.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;      &lt;div&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;JSF s&#39;attache donc à :&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;      &lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Faciliter l&#39;écriture d&#39;interface à partir d&#39;une bibliothèque de contrôles.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Gérer automatiquement l&#39;état HTTP entre client et serveur (en cas de Postback par exemple)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Fournir un modèle simple pour la gestion des évènements coté client et coté serveur&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font color=&#39;#000000&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;Autoriser les créations ou l&#39;enrichissement de composants graphiques utilisateur (custom)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;/&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;/&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&#39;font-family: Arial, Helvetica, sans-serif;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;span style=&#39;font-size: small;&#39; class=&#39;Apple-style-span&#39;/&gt;&lt;/span&gt;&lt;br/&gt;&lt;div style=&#39;mso-element: comment-list;&#39;&gt;&lt;div style=&#39;mso-element: comment;&#39;&gt;&lt;div language=&#39;JavaScript&#39; id=&#39;_com_2&#39; class=&#39;msocomtxt&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://first-step-jee.blogspot.com/feeds/778511194312462278/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://first-step-jee.blogspot.com/2010/10/etude-comparatif-entre-les-framworks-de.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/778511194312462278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5977041875295618643/posts/default/778511194312462278'/><link rel='alternate' type='text/html' href='http://first-step-jee.blogspot.com/2010/10/etude-comparatif-entre-les-framworks-de.html' title='Etude comparatif entre les framworks de présentation JEE'/><author><name>Jean</name><uri>http://www.blogger.com/profile/15925637809573494664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>