Episode 4 : Mathias découvre Spring (et un peu plus OSGI)

Dans l’Episode 2, je vous ai parlé de ma découverte de J2EE.
Si j’ai été émerveillé par la plateforme, j’avoue qu’elle était assez complexe.

C’est alors que la lourdeur des framework J2EE a donné naissance à une alternative qui s’est voulu plus simple : Spring.

J’aime bien Spring, je pense que vous le savez déjà :)
C’est pour moi en quelque sorte l’équivalent de l’esprit d’ALT.Net, mais en Java.

Ce fut alors la mode des IOC, et de l’approche orienté POJO. Quand j’ai découvert cela, je me suis rendu compte à quel point le framework d’Eclipse RCP pouvait être compliqué…
La gestion de dépendance et de publication/consommation de service devenaient extrêmement simple.

La ou Spring n’était qu’un framework, « SpringSource DM Server » est, quand à lui, un vrai serveur J2EE mais avec une architecture complètement différente de ses concurrents : il est basé sur le même moteur OSGI qu’Eclipse !

L’installation de nouvelles applications vous semble pénible ? SpringSource DM Server offre un « AppStore » pour installer un nouveau service et ses dépendances en 2 cliques!

Pour ceux qui ont lu mon billet sur WebMatrix, la fonctionnalité n’est pas tout à fait la même que c’elle du produit Microsoft.Vous pouvez ici installer bien d’autres choses que des applications Web: des ESB, des serveurs Web (car oui, en Java, on a le choix entre Tomcat, Jetty et autres), etc.
Vous voulez installer un serveur de Messaging ? Installer ActiveMQ en quelques cliques : http://www.springsource.com/repository/app/bundle/version/detail?name=com.springsource.org.apache.activemq&version=5.3.0

Vous trouvez plus d’infos sur http://www.springsource.com/products/dmserver/repository


En plus de tout ces avantages, SpringSource DM Serveur offre un interface d’administration d’un pure merveille, j’en bave quand je vois que Microsoft reste attaché à sa MMC…
Et comme si ça ne suffisait pas, SpringSource ont racheté Hyperic qui est une appli Web de Monitoring applicatif, ce qui rend l’administration de votre serveur  encore plus professionnel.

Petite conclusion:

  • l’IOC c’est cool, vive l’approche POJO
  • OSGI c’est de la bombe. Cela permet aussi bien de gérer des plugins dans un IDE, que des middleware dans un serveur d’applications
  • l’installation d’une plateforme applicative doit être simple et facile, autant que de lancer un Setup de EasyPHP ou de cliquer sur un lien d’un “AppStore”
  • vive les interfaces Web d’administration, à mort la MMC

Episode Bonus: Microsoft m’a entendu? ou pas.

J’interromps mes épisodes car la news est quand même de taille: Microsoft lance WebMatrix

J’avais dit qu’il manquait un équivalent à EasyPhp pour .Net, et on m’a fait remarqué d’un “IIS Express” pointait le bout de son nez…
WebMatrix est donc un gros Setup qui t’installe sur ta machine un IIS Express, un base de donnée Express, et un IDE Express (et d’autres trucs Express).

Je n’ai pas encore eu le temps de tester tout ça, mais on voit déjà la grosse machine commerciale!
Le site Web est très bien fait, avec plein de mots à la mode: D.R.Y, MVC, TDD, une petite screenshot de NerdDinner, tout pour plaire :)

Il y a un gros effort sur l’aspect “Communauté”, on peut facilement installer une application Web, .Net/PHP/autres, en quelques clicks.
A noter aussi le gros effort sur la documentation, tutoriel et compagnie,  pour que tout le monde puisse “faire du Microsoft rapidement”.

J’ai l’air de ne pas aimé? Ça se voit?

Bon, premièrement, je suis sous Ubuntu à cet instant précis ou je vous écris.
Ensuite, les vidéos Silverlight ne fonctionnent pas: Moonlight crash sous Google Chrome, et sous Firefox la vidéo ne se lance pas.
Enfin, si vous faite joue joue avec WebMatrix, vous allez vouloir déployer ça quelque part…
Ça tombe bien, Microsoft recommande pleins de “Hosting partner” avec du Windows Server 2008 R2… et du SQLServer bien sûr.

