ALT.Net et l’orienté objet
La dernière réunion ALT.Net a été présentée par Frédéric Fadel sur le sujet: L’orienté objet : erreur historique ou la voie à poursuivre ?
Je remercie Freddy pour sa présentation et Octo pour leur accueil.
En résumé, nous avons évoqué les problèmes avec les langages objets, et ce qui nous fait perdre en productivité.
Pour cela, il faut définir exactement ce qu’est l’Objet: d’après Freddy : Héritage, Composition, Polymorphisme.
D’après lui, l’héritage est un handicap, la composition est une bonne chose, le polymorphisme aussi.
Lire plus…
Java for iPhone
Pour les fans de .Net et de l’iPhone, vous savez sans doute que vous pouvez vous éclater avec MonoTouch.
J’en profite pour dire que JB Evain en parlera aux TechDays.
La particularité et le défi de MonoTouch, c’est que le processeur de l’iPhone ne supporte pas une opération nécessaire à la compilation à chaud (JIT), qui est la base des langages sur une VirtualMachine (.Net et Java). L’application Mono est alors compilée nativement, avec une suppression des bibliothèques du framework inutilisées.
Et Java alors, est-ce que la communauté compte faire quelque chose?
Et bien une startup, Flexycore, l’a déjà fait: iSpectrum! Et le produit est gratuit pour les projets Open-Source!!! Ce qui n’est pas le cas pour MonoTouch.
Voici un aperçu de ce qui est possible:
Certes, la démo n’est pas « bandante », mais derrière, il y a le support de J2ME, du JavaScript, les API de l’iPhone (comme le GPS) et bientôt l’API OpenGL ES.
Est-ce le retour de Java pour les jeux mobiles?
Vous êtes plutôt Microsoft ou Google?
Cela fait longtemps que vous vous posez la question, et à l’aide de notre questionnaire réalisé par de grands psychologues, vous allez enfin connaitre la réponse!
Ce matin, aux alentours de 5h30, vous vous levez pour allumer votre portable qui démarre sous…
- Windows bien sûre
– Google chrome OS, c’est très tendance et vous avez juste besoin de surfer
Tiens, on dirait que vous n’êtes pas le seul debout à cette heure! Vous commencez à chatter sur…
![]()
– GTalk
– MSN
– une client multi-protocole… ah si vos amis pouvez switcher de MSN vers GTalk…
On vous a parlé de « keyboard cat » sur le net, vous ouvrez alors pour surfer…
– Internet Explorer, c’est le meilleur
– Google Chrome, c’est plus rapide
Vous recherchez l’info grâce à…
– Google évidement
– Yahoo forever
![]()
– Bing ça déchire
On vous parle d’un coin de paradis sur terre. Vous allez chercher l’adresse sur…
A votre tour, vous voulez publier vos photos de vos dernières vacances. Vous les publiez sur…
– Flickr
![]()
– Windows Live
– Picasa Web Album
C’est le moment de vérifier vos Emails, vous allez donc sur…
– Windows Live (Hotmail)
– GMail
![]()
– Tout ça c’est « Has been », vous êtes déjà sur Google Waves
Un mail vous parle de votre prochaine réunion ALT.Net. Vous vérifiez votre disponibilité sur…
– Toujours Windows Live
– Google Calendar
Ouf, quelle mâtiné ! Il est temps d’aller bosser. D’ailleurs, vous aimeriez bien changer de boulot, et vous rêvez secrètement d’être employé chez…
– Microsoft rules the World!
– Google c’est trop Hype!
A force de surfer le matin, vous allez être en retard au boulot. Votre boss vous le rappelle sur votre téléphone qui est un…
– HTC Hero/Dream ou Nexus… n’importe du moment qu’il y a Android dessus
– HTC Touch/Diamond ou autre avec Windows Phone, c’est une valeur sûre
Vous voila à la fin de la journée, vous pouvez enfin rentrer chez vous et bosser sur votre projet perso OpenSource qui est hébergé sur…
Vous êtes tendance, et vous faites du Cloud Computing. Pour vous, la meilleure plateforme c’est…
– ASP.Net sur Windows Azure, le C# est le meilleur langage du monde
– GWT sur GoogleApp Engine, Java reste une valeur sûre, mais vous attendez avec impatience la sortie de Noop
Vous en profitez pour mettre à jour votre CV. Vous utilisez pour cela…
– Un bon vieux Microsoft Office, Word il n’y a que ça de vrai
– L’avenir est sur le net, vous préférez Google Doc
![]()
– Word c’est bien, mais Office Live c’est mieux!
Il est déjà 1h du mat’, il faut vous coucher. Vous commencez à faire des rêves…
– Noir et Blanc, en costume/cravate
– Tout en couleur, avec votre T-shirt de Hippie « Geek inside »
Comptabilisez vos réponses, et grâce à nos algorithmes mathématiques très complexes, la science et la psychologie vont déterminer de quel côté vous vous situez!
Hudson + Gendarme!
Petit billet pour vous annoncer fièrement la sortie de la version 0.7.5 du plugin « Violation » pour Hudson: http://wiki.hudson-ci.org/display/HUDSON/Violations
J’y ai notamment contribué pour ajouter le support de Gendarme, l’outil d’analyse de code de Mono (équivalent à FXCop/StyleCop).
J’aurais aimé y contribué plus que cela (si j’avais eu le temps…) pour par exemple corriger les bugs sous IE ou les bugs sur les rapports FXCop/StyleCop avec des chemins relatifs.
Ces corrections de bugs me serrait très utiles dans le cadre de mon projet chez mon Client, puisque nous avons fait le choix d’utiliser Hudson comme plateforme d’intégration continue « multi-techno » (Java/C#/C++/Php).
Même si les développeurs Java exploite Hudson avec Sonar pour avoir un beau Dashboard sur des métriques de codes sources, nous exploitons les plugins d’Hudson pour les métriques .Net. En effet, le plugin Violation nous permet d’avoir des graph et des seuils d’alerte sur les rapports FXCop & Style. Nous combinons ça au plugin de rapport de tests NUnit, le plugin de rapport de tests Selenium, ainsi que le plugin Warning pour analyser les Warnings/Error à la compilation, et le plugin Task Scanner pour ne pas oublier de TODO dans le code
En plus de cela, on génère un rapport NCoverExplorer (HTML) accessible directement depuis Hudson.
Et vous? Comment faites-vous vos métriques dans l’intégration continue? Est-ce que vous connaissiez Gendarme et est-ce que vous l’avez déjà utilisé?
Spring.Fluent
Certains le savent déjà, je suis un accro à Spring.Net depuis ses débuts.
En fait, je suis devenu amoureux de Spring Java dès sa sortie… c’était les débuts de l’IOC.
Spring est devenu un framework « standard de facto » dans le monde Java. Il inclut bien plus que de l’IOC: AOP, Web MVC, etc.
Aujourd’hui, Spring c’est aussi un serveur « JEE » d’un nouveau genre. Puis il y a eu l’acquisition d’Hyperic, puis c’est au tour de VMWare d’acquérir Spring…
Bref, c’est une vrai success story dans le monde Java.
Quand à Spring.Net, ce n’est pas encore ça. Le projet Castle est même lui plus avancé: framework IOC, AOP, Web MVC, etc.
Je crois que Castle était en avance sur son temps dans l’écosystème .Net, c’est peut-être la raison pourquoi il n’a pas pris la même ampleur que Spring Java.
Mais j’ai foie en Spring! Ce framework m’aide tout les jours à réaliser des applications d’entreprises complexes et robustes.
Mais une chose rebute TOUT développeur .Net: la configuration XML.
Le XML c’est verbeux, le XML ça ne se compile pas, on n’a pas intellisense avec le XML…
Bref, plein de raison de préférer des frameworks comme AutoFac ou Ninject qui propose une approche de configuration par code, voir à la sauce « fluent ».
A ça, je réponds que:
- la verbosité n’est pas dramatique quand on a la complétion. Je remarque aussi que la verbosité est reproché avec des fichiers XML de 1000 lignes… ce qui est tout aussi vrai avec un code source C# de 1000 lignes.
- la complétion et la vérification du XML peut être faite à l’édition ou la compilation, c’est ce que fait Spring IDE sous Eclipse, mais pas de support VisualStudio pour le moment (même si Resharper arrive à la rescousse)
- on PEUT faire du Spring sans XML, même si les gens de Spring.Net n’ont pas été très cool sur l’API…
Comme l’API de Spring.Net est un peut obscure et pas très documenté sur son utilisation en dehors d’une configuration XML, j’ai décidé de faire une petite surcouche pour facilité l’écriture et que ce soit suffisamment intuitif pour ne pas avoir besoin d’une doc.
De cette volonté est né le projet Spring.Fluent!!
C’est un projet OpenSource, ce qui veut dire que je ne vous interdit pas de m’aider à réaliser mon rêve ![]()
Ceci-dit, un projet similaire existe déjà: http://code.google.com/p/fluent-spring/
Alors pourquoi faire un fork? Car il m’a fallut 1 journée pour faire autant et même plus que ce le projet propose, et à ma façon qui me plait rien qu’à moi!
De plus, Mark Pollack à l’annonce de Spring.Net 1.3, a prétendu que la configuration « par code Fluent » sera un point de la prochaine version, à savoir la 2.0: http://www.infoq.com/interviews/Spring.NET-1.3-2.0
Je souhaite à Mark et toutes l’équipe de Spring.Net de réussir, en attendant j’ai ma propre solution. Et si elle peut les inspirer pour Spring.Net 2.0, ce sera formidable. C’est pourquoi je pense ce cet « effort » n’est pas perdu: il n’est jamais inutile de contribuer au monde OpenSource et à faire connaitre ses opinions.
Google serait-il le future papa de Java?
C’est la première question que je me suis posée en lisant l’article: http://blog.developpez.com/adiguba/p8101/java/google-noop/
Ce qui est sûr, c’est que Google investi pas mal dans Java: GWT, la JVM d’Android, et maintenant Noop: http://code.google.com/p/noop/
Noop est une proposition d’un nouveau langage pour la JVM.
Certains prétendent que le langage Java va mourir, qu’il est coincé et n’évoluera plus, et que son successeur peut être Scala.
Moi qui suit fan de Groovy, je suis heureux de voir que SpringSource prennent en charge son évolution ( http://www.springsource.com/products/grails )
Bref, la JVM n’est pas prête de mourir! Les alternatives à Java se font sérieuses, et Google est maintenant de la partie!!
Noop se veut aussi un langage offrant le meilleur de Java, dont évidement l’API GoogleCollections: http://code.google.com/p/noop/wiki/Features#Good_stdlib
Comme je l’avais dit dans nos discutions Alt .Net, les langages ne se contentent plus d’offrir des mot-clés pour raccourcir le code, ils offrent maintenant des mot-clés pour faciliter l’utilisation de Framework:
- les mot-clés de Linq facilite l’utilisation du framework du même nom
- des mot-clés permettent d’utiliser aisément le framework de parallélisation PFX: http://prismwiki.codegear.com/en/Asynchronous_Statements
- d’autres mot-clés permettent de faire du « TDD »: http://en.wikipedia.org/wiki/Spec_Sharp
Google propose avec Noop des facilités de langages pour exploiter les frameworks de tests unitaires, le mocking, l’IOC, etc..
Alors je dis et je re-dis: Vive la JVM, vive les polyglottes et vive Google!
(J’en profite pour faire découvrir aussi le langage http://fandev.org/ qui est très orienté multilangages et Web)
Intégration Continue en .Net
Bonjour les fans de .Net et d’intégration continue!
J’affectionne Hudson en ce moment, et je l’applique de plus en plus pour .Net. Je l’utilise en ce moment pour analyser le code et « gronder » les membres du projet qui codent « mal ».
A défaut d’avoir un plugin Sonar pour .Net, Hudson et son plugin Violations fait déjà pas mal de bon rapports.
Ce plugin supporte pas mal d’outils comme FXCop ou StyleCop. Concernant ce dernier, le plugin bug avec les chemins absolus et les « \ », j’aimerai bien le corriger mais je n’ai pas trop le temps ![]()
J’ai regardé les sources de ce plugin, et ça semble assez simple.

En ce moment c’est bien rouge… mais ça peut aussi être jaune ou vert
J’ai vu que TeamCity avait sa propre tâche « Duplicates Finder« , mais ça n’a pas l’air d’être indépendant.
NDepend est magique et répond à ce besoin, mais il est payant, et non supporté par Hudson.
J’ai eu aussi envie de tester Gendarme. Encore une fois, si le temps me le permet, j’ajouterai bien le support des rapports Gendarme dans le plugin Hudson-Violations. En attendant, je peux toujours convertir le XML de Gendarme en XML FXCop (je n’ai pas encore étudié la faisabilité).
Mais le constat est que ces outils sont matures en Java, et les « pâles copies » en .Net ne sont pas à la hauteur (comme CC.Net par exemple).
L’investissement est très variable entre les différents projets (Violation, Sonar, etc), mais je suis convaincu qu’il en vaut le coup.
Hudson est-il un bon choix d’investissement?
Ne faut-il pas mieux privilégier l’investissement sur Sonar pour les rapports d’analyse?
Et la question la plus important: y a-t-il des personnes motivées par ça?
Je pense même que ça mérite un « meta-projet opensource » avec son site web, qui regroupe les outils de build et d’analyses de code en .Net, afin d’offrir une solution « packagée » pour .Net.
ALT.Net sur l’AOP
Je vous invite à venir à la session ALT.Net sur l’AOP présenté par Romain Verdier le Mercredi 17 juin.
Pour vous mettre dans le bain et vous permettre de vous informer sur le sujet avant la réunion, voici un exemple d’AOP super simple avec Postsharp : http://bit.ly/71pej
Dans le cadre de mon projet actuel, l’AOP aurait pu m’aider à décorer les méthodes qui nécessitent de l’impersonation (accès à des ressources critiques qui nécessite donc un compte privilégié) ou à gérer la sécurité+log+erreurs au niveau des WebServices (CheckClientCertificate+Log+SoapException).
J’utilise souvent l’AOP avec Spring.net, qui utilise la méthode « création de proxy dynamiquement » ou appelé aussi « dynamic weaving ».
Cette méthode consiste à créer des proxy dynamiquement qui encapsulent l’objet cible en ajoutant le code des aspects aux bons endroits. La limite de l’approche avec Spring.Net est que l’on perd en performance à la création de ces proxy, on ne peut exposer qu’une seule interface, et cela oblige à utiliser Spring.net pour se faire injecter l’instance.
Postsharp lui, fait tout à la compilation, c’est ce que l’on appelle le « static weaving ». L’avantage est que l’on gagne en performance, on ne dépend pas de la façon d’instancier la classe, et la manière d’ajouter des aspects se fait par code (par attributs) se qui peut s’avérer plus agréable que de les déclarer dans un XML (ce que fait Spring.net). L’inconvénient est que cela oblige à posséder le code source de l’objet à « aspectiser » et de le compiler avec les aspects.
On peut citer AspectDNG qui utilise aussi le « static weaving ».
Aspect# utilise le « dynamic weaving » tout comme Spring.net. Ils utilisent tous la réflexion à l’aide de System.Reflection.Emit (fourni par défaut avec .Net) pour créer les proxy dynamiquement. Aspect# le fait par l’intermédiaire de Castle.DynamicProxy (utilisé aussi par NHibernate ou RhinoMock).
Le débat à la session ALT.Net va certainement porter sur Réflexion vs Introspection: la réflexion est moins bonne en performance que l’introspection, car elle nécessite de charger tout le code en mémoire, alors que l’introspection analyse directement l’IL. Voici un petit post sur le débat: http://bit.ly/2xq6aB
Romain a travaillé sur Mono.Cecil.Decompiler avec Jean-Baptiste Evain, il va donc sans doute nous parler des avantages de l’introspection avec Mono.Cecil. Voici un autre post sur le sujet sur le blog de JB.
Voila, j’espère que vous serez ainsi mieux armés pour assister à la session
ALT.Net: Adaptive Object Modeling
Mardi 19 Mai a eu lieu la session ALT.Net sur l’Adaptive Object Modeling présenté par Sébastien Ros.
Je voulais simplement dire que j’étais content d’assister à cette rencontre : la présentation de Sébastien était courte et intéressante (et drôle en plus !). En résumé : le type de présentation qui ne nous laisse pas le temps de s’endormir.
Cela nous a aussi permis de débattre de divers sujet à la fin de la présentation : nous avons voté pour des sujets qui nous intéressent, puis nous nous somme divisé en 2 groupes pour en débattre. Cette formule nous permet de changer de groupe si le sujet finit par nous ennuyer ![]()
Bref, j’ai bien aimé cette rencontre qui revient sur l’esprit des premières. En plus, Octo nous a bien accueillis avec de succulents petits-fours :p
+
= 
Jaxer
Aaaaah, je me souviens du bon vieux temps ou je découvrais le développement Web, lors de mon premier stage d’étude, sur une application PHP…
J’avais déjà découvert les joies des incompatibilités des navigateurs: à l’époque, Netscape était le navigateur officiel, et je me battais pour qu’on utilise IE5…
Je m’étais amusé à copier/coller des petits bouts de javascript à droite à gauche, sans trop comprendre ce qu’ils faisaient, afin d’avoir une interface plus user-friendly…
J’étais en admiration sur des applets Java beaucoup plus ergonomiques que mes bouts de Javascripts…
Et je bavais sur des sites entièrement Flash, magnifiques, et performants (quand c’était bien fait…)
Puis j’ai entendu parler de DHTML: « la grosse blague », ce sont les mots que j’ai sans doute prononcés quand j’ai su que ce n’était qu’un nom marketing pour le couple Html+Javascript.
Aujourd’hui on parle de Web 2.0 ou d’Ajax. On parle aussi d’Adobe Air, ou de Silverlight (on va éviter de parler de JavaFX). Finalement, pas de grosse révolution, mais plutôt une « évolution ».
Lire plus…





