<?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>Pierre Schambacher.com &#187; ingénieur</title>
	<atom:link href="http://www.pierreschambacher.com/blog/tag/ingenieur/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pierreschambacher.com</link>
	<description>Ingénieur en Informatique pour Intellicore</description>
	<lastBuildDate>Fri, 28 May 2010 06:45:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Retour d&#8217;expérience sur le cours de Flex à Polytech&#8217;Nice Sophia</title>
		<link>http://www.pierreschambacher.com/blog/retour-dexperience-sur-le-cours-de-flex-a-polytechnice-sophia/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=retour-dexperience-sur-le-cours-de-flex-a-polytechnice-sophia</link>
		<comments>http://www.pierreschambacher.com/blog/retour-dexperience-sur-le-cours-de-flex-a-polytechnice-sophia/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 18:43:49 +0000</pubDate>
		<dc:creator>Pierre Schambacher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[3615mavie]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ingénieur]]></category>
		<category><![CDATA[sophia]]></category>

		<guid isPermaLink="false">http://www.pierreschambacher.com/?p=207</guid>
		<description><![CDATA[Vendredi dernier, j&#8217;intervenais dans mon ancienne école Polytech&#8217;Nice Sophia afin de former quelques étudiants de la promotion 2010 sur le framework Adobe Flex. Je souhaite faire un petit retour sur cette expérience et la partager donc voici le contenu du cours et du TP avec mes impressions.
Tout d&#8217;abord, vous pouvez librement télécharger mon cours (bien [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Vendredi dernier, j&#8217;intervenais dans mon ancienne école Polytech&#8217;Nice Sophia afin de former quelques étudiants de la promotion 2010 sur le framework Adobe Flex. Je souhaite faire un petit retour sur cette expérience et la partager donc voici le contenu du cours et du TP avec mes impressions.</p>
<p style="text-align: justify;"><span id="more-207"></span>Tout d&#8217;abord, vous pouvez librement télécharger mon <a title="Cours de Flex" href="http://www.pierreschambacher.com/wp-content/uploads/2009/10/Cours-Flex.pdf">cours</a> (bien que sans doute peu explicite sans le discours prévu pour l&#8217;accompagner) ainsi que le <a title="TP Polytech Flex Twitter" href="http://www.pierreschambacher.com/wp-content/uploads/2009/10/TP-PolyTweet.pdf">TP</a>.</p>
<h1 style="text-align: justify;">Bonjour, je suis votre prof aujourd&#8217;hui</h1>
<p style="text-align: justify;">C&#8217;est assez impressionnant de rentrer dans une salle pour y faire cours, et que tous les élèves viennent vous saluer en arrivant&#8230; car en effet il y a encore un mois j&#8217;étais un étudiant comme eux et je connaissais déjà la plupart de mes élèves. Évidemment cela aide d&#8217;une part à être en confiance et d&#8217;autre part à avoir le calme dans la classe <img src='http://www.pierreschambacher.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<h1 style="text-align: justify;">Le Cours</h1>
<p style="text-align: justify;">Concernant le cours en lui-même, je savais que je serais probablement limite pour tenir les 2h prévues, mais la réalité s&#8217;est avéré encore pire que prévue. Une fois devant cette 15aine d&#8217;étudiants (et amis) je n&#8217;ai pas pu m&#8217;empêcher de tracer à vive allure, enchaînant slide sur slide et arrivant au bout bien plus vite que prévu&#8230; Certains m&#8217;ont dit en fin du cours qu&#8217;ils auraient aimé que je ralentisse mais personne n&#8217;a osé m&#8217;interrompre, dommage <img src='http://www.pierreschambacher.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p style="text-align: justify;">J&#8217;ai eu un certain nombre de questions en fin de cours, portant plus sur les cas où Flex est un bon choix que sur des points techniques, c&#8217;est bon signe d&#8217;une part sur l&#8217;explication que j&#8217;en ai faite et sur leur maturité de réflexion d&#8217;autre part. Dommage en revanche que mon expérience Flex se soit faite sur un projet confidentiel, m&#8217;empêchant de dire beaucoup&#8230;</p>
<h1 style="text-align: justify;">Le TP</h1>
<p style="text-align: justify;">Après une longue séance &laquo;&nbsp;install party&nbsp;&raquo; de Flex Builder, nous voilà partis pour un TP avec pour objectif de développer un client Twitter. Je suis assez satisfait dans le sens où beaucoup sont allé assez loin dans un petit projet qui pouvait s&#8217;avérer ardu pour un néophyte. J&#8217;ai même quelques étudiants n&#8217;ayant jamais vu Flex (ou JavaFX ni Silverlight) qui sont arrivés à terminer le client avec toutes les fonctionnalités demandées (Yohann si tu me lis <img src='http://www.pierreschambacher.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).<br />
Autre chose que j&#8217;ai remarqué, beaucoup ont préféré me pauser des questions sur la marche à suivre plutôt que de chercher sur Google, j&#8217;espère que c&#8217;était parce qu&#8217;il s&#8217;agissait d&#8217;un cours et qu&#8217;ils ont bien le réflexe de chercher sur internet ailleurs. En tout cas j&#8217;ai été bien occupé pendant ces 2h et je remercie encore Christian et Sandie qui m&#8217;ont assisté pour répondre à toutes les questions. En tout cas, coup de chance mis à part un plantage d&#8217;une configuration eclipse j&#8217;ai pu répondre à toutes les questions <img src='http://www.pierreschambacher.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h1 style="text-align: justify;">Au final, quoi dire ?</h1>
<p style="text-align: justify;">Premièrement j&#8217;ai ressenti la certaine &laquo;&nbsp;expertise&nbsp;&raquo; pour laquelle on m&#8217;a demandé d&#8217;intervenir dans le sens où je ne sais plus vraiment ce qui est évident et ce qui ne l&#8217;est pas. Le TP notamment contient de nombreuses explications de choses qui ont été lues en diagonales car évidentes, mais en revanche je ne dis rien sur le fonctionnement d&#8217;un HTTPService qui n&#8217;est pas des plus simples pour le néophyte. Si j&#8217;avais à recommencer je m&#8217;aiderais surement de quelqu&#8217;un n&#8217;ayant jamais touché à Flex pour vérifier que je n&#8217;oublie pas de parler d&#8217;un point difficile et que je ne m&#8217;étends pas sur une évidence.<br />
Deuxièmement j&#8217;ai été surpris par la rapidité de compréhension de mon auditoire. Comme je l&#8217;ai déjà dit nombreux sont ceux qui se sont bien avancé dans le TP et plusieurs l&#8217;ont terminé. Je ne pense pas que ma prestation ait quelque chose à voir là dedans, je pense tout simplement avoir eu un bon auditoire attentif et sérieux et je sais ma chance sur ce point.<br />
Troisièmement et dernièrement, un cours est quelque chose de long à préparer. Il m&#8217;a fallu une bonne demi journée pour préparer ma présentation et encore un peu plus pour le TP. L&#8217;élaboration du TP est vraiment longue du fait que l&#8217;on code quelque chose, qu&#8217;on en vérifie la robustesse, et il faut ensuite trouver comment guider les élèves à faire ce que l&#8217;on vient de faire, en les aidant un peu mais pas trop non plus. Malgré le temps que j&#8217;ai consacré à toute cette préparation, le cours était très loin d&#8217;être parfait mais j&#8217;espère que j&#8217;aurais l&#8217;occasion une prochaine fois de faire mieux. <img src='http://www.pierreschambacher.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pierreschambacher.com/blog/retour-dexperience-sur-le-cours-de-flex-a-polytechnice-sophia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stage ingénieur terminé</title>
		<link>http://www.pierreschambacher.com/blog/stage-ingenieur-termine/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=stage-ingenieur-termine</link>
		<comments>http://www.pierreschambacher.com/blog/stage-ingenieur-termine/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 18:33:23 +0000</pubDate>
		<dc:creator>Pierre Schambacher</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[3615mavie]]></category>
		<category><![CDATA[ingénieur]]></category>
		<category><![CDATA[sophia]]></category>

		<guid isPermaLink="false">http://www.pierreschambacher.com/?p=170</guid>
		<description><![CDATA[Et voilà, mon stage ingénieur sur Sophia vient de se terminer. Me voici libre sur le marché de l&#8217;emploi.
Il me restera de cette expérience des connaissances sur Flex et Java/WebObjects, mais aussi beaucoup de choses sur l&#8217;architecture logicielle, l&#8217;organisation dans les petites entreprises, la gestion de projet, les rapports humain et bien d&#8217;autre chose encore.
Je [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Et voilà, mon stage ingénieur sur Sophia vient de se terminer. Me voici libre sur le marché de l&#8217;emploi.</p>
<p style="text-align: justify;">Il me restera de cette expérience des connaissances sur Flex et Java/WebObjects, mais aussi beaucoup de choses sur l&#8217;architecture logicielle, l&#8217;organisation dans les petites entreprises, la gestion de projet, les rapports humain et bien d&#8217;autre chose encore.</p>
<p style="text-align: justify;">Je ne sais pas encore où je vais travailler. Actuellement je cherche toujours un emploi (voir mon <a title="CV Ingénieur Sophia Informatique" href="http://www.pierreschambacher.com">CV</a>).<br />
Plus de nouvelles bientôt.</p>
<p style="text-align: justify;">À venir bientôt un tutoriel très complet sur GIT, la version en ligne de mon cours sur Flex à Polytech&#8217;Nice Sophia et j&#8217;espère pouvoir me lancer et parler de mes premières impressions sur COCOA.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pierreschambacher.com/blog/stage-ingenieur-termine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expérience d’un ingénieur sur Adobe Flex</title>
		<link>http://www.pierreschambacher.com/blog/experience-d%e2%80%99un-ingenieur-sur-adobe-flex/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=experience-d%25e2%2580%2599un-ingenieur-sur-adobe-flex</link>
		<comments>http://www.pierreschambacher.com/blog/experience-d%e2%80%99un-ingenieur-sur-adobe-flex/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 17:46:54 +0000</pubDate>
		<dc:creator>Pierre Schambacher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ingénieur]]></category>

		<guid isPermaLink="false">http://www.pierreschambacher.com/?p=152</guid>
		<description><![CDATA[Après avoir utilisé le framework Flex pendant une année au cours de mon stage d&#8217;ingénieur à Polytech&#8217;Nice Sophia (voir mon CV), je souhaite donner un peu mon avis sur cette technologie, ses avantages, ses inconvénients, points forts et faibles. Comme pour WebObjects, voici une petite description pour les personnes qui ne connaitraient pas Flex.
Adobe Flex [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Après avoir utilisé le framework Flex pendant une année au cours de mon stage d&#8217;ingénieur à Polytech&#8217;Nice Sophia (voir mon <a title="CV Ingénieur Sophia" href="http://www.pierreschambacher.com/cv">CV</a>), je souhaite donner un peu mon avis sur cette technologie, ses avantages, ses inconvénients, points forts et faibles. Comme pour WebObjects, voici une petite description pour les personnes qui ne connaitraient pas Flex.</p>
<p style="text-align: justify;">Adobe Flex est un framework de développement de clients riches (ou clients lourds) compilé vers la machine virtuelle Flash. Pour les personnes connaissant Silverlight, Flex a inspiré Microsoft pour sa création. Les interfaces sont réalisées à l&#8217;aide d&#8217;un langage basé sur XML, le MXML (XAML pour Silverlight) et le comportement est écrit à l&#8217;aide du langage Action Script 3 (.Net pour Silverlight).<br />
Il ne surtout pas considérer Flex comme un outil fait pour les designeurs, c&#8217;est un framework créé pour les développeurs.</p>
<p style="text-align: justify;"><span id="more-152"></span></p>
<h2 style="text-align: justify;">Déploiement</h2>
<p style="text-align: justify;">Comme dit dans l&#8217;introduction, Flex est compilé dans un fichier SWF qui est lu par la machine virtuelle Flash. Pour lire une application Flex, la version 9 du plug-in est au minimum nécessaire, or plus de <a title="Statistiques d'installation des plugins" href="http://riastats.com/" target="_blank">95%</a> des personnes répondent à ce besoin. C&#8217;est un point assez fort du framework, surtout en comparaison avec Silverlight qui peine à passer les 30% (toutes versions confondues).<br />
Étant donné que Flex se base sur le plug-in Flash, vous bénéficiez également d&#8217;une compatibilité entre les différents systèmes d&#8217;exploitation et les différents navigateurs. Pas de mal de tête à assurer le même rendu entre IE6 sur Windows et Safari sur Mac, c&#8217;est le travail des gens d&#8217;Adobe.<br />
Pas de doute ici, c&#8217;est un gros point fort et un très bon travail d&#8217;Adobe qui donne à Flex un avantage certain sur ses concurrents directs. On pourra également remarquer sur l&#8217;utilisation de Flash la mise à disposition d&#8217;une excellente librairie pour créer des animations de l&#8217;interface qui donnent un cachet très professionnel aux applications.</p>
<h2 style="text-align: justify;">ActionScript et API</h2>
<p style="text-align: justify;">Le comportement et le business d&#8217;une application Flex est décrit dans le langage ActionScript 3. Pour le langage en lui-même, il est souple et propose un certain nombre de fonctionnalités puissantes et pratiques, je citerais en exemple la possibilité d&#8217;appeler une méthode sur une variable à l&#8217;aide de l&#8217;opérateur [] comme suit: maVariable["maMethode"].<br />
En revanche on peut vraiment reprocher à Adobe la pauvreté de l&#8217;API. Pour l&#8217;anecdote, sachez que la méthode addAll permettant d&#8217;ajouter tous les éléments d&#8217;un tableau dans un autre tableau vient d&#8217;être implémentée dans la version 3.4 du framework &#8230; Sachez également que la gestion de dictionnaire est extrêmement réduite, impossible par exemple de récupérer l&#8217;ensemble des clés d&#8217;un dictionnaire &#8230;<br />
Il est certes possible d&#8217;écrire soit-même toutes ses classes, mais d&#8217;une part on n&#8217;a pas forcément envie de coder toutes les classes de base lorsque l&#8217;on s&#8217;attaque à un projet ambitieux et d&#8217;autre part, si Adobe comble le manque un jour il faudra faire le remplacement partout.</p>
<h2 style="text-align: justify;">Modèle MVC</h2>
<p style="text-align: justify;">A première vue, Flex semble proposer une bonne architecture pour respecter le pattern Modèle-Vue-Contrôleur avec les interfaces et leur comportement décrites en MXML, des classes de comportement et des classes de modèle. Cependant en pratique, on a rapidement tendance à mélanger la vue et le contrôleur. En effet il est possible d&#8217;écrire de l&#8217;ActionScript dans le fichier MXML et la tentation est grande d&#8217;y écrire le code business de la vue.</p>
<p style="text-align: justify;">Quelques framework tentent d&#8217;imposer de bonnes pratiques (je citerais Cairngorn et Tide) mais ils ne sont pas toujours simple à mettre en place. En pratique il devient également difficile de maintenir du code propre au sein d&#8217;un projet de grande envergure. Le projet peut être découpé en modules qui sont chargés à la demande, mais on arrive assez facilement à des dépendances inter-modules ou de la recopie de code pour effectuer la même action dans deux endroits différents mais inaccessibles entre eux.</p>
<h2 style="text-align: justify;">Asynchronisme et thread unique</h2>
<p style="text-align: justify;">Le plug-in Flash est presque mono-threadé. Je dis presque car en réalité un deuxième thread existe, qui attend les réponses aux requêtes effectuées vers des adresses externes. De cette situation ressort deux choses.</p>
<p style="text-align: justify;">Toute demande de données est asynchrone. La demande est déposée vers le thread de communication qui propagera un évènement lorsque celle-ci sera complétée. S&#8217;il n&#8217;est pas dérangeant que vos données arrivent de façon asynchrone, pas de soucis mais dans le cas où vous aimeriez attendre d&#8217;avoir concrètement les informations, vous allez commencer à rencontrer des difficultés.</p>
<p style="text-align: justify;">Il est impossible d&#8217;effectuer deux actions à la fois, cela incluant le dessin de l&#8217;interface ou le traitement d&#8217;un clic souris. Par conséquent, si vous lancez un traitement lourd de calculs, l&#8217;interface sera figée. Avantage en contrepartie, vous n&#8217;avez pas du tout à vous préoccupé de problèmes de validité des données entres threads ou de deadlocks, cela est impossible !</p>
<h2 style="text-align: justify;">Bindings</h2>
<p style="text-align: justify;">Il est possible dans les interfaces MXML de réaliser des &laquo;&nbsp;bindings&nbsp;&raquo; entre une variable ActionScript et une propriété d&#8217;un élément graphique. Une fois le binding mis en place, la modification de la valeur de la variable entrainera la modification de la valeur de la propriété de l&#8217;élément graphique. Cela est très pratique puisque le mécanisme permet de réaliser à vitesse grand V l&#8217;écran de visualisation d&#8217;un objet Business en &laquo;&nbsp;bindant&nbsp;&raquo; sur ses différents attributs.</p>
<p style="text-align: justify;">Dans la version 3 de Flex quelques embuches appaissent pour mettre en place des double bindings, c&#8217;est à dire que les modifications de valeur s&#8217;effectuent dans les deux sens. En effet, le premier binding mis en place aura pour effet d&#8217;effacer la valeur d&#8217;une des deux variables avec la valeur de l&#8217;autre. Dans le cas d&#8217;un objet business et un objet graphique, il vaut mieux effacer la valeur de la propriété graphique avec celle de l&#8217;objet business et non pas le contraire &#8230; Ce petit problème a été corrigé dans Flex 4 qui sortira prochainement.</p>
<h2 style="text-align: justify;">Flex est un outil</h2>
<p style="text-align: justify;">En conclusion de l&#8217;article et avant de tirer avantages et inconvénient, j&#8217;aimerais donner un avis très subjectif sur le framework. Flex un outil jeune mais toutefois puissant pour développer rapidement les applications pour lesquelles il a été créé. Et je vais insister sur ce point.</p>
<p style="text-align: justify;">A mon idée, Flex est parfait pour des applications simples, avec peu de code business. La manière classique de travailler va être d&#8217;appeler un WebService ou une page Web, parser les résultats pour remplir des variables sur lesquelles l&#8217;interface est bindée. Le résultat sera obtenu rapidement, propre, et joliment animée.</p>
<p style="text-align: justify;">En revanche, Flex n&#8217;est pas fait pour une lourde application avec de nombreuses implications de code business entre les écrans et des grappes d&#8217;objets à récupérer, modifier, renvoyer, etc. Pour avoir tenté d&#8217;utiliser le framework pour ce type d&#8217;application, je peux dire qu&#8217;on passe plus de temps à lutter contre Flex qu&#8217;à lutter contre les difficultés de l&#8217;application elle-même.</p>
<p style="text-align: justify;">Comme beaucoup d&#8217;autres framework, Flex est un outil. Flex est un tournevis cruciforme. Si votre application est faite de vis cruciformes, ce sera un excellent outil et vous allez aboutir rapidement à un résultat de qualité. Si en revanche vous devez fabriquer une chaise avec des clous, vous êtes condamné à taper sur les clous avec le manche, et au final vos clous seront plantés de travers, votre chaise sera bancale et s&#8217;effondrera à la troisième personne qui tentera de s&#8217;assoir dessus et enfin vous vous serez fait mal à la main.</p>
<p style="text-align: justify;">Mais assez parlé et voyons le bilan avantages/inconvénients</p>
<h2 style="text-align: justify;">Avantages</h2>
<ul>
<li>Compatibilité OS/Navigateur</li>
<li>Plug-In flash très répandu (95%)</li>
<li>Animations simple à utiliser et très classes</li>
<li>Pas de problématique de programmation concurrente</li>
<li>Mécanisme de binding très pratique</li>
</ul>
<h2 style="text-align: justify;">Inconvénients</h2>
<ul>
<li>Inconvénients de Flash (vous devriez les trouver facilement sur d&#8217;autres sites)</li>
<li>Pauvreté de l&#8217;API ActionScript</li>
<li>Trop grande facilité de mélanger Vue et Contrôleur</li>
<li>Impossibilité d&#8217;utiliser la programmation concurrente</li>
<li>Obligation de récupérer les données de façon asynchrone</li>
<li>Doubles bindings laborieux (résolu normalement dans Flex 4)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pierreschambacher.com/blog/experience-d%e2%80%99un-ingenieur-sur-adobe-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expérience d&#8217;un ingénieur sur WebObjects</title>
		<link>http://www.pierreschambacher.com/blog/experience-dun-ingenieur-sur-webobjects/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=experience-dun-ingenieur-sur-webobjects</link>
		<comments>http://www.pierreschambacher.com/blog/experience-dun-ingenieur-sur-webobjects/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 16:04:21 +0000</pubDate>
		<dc:creator>Pierre Schambacher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[ingénieur]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">http://www.pierreschambacher.com/?p=141</guid>
		<description><![CDATA[Utilisant WebObjects depuis maintenant 6 mois dans le cadre de mon stage ingénieur sur Sophia (voir mon CV), j&#8217;aimerais revenir sur cette expérience et donner mon avis sur cette technologie assez peu connue. Pour ceux qui ne connaitraient que de nom ce framework, en voici une petite description.
WebObjects est un framework initialement développé en Objective [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Utilisant WebObjects depuis maintenant 6 mois dans le cadre de mon stage ingénieur sur Sophia (voir mon <a title="CV ingénieur WebObjects Sophia" href="http://www.pierreschambacher.com/cv" target="_self">CV</a>), j&#8217;aimerais revenir sur cette expérience et donner mon avis sur cette technologie assez peu connue. Pour ceux qui ne connaitraient que de nom ce framework, en voici une petite description.</p>
<p style="text-align: justify;">WebObjects est un framework initialement développé en Objective C par la société NeXT de Steve Jobs qui sera ensuite rachetée par Apple. Il est constitué d&#8217;une couche basse d&#8217;abstraction de la base de donnée appelée EOModel, d&#8217;une architecture de gestion de cache et de persistance et d&#8217;un moteur de template. WebObjects passera progressivement d&#8217;Objective C à Java vers l&#8217;an 2000. Bien que différents par de nombreux points, il est comparable aux technologies J2EE.</p>
<p style="text-align: justify;">Je tiens à signaler que mes commentaires sont faits sur la version 5.3 de WebObjects et je ne sais pas si certaines choses n&#8217;ont pas été corrigées en version 5.4.</p>
<p style="text-align: justify;"><span id="more-141"></span></p>
<h2 style="text-align: justify;">Coût de formation et cadre de développement</h2>
<p style="text-align: justify;">Soyons assez clair, le coup d&#8217;entrée de WebObjects est assez élevé. Le framework a été pensé pour réaliser des projets d&#8217;entreprise et vous ne pourrez pas sortir une page de démonstration en moins d&#8217;une heure comme le proposent des plateformes de développement comme Google App Engine. En revanche, une fois formé à l&#8217;architecture logiciel vous disposerez d&#8217;un cadre de programmation assez stricte dans la forme, mais souple dans les possibilités. Comprenez que vous pourrez faire à peu près n&#8217;importe quoi, mais pas n&#8217;importe comment. À mon sens, c&#8217;est un avantage puisque vous êtes à peu près certain que les personnes utilisant WebObjects vont travailler relativement proprement, contrairement à d&#8217;autres technologies où il est possible de faire tout et n&#8217;importe quoi, surtout n&#8217;importe quoi.</p>
<h2 style="text-align: justify;">Tenue de charge et modularité</h2>
<p style="text-align: justify;">WebObjects est designé pour être capable de gérer de grandes charges, aussi les données sont toujours chargées progressivement au moment où elles sont réellement nécessaires. Au niveau du fonctionnement lui-même, le framework est construit autour de dictionnaires de données. Par exemple pour les attributs d&#8217;un objet, les getters vont simplement chercher la valeur dans un dictionnaire à partir du nom de l&#8217;attribut. C&#8217;est de ce mécanisme que vient toute la souplesse de WebObjects puisqu&#8217;il est possible de faire évoluer dynamiquement le modèle pendant l&#8217;exécution. Même si les occasions d&#8217;utiliser une telle possibilité sont assez rares, elles sont quasiment impossible à réaliser autrement.</p>
<h2 style="text-align: justify;">Mélange d&#8217;API</h2>
<p style="text-align: justify;">Comme je l&#8217;ai dis dans mon introduction, WebObjects reposait initialement sur le langage Objective C, mais a été migré vers le langage Java depuis plusieurs années maintenant. Cependant les choix qui ont été faits me laissent quelque peu sceptiques. En effet afin que les personnes ayant travaillé avec l&#8217;Objective C ne perdent pas leurs connaissances acquises, les classes de  base de NeXT ont été portées en Java. Un ingénieur d&#8217;expérience sur l&#8217;API Java sera donc un peu perdu face aux NSArray, NSMutableArray et autres NSDictionnary. Pire encore, ces classes implémentent des interfaces de l&#8217;API Java, mais n&#8217;implémentent pas les méthodes qu&#8217;elles apportent, se contentant de propager une exception ! Assez perturbant donc et pouvant se révéler source de surprises.</p>
<p style="text-align: justify;"><strong>[MISE A JOUR]</strong><br />
On me signale que le problème des exceptions sur les méthodes ont été corrigé en version 5.4 sauf dans les cas où il y avait une raison. Je m&#8217;explique, en WebObjects il éxiste deux types de tableaux, les NSArray en lecture seul et les NSMutableArray en lecture écriture. Bien évidemment la méthode ADD n&#8217;a aucun sens dans un NSArray qui ne supporte que des GET. En revanche la méthode ADD ne NSMutableArray ne demande plus d&#8217;utiliser à la place la méthode addObject.<br />
Il reste toutefois que quelqu&#8217;un ayant utilisé un certain temps les classes de la JRE de base, ArrayList et autres, aura besoin d&#8217;un petit temps d&#8217;adaptation.</p>
<h2 style="text-align: justify;">Trouver des personnes</h2>
<p style="text-align: justify;">Abordons finalement un point assez critique: les ressources. Il sera difficile à la plupart des personnes ayant des années d&#8217;expérience sur des plateformes J2EE de se former à WebObjects en raison des différences conceptuelles et à l&#8217;API s&#8217;écartant de celle de Java. Le coup de formation est assez élevé et l&#8217;intégration à des processus d&#8217;entreprises comme Maven, bien qu&#8217;existant, peut s&#8217;avérer coûteuse en temps.<br />
En comparaison d&#8217;autres framework, WebObjects souffre d&#8217;une très faible documentation. Le site d&#8217;Apple propose une documentation technique, mais très peu d&#8217;autres sites proposent des exemples ou des explications différentes de la version officielle. On se retrouve donc facilement le bec dans l&#8217;eau devant un problème dont la solution n&#8217;est pas documentée sur le site d&#8217;Apple. Une solution existe: la mailing list qui est fréquentée par des experts de la technologie, mais on ne peut évidemment pas abuser et questionner ces personnes en permanence.<br />
Il est très profitable d&#8217;avoir au sein de son entreprise une personne expérimentée en WebObjects donc, cependant il s&#8217;agit d&#8217;une ressource rare. Lors d&#8217;un recensement récent, 800 développeurs ont été dénombrés dans le Monde, dont 40 en France. Autant dire qu&#8217;il est difficile de se procurer un &laquo;&nbsp;expert&nbsp;&raquo; dans le domaine, sachant que connaissant la technologie, je ne me considère pas du tout comme un expert, mais un simple utilisateur.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">En conclusion, voici un petit récapitulatif de ce billet en avantages/inconvénients.</p>
<h2 style="text-align: justify;">Avantages</h2>
<ul>
<li>Framework avec architecture</li>
<li>Développement propre</li>
<li>Flexible</li>
<li>Pensé pour tenir la charge</li>
</ul>
<h2>Inconvénients</h2>
<ul>
<li>Peu de ressources et très peu d&#8217;experts</li>
<li>Mélange d&#8217;API Java/Objective C</li>
<li>Manque de documentation tierce</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pierreschambacher.com/blog/experience-dun-ingenieur-sur-webobjects/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