Revenons à EasyPHP.
Avec EasyPHP, vous avez un vrai Apache (pas une version Express) avec un vrai MySQL (pas une version Express).
Il existe aussi bien sûr des “EasyPHP like” avec du PostgreSQL, tout est possible.
Vous pouvez ensuite héberger cela sur du Windows si vous voulez… ou du Linux.

Bon, c’est vrai, EasyPHP n’installe pas un IDE, il va falloir en trouver un gratuit.
Ca doit être plutôt rareun IDE gratuit, d’après ce que l’on voit sur le site de WebMatrix:
Je cite: “Cerise sur le gâteau, c’est entièrement gratuit.”

Allez, parce-que je suis gentil, voici 3 IDE PHP gratuit:

Le gros + de WebMatrix, c’est quand même de pouvoir télécharger n’importe quel application Web (ASP.Net et PHP) en quelques clicks. La, j’avoue, rien à dire.

Je vous laisse maintenant apprécier  la grandeur commerciale de Microsoft, je pense qu’ils vont réussir leur coup avec WebMatrix.

Le logiciel libre et gratuit pour tous

Cela fait un moment que je suis amoureux du logiciel libre… même si je fais trop souvent des infidélités à ma petite Ubuntu…

Sushi aussi aime Tux

Dans le monde actuel, il est devenu important, pour trouver du travail, de posséder une adresse Email, d’avoir le PDF de son CV et de pouvoir accéder aux offres d’emploies sur Internet.
A une époque, j’allais tous les jours à l’ANPE pour utiliser leur PC et ainsi pouvoir avoir une chance dans ce contexte.

Pour d’autres, ça peut être très difficile d’accéder à ce genre de choses, car très coûteux.
Sans compter l’éducation et le divertissement des enfants: l’ordinateur est devenu indispensable.

Le 20 Juin, je me suis promené au grand salon Emmaüs à Porte de Versailles.
Il y avait bien sûr plein de meubles, livres, vêtements, etc. Mais il y avait aussi des ordinateurs, certes vieux, mais encore très utiles.

Certaines distributions Linux ont d’ailleurs fait le choix d’optimiser les performances et d’adopter des outils léger afin de convenir à du vieux matériel: tout le monde n’a pas la dernière machine dernier cris, et tous les geek ont déjà essayé de recycler leurs vielles machines en serveur Linux :)

Pour des distributions Desktop légères, on peut citer http://www.fluxbuntu.org/ et http://www.xubuntu.org/ , mais il en existe bien d’autres…

Même si ces versions sont dites “légères”, cela ne veut pas dire qu’elles sont dénuées de jeux! Linux n’est pas connu pour être la plateforme des gamers, mais on peut toutefois s’amuser avec.
Il y avait d’ailleurs une LAN avec rediffusion sur vidéo-projecteur au milieu du salon Emmaüs :)

Concernant l’éducation, la solution Skolelinux.fr était proposée comme alternative peu coûteuse, du serveur jusqu’au desktop. Là aussi, Linux veut pouvoir s’offrir à n’importe qui avec tous les outils nécessaires à la vie d’aujourd’hui.

Je ne peux que dire: Vive le logiciel libre!

Episode 3 : Mathias découvre Eclipse (et un peu OSGI)

Dans l’épisode 2, je vous ai dit à quel point les serveurs J2EE pouvaient être complexe dans la gestion d’application.
Il en est de même dans le monde des IDE avec la gestion des plugins.

Tout en étudiant J2EE, je suis tombé amoureux de mon IDE Java préféré : Eclipse. Pas seulement pour sont utilisation, mais aussi pour son architecture.

En effet, la réalisation de plugins pour Eclipse se fait de manière ultra puissante. A tel point que le « noyau » d’Eclipse peut être complètement extrait pour faire sa propre application qui n’a rien à voir avec un IDE : c’est le framework RCP (Rich Client Platform).
J’ai d’ailleurs à l’époque réalisé une application RCP pour la gestion de budget d’achat de livres pour les bibliothèques.

Malheureusement, la pauvreté des composants graphique en Java faisait du tors à cette plateforme.
Mais je restais subjugué par le moteur de plugins :

  • Les plugins sont isolés afin que si un plugin crash, les autres continuent leur vie
  • Les plugins sont aussi isolé coté sécurité : un plugin ne peut pas accéder aux codes d’un autre plugin si ce dernier ne l’a pas explicitement rendu « publique »
  • Les plugins peuvent publier et consommer des services, avec un model très élégant
  • Il y a une gestion de dépendance entre les plugins, avec la prise en compte des versions
  • L’installation et la mise à jour des plugins se fait d’une simplicité déconcertante

