| Développez à la mode J2EE en utilisant .NET avec le SnippetStore (Chap 1) par Julien Brunet (j.brunet@cross-systems.com) | ||
Chapitre 1/3
Impression papier : environ 7 pages
Version 1.1
" Le Framework .NET ? Ils ont tout copié sur J2EE ! " Combien de fois avez-vous
lu ou entendu cette phrase ? Ce fut la
réaction-type des spécialistes Java découvrant pour la première fois la
plateforme .NET. De fait, tout le monde est d'accord pour dire que le framework
.NET s'est largement inspiré de l'expérience J2EE, en l'améliorant et en la
simplifiant.
Ainsi, êtes-vous capable de dire exactement en quoi les deux plateformes se ressemblent ? C'est ce que je vous propose de découvrir aujourd'hui, à travers une expérience ludique et passionnante : Faire tourner le code d'origine Java Pet Store, avec le minimum de changements, sur une plateforme .NET. Impossible ? Chiche !
Pas tout à fait. L'année dernière, vous avez probablement tous lu sur DNG le projet "Yoopi", qui consistait justement à traiter des servlets sur une base .NET, en utilisant le langage "Java-like" J#. Il démontrait qu'il était tout a fait envisageable d'implémenter la spécification J2EE sur une plateforme .NET, à condition de réécrire le conteneur adéquat.
L'optique choisie par l'équipe DNG a l'époque était de récupérer des noyaux java existants : Après un courageux essai de conversion de Tomcat sous .NET, c'est finalement un mini noyau OpenSource java "shttp" qui fut compilé en J#. L'expérience fut douloureuse, mais se termina sur un succès !
Afin de ne pas endurer le même calvaire, nous vous proposons cette fois une approche différente : Réutiliser au maximum les technologies du framework pour émuler les différentes APIs de J2EE, c'est-à-dire implémenter la plupart des interfaces J2EE en utilisant à outrance les classes équivalentes fournies par le framework.
Ce projet n'est donc pas du tout un "Nouveau PetStore". N'envisagez surtout pas de comparer les performances ou l'architecture de cette version avec une autre, car son seul objectif est pédagogique (et fun, accessoirement)
Cet article est essentiellement technique. Il va y avoir de la sueur et du camboui. Ne seront pas abordés ici les grands sujets de design pattern, refactoring, programmation par aspects et autres théories cérébrales chères aux grands de ce monde.
Cet article possède quatre axes de lecture :
Lab 0. - Les instructions du lab sont présentés dans ce type d'encadré. La ligne suivante est à saisir. C:\SnippetStore> command args
Les
remarques sur J# sont
précédées de ce pictogramme.
J'ajoute que bien que développé sous VisualStudio .NET, la mise en oeuvre chez vous ne nécessite que des outils gratuits : Le framework .NET 1.1, les SDK J2SE/J2EE, MSDE, NAnt, Jad et ASP.NET Web Matrix. Le projet est en OpenSource, mais les binaires ne sont pas fournis pour des raisons légales (certains sources étant décompilés de Java). Pour l'exécuter il vous faudra donc assembler vous-même la totalité en suivant les instructions du lab qui commence au chapitre 2.
Bonne lecture !
Le Framework SnippetStore est découpé en trois parties :
Petits rappels pour les personnes qui ne connaissent pas bien J2EE.
PS: Que les experts me pardonnent, j'espère être un bon vulgarisateur à défaut d'être spécialiste :-)

Voici le schéma d'architecture général des APIs de J2EE, tel que présenté dans PetStore. On trouve dans J2EE énormément de choses, contribuant à sa renommée de plateforme complète. Rassurez-vous, nous n'implémenterons pas la totalité, ce serait titanesque ! Nous nous focaliserons sur les couches suivantes, utilisées par Java Pet Store.
Pour information, les couches suivantes ne sont pas implémentées ou alors très partiellement, car non utilisées dans Java Pet Store:
L'architecture SnippetStore
Pour les personnes qui ne connaissent pas .NET, voici l'équivalence des concepts mentionnés plus haut.

Pour implémenter les différentes couches de J2EE, nous utiliserons les APIs suivantes du framework:
Le processus de conversion SnippetStore
Lorsque l'on déploie une application J2EE, une copie de fichiers ne suffit pas - L'assemblage et le déploiement sont des parts très importantes de la spécification J2EE.
En J2EE, la plupart des éléments logiciels sont décrits sous forme de manifestes XML normalisés. Les EJBs, les applications Web et les TagLibs en sont quelques exemples, et Java PetStore n'échappe pas à cette règle.
Lors d'un déploiement J2EE, ces manifestes sont analysés, et du code Java est dynamiquement généré et compilé par le conteneur J2EE. Ce code dynamique contient par exemple les stubs/skeletons RMI, ou la gestion transactionnelle des EJBs...c'est l'ancêtre des tisseurs AOP !
Le framework SnippetStore réalise exactement la même opération : Les manifestes XML sont "épluchés" par la toolkit afin de générer automatiquement les wrappers .NET correspondants (fans de CodeDom, c'est pour vous!), ainsi que la configuration Web adéquate (Web.Config)
Le processus de conversion de SnippetStore est donc simple, car il est automatisé, que vous ayez 10 ou 300 EJBs, Servlets et TagLibs.
Les pages JSP doivent également subir des retouches pour tourner en J# sur ASP.NET. C'est le rôle d'un autre outil de la toolkit que nous verrons dans le chapitre 2.
Note: Les wrappers d'EJB, de TagLibs et de Servlets sont générés en C#, ce qui n'est pas un problème en soit vu que la plateforme .NET est indépendante du langage. Le choix de C# sera justifié dans le chapitre 2.
Dans une version précédente, le processus de conversion se faisait
directement à l'exécution (de la même façon que les pages ASPx ou
JSP sont dynamiquement compilées). Hélas, ce choix a été abandonné puisque la
migration n'est pas 100% automatisable et que des retouches manuelles doivent
être apportées au code d'origine.
En revanche, il n'est pas inenvisageable avec les améliorations futures de J# de
concevoir un outil de déploiement automatique (comme le deploytool de Sun).
Appel à candidature...
Pour information, SnippetStore a été développé à l'origine sur un framework 1.0.
Si vous ne connaissez pas encore Ant / NAnt, je vous recommande chaudement d'étudier cet outil relativement simple.
Je vous propose maintenant d'assembler le framework SnippetStore avec le chapitre 2. Il vous sera nécessaire pour pouvoir exécuter l'application Java PetStore sous .NET dans le chapitre 3.
Auteur : Julien Brunet
Copyright © Juin 2003
Ressources
Site officiel SnippetStore : http://snippetstore.sourceforge.net/
Téléchargez les sources et les binaires
SnippetStore (Sources) : Snippetstore (Fichier zip)
Licence GPL
Tous fichiers sont fournis sous la licence Lesser-GPL.