En fait, si la gestion des plugins est si balaise c’est car elle provient d’un standard de « développement par composant » : OSGI.

L’alliance OSGI est un organisme de personnes qui se mette d’accord ensemble sur des specs concernant les frameworks OSGI. C’est encore la que Java écrase .Net par sa maturité : il n’y a pas de monopole, il y a bien plusieurs acteurs derrière un « standard » ouvert qui va connaitre de multiples implémentations.

OSGI est donc un framework complexe de gestion de « modules » qui exposent des « services ». N’hésitez pas à lire le WIKI qui explique ça très bien : http://en.wikipedia.org/wiki/OSGi

En conclusion, Eclipse est une plateforme riche en plugins grâce au coté Open-Source de l’IDE, à l’API de plugins très bien faite mais aussi à l’aide du plugins pour développer des plugins :)

Qu’en est-il du coté .Net? VisualStudio a-t-il le même succès concernant le développement ce plugins? Offre-t-il une architecture de plugin aussi puissante? On verra ça dans un autre épisode ;)

Episode 2 : Mathias découvre J2EE

En sortant de mes études, je me suis rapidement retrouvé dans le moule en adoptant Java. J’ai alors découvert les serveurs « conteneur de servlets » ou serveur J2EE, ce qui était quand même plus puissant que PHP…

Je vous ai parlé d’EASYPHP, avec lequel l’utilisateur avait une interface Web pour administrer sont serveur Apache: en 2 clicks n’importe qui peut créer un nouveau site web, sans connaitre le fameux “apache.conf”

Je suis fondamentalement contre la MMC de Windows, et je pense que IIS devrait aussi fournir une interface Web.
Encore aujourd’hui, je suis jaloux de la piètre interface de Tomcat qui permet de déployer à chaud une application web Java à distance avec une interface web, et de pouvoir gérer son cycle de vie (start/stop/reload).

Ca parait rien comme ça, mais il n’y a pas d’équivalent pour gérer les applications Web .Net, donc oui, je suis jaloux.

Tomcat n’est pas un serveur J2EE, on ne peut y déployer que des applications Web: WAR (Wab ARchive).
Mais un serveur J2EE est plus puissant: on peut y déployer des applications “service” (JAR/EAR) voir des tâches schédulées.
De plus, les applications offrent souvent des “MBean”: Managed Bean. Ce sont des objets qui sont accessibles à travers une couche de service, et tout les serveurs J2EE offrent une interface Web pour les gérer.
Vous pouvez ainsi exposer la bean “HttpCache” avec le service “Clear” par exemple. Bref, c’est le paradis des admins.

Alors quand vous allez voir les pages Web d’administration de JBoss ou SpringSource, on se dit qu’il manque clairement quelque chose à la plateforme .Net.

Episode 1 : Mathias découvre PHP

Bande de petits veinards, je vous offre le premier épisode aujourd’hui :)

PHP est l’un des premiers langages que j’ai étudié lors de ma formation. C’est en tout cas le premier avec lequel il était possible de « réaliser quelque chose », et non faire des « hello worlds »…

En fait, PHP était super simple à prendre en main, grâce à la magie de EASYPHP !
Ce dernier permet à tout débutant d’installer en quelques click un serveur Web, le module PHP, une base de donnée MySQL ainsi qu’un portail Web d’administration EASYPHP et un autre portail de gestion de la base PHPMyAdmin.

Je me suis alors dit : mais pourquoi un truc aussi magique n’existe pas pour .Net ?
De plus, le trio Apache+PHP+MySQL peuvent être installés sur Linux, ce qui a permis à cette techno de se répandre partout chez tous les hébergeurs à moindre coût !

Introduction : Mathias est heureux… mais pourquoi ?

YES !!! CA MARCHE !

Après des semaines de développement, j’ai finis par y arriver, et voici le résultat :

Mouhahahah, n’est elle pas merveilleuse mon applis ? Ah ? Non ?

Certes elle manque d’esthétisme, mais si elle a une carrosserie de Deudeuche, il y a la dessous un vrai moteur de Ferrari! (ou une usine à Gaz, c’est une question de point de vue).

Afin de comprendre mon excitation fasse à une pauvre fenêtre, il faut que je vous raconte un peu mon histoire….
Et comme c’est un peu long, je vais vous laisser digérer ça en plusieurs fois :

Présentation de Spring.Net

Je remercie David Coppet, Florent Dugué, Olivier Bazoud, Ophélie Rudent, ALT.Net, le SUG, Zenika, et l’équipe de France pour m’avoir permis de présenter Spring.Net.

C’était hier, dans les locaux de Zenika: http://www.eventbrite.com/event/727568176

Mais comme vous êtes nombreux à ne pas avoir pu y assister, et que certains d’entre vous souhaites consulter les sources des démos, je vous proposes de télécharger le tout sur mon Bitbucket: http://bitbucket.org/grozeille/spring.demo/src

J’espère que ça vous a plus, et que cela vous a permis de découvrir de nouvelles choses dans Spring.Net.
Si des gens d’ALT.Net  souhaite que je refasse la présentation à une date moins problématique, n’hésitez par à me le faire savoir.
De même, si vous souhaitez que j’approfondisse un sujet en prenant plus de temps à expliquer les démos, ce serait avec plaisir.

Share

DBus avec .Net

Pour ceux qui ne le savent pas, je travail sur un serveur d’application .Net indépendant de la plateforme Windows: DotNetServer.

Après une version bonne pour une démo, j’ai voulu refactoriser le tout pour avoir quelque chose de viable.
Dans mon dernier billet, j’explique mon périple à la recherche d’un protocole de communication Inter-Processus, et j’ai choisi NDesk.DBus: l’implémentation full .Net de D-Bus.

La solution était sexy:

  • Déclaration des services par interface, ne pouvant exposer QUE des types simples ou Struct. Cela force à réaliser qu’en matière de communication, une instance d’objet ne veut rien dire et qu’on communique que par DTO.
  • Support des méthodes, propriétés et événements
  • Channel par Socket/TCP ou par Pipe
  • Communication optimisé binaire (pas d’XML ou de SOAP….)
  • Exposition des services sur le Bus avec un contrat au format XML (comme un WSDL en quelque sorte)
  • Cross-platform: provient du monde Linux mais existe sous Windows
  • Un standard de communication Inter-Processus, de plus en plus utilisé sous Linux, remplaçant CORBA (avec Bonobo)

Mais voila, tout n’est pas rose, et DBus me donne du fil à retorde.
L’implémentation .Net n’est pas très propre:

  • API pas très utilisable car quasiment tout est Internal
  • Pas de doc?
  • Ça manque de convention, le source n’est pas très lisible, j’ai envie de passer un coup de Resharper dessus :)
  • Beaucoup, beaucoup de commentaire du genre “//temporary hack” ou “//TODO“… beaucoup de code commenté qui prouve que la personne a voulu faire bien mais n’a pas eu le temps
  • Quand j’exécute DBusExplorer pour scanner mes services, cela plante 1 fois sur 2 mon client
  • Je n’arrive pas à faire marcher un service ou un client dans un Thread!!! Cela me bloque totalement

Je me demande si je ne vais pas revenir à une solution .Net Remoting:

  • implémentation .Net et Mono
  • channel IPC (par Pipe)
  • supporte les événements
  • DBus est vraiment orienté “Desktop” comme le D l’indique. J’en fait donc une utilisation détournée.

Mais une autre solution peut aussi faire l’affaire: ProtoBuf, un protocole performant inventé par Google.

Je vais tacher de vous tenir plus au courant, histoire aussi de recueillir des opinions concernant mes choix.

Meld win32

Après beaucoup de patience, et beaucoup de recherche sur Python (je n’ai jamais vraiment codé en Python) j’ai finis par sortir un package de Meld 1.3 avec les plugins pour les différents SCM qui fonctionnent (SVN/GIT/HG/etc.)

Cela donne:

On peut donc ce passer de Tortoise, et c’est très léger.
PS: ce package contient le “patch.exe” d’UnixUtil ce qui évite toute installation de Cygwin.
Téléchargement sur: http://bitbucket.org/grozeille/meld/downloads/

Suivre

Get every new post delivered to your Inbox.