Scope 2002, le pre. Depuis un an, LA LETTRE BIMENSUELLE DU DÉVELOPPEMENT E D I T O. Sommaire

Dimension: px
Commencer à balayer dès la page:

Download "Scope 2002, le pre. Depuis un an, LA LETTRE BIMENSUELLE DU DÉVELOPPEMENT E D I T O. Sommaire"

Transcription

1 Méthodes Architectures Technologies Algorithmie Langages Outils Opinions LA LETTRE BIMENSUELLE DU DÉVELOPPEMENT Hors-série Java 19 septembre 2002 E D I T O Depuis un an, Développeur Réfé rence, dans sa nouvelle formule électronique, a couvert bon nombre de sujets : architectures distribuées, méthodologies, conception objet, techniques de programmation, outillage... qu'ils soient dédiés aux technologies Microsoft, Java ou Open Source. Avec toujours comme principal objectif la qualité du contenu au service des développeurs et comme principal soucis l'objectivité. Aujourd'hui, l'événement Scope 2002 auquel nous sommes associés, est l'occasion de vous offrir une compilation des meilleurs articles consacrés à Java, avec en prime quelques contributions inédites grâce à la participation de membres du Club des Utilisateurs Java. Retrouvez-nous le 3 et 4 octobre lors de ce rendez-vous incontournable de la communauté Java. Bonne lecture! Pierre Tran Rédacteur en chef Actualité Scope ope L'événement Java de la rentrée. L'édito.NET ou J2EE?... 2 Par Hervé Crespel Tendance J2EE Java orienté services Web Sommaire Technique Applications Java a évolutiv olutives es La vie et l'oeuvre e des exceptions eptions Le fichier mappé Management t à chaud avec JMX Générer des JavaB abeans avec ec XSLT Scope 2002, le pre mier événement français autour de la technologie Java, se tiendra le 3 et 4 octobre prochains au Palais des Congrès de Versailles. Avec deux conférences plénières, 40 ateliers techniques et la possibilité de rencontrer les acteurs du monde Java, Scope 2002 s'annonce comme un rendez-vous incontournable de toute la communauté Java. Pour Développeur Référence, co-producteur de cet événement, c'est l'occasion de faire le point sur cette technologie. A ce titre, nous avons interrogé les principaux acteurs de cet événement : comment se situent-ils dans le paysage informatique? Quelle stratégie comptent-ils développer dans les prochains mois autour de Java? Quels produits ou quelles [Suite page 3] LES PROJETS S OPEN SOURCE (1) Eta tat t de l'art (2) Ser ervlet/jsp/mv vlet/jsp/mvc avec ec Tomca omcat (3) MVC2 C2 avec ec Struts (4) Compr omprendr endre et étendr endre e Struts (5) Mapping Objet Relationnel avec Cast astor (6) Eclipse clipse, ret etour d'expérience 51 Outil Borland JBuilder

2 Analyse L'édito 2.NET ou J2EE? Par Hervé Crespel Depuis quelques mois, une nouvelle litanie prend possession de la presse. Les rédacteurs en chef les plus talentueux ne cessent reposer le problème du choix entre.net et J2EE. Les arguments ne manquent pas de surprendre. L un nous dit que J2EE est une spécification tandis que.net c est du vrai logiciel. L autre voit en J2EE une gamme de logiciels qui bénéficient de plus de quatre ans de mise au point tandis que.net demandera au moins quatre ans pour être complet et éprouvé. Face à la multiplication d opinions aussi contradictoires, que faut-il donc penser? D abord, une chose est sûre : de grands intérêts sont en jeu! Lesquels? Ceux des fournisseurs informatiques, bien sûr. Dont fait partie la presse informatique, rappelons-le. Tandis que les utilisateurs demandent plus que jamais FIABILITE et SIMPLICITE, le marché ne cesse de leur expliquer qu il faut changer pour avoir mieux. Changer de version, remplacer les logiciels, réformer les ordinateurs, reformer les hommes. Alors que l expérience montre que l informatique qui marche le mieux, c est celle à laquelle on ne touche pas. La complémentarité du Yin et du Yang sied mieux à l informatique que la guerre ouverte entre deux technologies. Mais pourquoi donc opposer Java contre C#? JVM contre CLR? J2EE contre.net côtés client et serveur des plates-formes e-business? J2ME contre Stinger sur les téléphones? J2ME contre Pocket PC sur les PDA? J2SE contre Windows dans les IHM? Le marché de l informatique n est ni une compétition sportive ni une guerre mondiale. Entre commerce et science, il a radicalement bouleversé nos modes de travail et notre société. La masse de ses acteurs se trouvent chez les utilisateurs, non chez les fournisseurs. En ces temps où la presse informatique subit une Hervé Crespel forte érosion (-20% en 2001, -15% en 2002), il serait Président du Club des bon d ouvrir les yeux. Les lecteurs cherchent l efficacité et n ont que faire de comparatifs inutiles et de (www.club-java.com) Utilisateurs Java potins. Il est temps de prendre les utilisateurs pour des gens responsables. Plus que jamais, ils ont besoin d être guidés pour naviguer dans la complexité. Plus que jamais, ils veulent partager l expérience des autres. Et ils sont capables de faire eux-mêmes les comparaisons. La complémentarité du Yin et du Yang sied mieux à l informatique que la guerre ouverte entre deux technologies. Les utilisateurs veulent une réponse adéquate à leurs besoins. Ils n aiment pas les cadavres, surtout pas dans leur SI. «Relatez l expérience de leurs pairs. Expliquez-leur comment construire du solide avec.net et J2EE. Dites-leur sur combien de modèles de téléphones fonctionnent J2ME et Stinger. Dites-leur pourquoi Sony ou Nokia utilisent Java. Centrez votre discours sur la nouvelle clé du marché informatique : l interopérabilité. Ditesleur que c est la vraie raison d être des Web services et que le choix technologique n est qu une façon de réussir une indispensable mutation.» Cesser de nourrir les antagonismes. Informer justement sur le monde Java pour construire durable. C est dans cet esprit que SCOPE 2002 a été pensé. S il reflète vos aspirations, ne manquez pas d y participer les 3 et 4 octobre prochains au palais des congrès de Versailles. Faites-en un succès, manifestez votre demande d une information juste et efficace. Merci et bonne lecture de ce numéro spécial.

3 Analyse Actualité 3 LETTRE BIMENSUELLE ÉDITÉE PAR 5, rue Chantecoq Puteaux Cedex Tél. : Adresse électronique : Directeur de la publication : Ted Bloom Commission paritaire : en cours Dépôt légal : 4 e trimestre 2001 Rédaction Editeur Michel Crestin Rédacteur en chef Pierre Tran 6257 Assistantes de rédaction Kateline Renaudin Ont collaboré à ce numéro Paul-Bernard Amade, Hervé Crespel, Nicolas Dasriaux, Gil Francopoulo, Didier Girard, David Le Bras, Guillaume Louel, Jean-Noël Ribette, François Maurit, Viktor Okunev, Philippe Prados, Alvaro Schwarzberg Fabrication Directeur artistique groupe Patrice Servage Mise en page Pierre Tran Photographies Marc Guillaumot Iconographie Nouara Aftis Infographies Pierre Tran Publicité Pasquale Meyer 6216 Service Abonnements Développeur Référence BP Lille Cedex 9 Tél Fax Tarif : 1 an 22 numéros : 200 euros Prix de lancement : 150 euros Renseignements : Lucienne Bosser 6128 Cop opyrigh yright t IDG Communica ommunications Franc ance. Toute reproduction ou représentation, intégrale ou partielle, par quelque procédé que ce soit, des pages publiées dans la présente publication faite sans l autorisation écrite de l éditeur est illicite et constitue une contrefaçon. Seules sont autorisées, d une part, les reproductions strictement réservées à l usage privé du copiste et non destinées à une utilisation collective, d autre part, les analyses et courtes citations justifiées par le caractère scientifique ou d information de l œuvre dans laquelle elles sont incorporées (loi du 11 mars art. 40 et 41 et Code pénal art. 425). Toutefois, des photocopies peuvent être réalisées avec l autorisation de l éditeur. Celle-ci pourra être obtenue auprès du Centre français du copyright, 6 bis, rue Gabriel-Laumain, Paris, auquel IDG Communications France a donné mandat pour le représenter auprès des utilisateurs. [suite de la page 1] Borland Enterprise Studio technologies prévoient-ils de présenter ou d'annoncer lors de Scope 2002? Pour Bruno de Combiens, responsable produits de Borland France, Borland Software Corporation se situe comme l'un des principaux fournisseurs de technologies dédiées au développement, au déploiement et à l'intégration d'applications logicielles. L'éditeur dispose d'une base installée et de partenariats stratégiques qui le positionnant comme un acteur leader dans de nombreux domaines dont celui des solutions de développement Java avec JBuilder et Borland Enterprise Studio for Java La stratégie de Borland consiste en la couverture complète du cycle de vie des applications (de la conception au déploiement en passant par le test de performance), car elle contribue à abaisser le coût total de possession des solutions Java, quel qu'en soit l'usage : de J2ME à J2EE. A l'occasion de Scope 2002, Borland présentera principalement sa solution couvrant les phases fondamentales du cycle de développement d'applications mobiles et J2EE : Borland Enterprise Studio for Java. Pour Rémy Baranger, IBM WebSphere Market Manager, la priorité est aux standards ouverts. Pour les entreprises, faire face aux nouveaux défis économiques signifie automatiser toujours davantage leurs processus métier, et donc unifier leur patrimoine applicatif. Cette unification n'est possible que grâce aux standards ouverts. C'est pourquoi IBM apporte sa contribution à Linux, Apache, J2EE, XML, etc. et est devenu un des leaders dans le domaine des standards. Un effort qu'il poursuit aujourd'hui en contribuant à l'évolution des Web services, ou encore en proposant un standard pour les outils de développement au travers du projet Eclipse. Scope2002 est l'occasion pour IBM de souligner son engagement auprès des communautés formées autour des technologies ouvertes, et de faire la démonstration de son infrastructure logicielle WebSphere, fondée sur Java et les standards de l'industrie. Ivstudio de ILOG ILOG propose des composants Java qui permettent aux entreprises de réduire considérablement le temps dédié au développement tout en leur offrant portabilité et personnalisation avancées. Selon Sandrine Lebouc, EMEA Corporate Marcom Manager, l'éditeur français a annoncé sa volonté de renforcer son support des services Web sur l'ensemble de son offre produits au cours de l'année JRules, JConfigurator et JViews, peuvent déjà être intégrés aux services Web sur les principales plates-formes de serveurs d'application J2EE. Scope 2002 sera l'occasion de présenter les suites de composants de visualisation, de règles métier et d'optimisation 100% Java et de lancer la dernière version du moteur de configuration interactive JConfigurator 2.0. De plus, ILOG animera également deux conférences. Pour Oracle, l'offre comprend les progiciels de gestion Oracle E- Business Suite, le serveur applicatif Oracle9i Application Server, le SGBDR Oracle9i Database, les outils de développement Oracle9i Developer Suite et les outils bureautiques Oracle Collaboration Suite. Pour Laurent de Lavarène, Responsable Marketing Oracle9i, " Avec plus de 1000 développeurs Java sur Oracle E- Business Suite, Oracle est le plus

4 Analyse Actualité 4 Rational XDE pour Java important éditeur de progiciels Java du marché ". Utilisateur convaincu, l'éditeur souhaite aussi contribuer au développement de la plate-forme J2EE dans les entreprises. A l'occasion de Scope 2002, Oracle y donnera quatre conférences sur les thèmes suivants : Mapping objet-relationnel, Développement rapide d'applications J2EE, Développement rapide de services Web, Mise en cache de pages Web. Pour Anne Chaurand, responsable communication Rational, Java est maintenant largement acceptée comme plate-forme qui dépasse le cadre du langage de programmation. La stratégie de l'éditeur consiste à accompagner ses clients qui ont fait le choix Java pour transformer ce choix en succès grâce à une plate-forme de développement intégrée qui couvre tout le cycle de vie de développement et de déploiement Java ainsi que des pratiques de développement. Rational présentera lors de Scope 2002 cette plate-forme avec notamment Rational XDE, qui offre aux développeurs la conception, la modélisation et le codage à l'intérieur de l'ide, Rational Rose (modélisation UML), Rational Suite TestStudio (test), Rational ClearCase (configuration logicielle), Rational Unified Process (RUP, processus standards) Présent dans plus de soixante pays, Software AG, éditeur européen de logiciels d'infrastructure, propose un ensemble d'offres technologiques couvrant l'intégration (EAI) et les Web Services, les systèmes de gestion de bases de données (XML et non XML), ainsi que des solutions dédiées à la gestion de contenu qui s'appuient toutes sur Tamino. Selon Xavier Sauvan, responsable produit Software AG France, ce serveur de documents XML natif confère, outre robustesse et flexibilité, une grande capacité de stockage d'informations de toute nature (XML, vidéos, sons ) et des possibilités évoluées d'indexation et de recherches plein texte. Par ailleurs, le serveur Tamino possède une API Java/EJB et s'interface à de nombreux outils de développement Java afin de faciliter l'utilisation de XML par les développeurs Java. Sun, qui vient de fêter ses 20 ans, est l'inventeur de la plateforme Java qui est sortie de ses laboratoires il y a sept ans. C'est une communauté Java de plus de trois millions de développeurs qui utilisent Java et plus de 500 sociétés au sein du Java Community Process qui collaborent aux futures évolutions. Pour Eric Mahé, responsable marketing Java, la stratégie de Sun couvre d'une part les évolutions globales de Java : la maturité de J2ME dans la téléphonie mobile (specs MID-P pour les téléphones Java), l'intégration des standards des Web Services et les évolutions de l'architecture J2EE (montée en charge, administration). Sybase Enterprise Portal D'autre part, les produits de l'offre Sun ONE suivront les mêmes évolutions dans les prochains mois. Lors de Scope 2002, Sun montrera les nouveaux services sur les téléphones Java (Siemens, Nokia ou Sony/Ericsson) et l'intégration à la plate-forme Java d'applications Peer-to-Peer ou Grid Engine. Les nouvelles versions des environnements de développement Sun ONE Studio seront également de la partie. Enfin Sybase est éditeur d'infrastructure, son offre résolument non propriétaire permet d'intégrer tout type de technologie tout en préservant les investissements existants. Selon Isabelle Genestoux, directrice marketing, Java est au coeur de l'offre et se retrouve au niveau de sa couche d'infrastructure (serveur d'applications certifié J2EE, base de données, modélisation), d'intégration (support des Web services) et d'accès (portail et mobilité). L'engagement de Sybase envers Java sera renforcé notamment à travers le support d'eclipse. La stratégie est de proposer des briques d'infrastructure totalement portables et ouvertes. L'éditeur présentera lors de Scope 2002 Enterprise Portal 5.0, portail d'entreprise indépendant du serveur d'applications, pour agréger et syndiquer des applications et du contenu en quelques clics.

5 Parasoft Jtest automatise entièrement le test Java TM Parasoft est le fournisseur principal de solutions automatiques de prévention et de détection d'erreurs pour les développeurs Java. Fini le temps des longues heures de débuggage minutieux qui vous prenait une bonne partie de votre énergie. Lancez Jtest de Parasoft, et pour avoir la garantie d un code robuste et sans erreurs, vous n avez plus qu à regarder le travail se faire. Jtest de Parasoft automatise entièrement le test Java. Vous n aurez plus jamais à écrire un seul cas de test. Pour la première fois, des outils de prévention d'erreurs puissants comme le test unitaire, l'analyse statique et le Design by Contract peuvent être facilement déployés au cours de votre processus de développement. L'Exécution Symbolique Dynamique unique de Jtest produit automatiquement des cas de test boîte blanche et boîte noire réutilisables,vous permettant d évaluer facilement vos classes et vos composants Java, ainsi que vos JSP, au cours du processus de développement. Le test de régression de Jtest maintient l'intégrité du code et son analyse statique prévient les erreurs, et pointe le code prédisposé aux erreurs en appliquant un grand éventail de standards de programmation. Rulewizard, l éditeur de règles intégré, permet d implémenter facilement vos propres règles dans la revue de code automatique. Jtest est disponible pour une large variété de plates-formes, y compris Windows NT /2000 /XP, RedHat Linux 6.1,7.1,ou 7.2, SuSE Linux 7.2, ou Mandrake Linux 8.1 et Solaris 7 et 8. Téléchargez une copie d'évaluation de Jtest aujourd'hui sur Solutions automatiques de prévention d erreurs Parasoft. Faites le bien dès le début Parasoft écrit régulièrement des documents techniques afin de vous aider dans le développement de vos applications. Une copie de notre dernier document technique, Automating and Improving Java Unit Testing: Using Jtest with Junit, vous sera remis sur présentation de cette page au stand Parasoft lors de Scope 2002, les 3 et 4 octobre 2002.

6 Analyse Tendance 6 LA VERSION 1.3 DE J2EE A SOUVENT ÉTÉ CRITIQUÉE POUR SON ABSENCE DE SUPPORT DES SERVICES WEB ET POUR LES LIMITATIONS DES CONNECTEURS JCA. ACTUELLEMENT À L ÉTAT DE PROPOSED FINAL DRAFT, LA VERSION 1.4 EST PRÉVUE POUR DÉBUT CET ARTICLE PRÉSENTE LES NOUVEAUTÉS DE LA PLATE-FORME AINSI QUE LES AMÉLIORATIONS APPORTÉES. David Le Bras est consultant et expert de la plateforme Java et des serveurs d application J2EE chez Neoxia. Lors de missions de conseil ou de coaching, il accompagne les équipes projet pour les aider à tirer le meilleur parti des technologies Java. Très attendue, la nouveauté principale de la plateforme J2EE 1.4 est le support des services Web. Dorénavant, la plateforme comprend une boîte à outils complète permettant de développer et de déployer des services Web. Grâce à cet ajout, J2EE 1.4 devient enfin une plateforme crédible pour la mise en œuvre de services Web. J2EE 1.4 comprend également de nouvelles API permettant la supervision du serveur d'applications, et le déploiement d'applications sur le serveur d'applications. Ces API permettent aux outils de s'interfacer avec les serveurs d'application de façon standard. Autre nouveauté, des améliorations ont été apportées aux API d'intégration avec les systèmes d'information externes (J2EE Connector Architecture 1.5), et de présentation (Java Server Pages 2.0). L'installation et la configuration de systèmes externes d'authentification et d'autorisation sont également rendues possibles dans cette nouvelle version de J2EE. Intégration des services Web La grande nouveauté de J2EE 1.4 est un ensemble d'interfaces de programmation d'applications (API) permettant de développer des services Web : JAXP permet d'interpréter et de transformer la structure d'un document XML, JAXR permet d'accéder à des annuaires ebxml et UDDI, JAX-RPC permet de mettre en œuvre et d'utiliser des services Web. Figure 1 : Architecture de la plate-forme J2EE

7 Analyse Tendance 7 La spécification Java API for XML Processing 1.2 (JAXP 1.2) définit les API permettant de lire, de manipuler et de générer des documents XML. Cette spécification est conforme à la spécification XML 1.0, et aux espaces de nommage XML (XML Namespace). JAXP propose une manière standard d'intégrer un parseur XML dans une application Java, que ce soit un parseur SAX 2 (Simple API for XML), un parseur DOM 2 (Document Object Model) ou bien encore un transformateur XSLT (extensible Style Language Transformation). Autre nouveauté importante, cette nouvelle version de JAXP supporte enfin les schémas XML (XML Schema). Quant à elle, la spécification Java API for XML-based RPC (JAX- RPC) définit les API permettant de développer et d'utiliser des services Web. JAX-RPC est conforme à la spécification 1.1 du protocole SOAP, et permet donc l'utilisation de XML pour l'invocation de méthodes à travers le réseau. La spécification SOAP with Attachments API for Java 1.1 (SAAJ 1.1) complète JAX-RPC, en lui ajoutant le support des pièces jointes dans les messages SOAP. La spécification Web Services for J2EE formalise le déploiement de services et clients reposant sur JAX-RPC. Java API for XML Registries (JAXR) propose une interface standardisée d'accès aux annuaires employés dans le contexte des services Web : ebxml (Electronic Business using extensible Markup Language) et UDDI (Universal Description, Discovery and Integration). On peut regretter l'absence de Java API for XML Binding (JAXB), disponible séparément de la plate-forme. Cette API permet de mettre en correspondance des classes Java et avec un document XML (mapping objet / XML). Un autre absent est Java API for XML Messaging 1.1 (JAXM 1.1), uniquement disponible dans le pack XML. Cette API s'appuie sur SOAP 1.1 et permet aux applications d'envoyer et de recevoir des messages XML orientés document. Intégration avec les outils de supervision et de déploiement Dans un environnement de production, il est nécessaire de pouvoir surveiller le comportement des divers constituants du système d'information, mais également, de pouvoir les paramétrer à chaud. Ceci est d'autant plus nécessaire, lorsqu'il s'agit de serveurs dont la disponibilité et le bon fonctionnement sont cruciaux pour l'entreprise. Généralement, cette fonction est assurée par un outil de supervision du type IBM Tivoli, HP Open VM, CA Unicenter, ou encore BMC Patrol. Dans la plupart des serveurs d'application, la supervision et la configuration sont spécifiques : rares sont les serveurs d'application proposant une interface acceptée par tous les outils du marché. En réaction, la plate-forme J2EE 1.4 propose désormais une interface permettant à des outils de superviser et de configurer un serveur d'applications, ainsi que les applications déployées sur ce dernier. Pour cela, les composants s'appuient sur JMX (Java Management Extensions 1.1) pour être administrables via de multiples protocoles (HTTP, RMI, SNMP). L'administration et la supervision des applications J2EE s'intègre désormais aux principaux outils de supervision du marché grâce à SNMP (Simple Network Management Protocol). Une version HTTP est fournie par Sun. Il est donc possible d'intégrer la surveillance des applications Java dans une infrastructure globale de supervision. JMX définit un standard pour écrire des objets JMX appelés Mbeans. Ces objets Mbeans existent à l'intérieur d'un conteneur défini par le standard. Un client JMX est capable d'invoquer les méthodes, et de lire ou de modifier les attributs de ces composants. Un client JMX peut également s'enregistrer auprès d'un Mbean pour recevoir des événements. Dans J2EE 1.3, le déploiement des applications est spécifique du serveur d'applications cible. Pour déployer une application, il est nécessaire d'utiliser l'outil fourni par le serveur, ou par l'environnement de développement, ou bien encore d'écrire un script de déploiement spécifique. Dans J2EE 1.4, le déploiement des applications est désormais standardisé grâce à la spécification J2EE Deployment API 1.1. Non seulement, les fournisseurs de serveurs doivent fournir un outil de déploiement, mais ils doivent aussi respecter le standard de déploiement. Ainsi, tout outil respectant le standard peut déployer des applications sur tout serveur d'application conforme au standard. Cette nouvelle API s'adresse principalement aux éditeurs d'outils de développement, mais aussi aux équipes responsables de la mise en production des applications. À titre d'illustration, Sun propose déjà des implémentations de référence de ces outils qui s'intègrent à l'environnement de développement Forte for Java. Intégration avec le système d'information et de sécurité Avant la spécification JCA (J2EE Connector Architecture), il n'existait pas de moyen standard pour intégrer la plate-forme Java avec les autres applications et middlewares existant dans l'entreprise : applications spécifiques, ERP, CRM, middlewares divers. Par exemple, l'intégration avec CICS, Tuxedo, SAP, Siebel ou Peoplesoft ne pouvait se faire que grâce à des solutions propriétaires. Présent depuis J2EE 1.3, JCA propose une interface de communication du serveur d'applications vers le système externe. Toutefois, la communication du système externe vers le serveur d'applications a rapidement fait défaut. De réelles améliorations ont donc été apportées aux API d'intégration dans la nouvelle mouture 1.5 de JCA. Principal apport, la communication asynchrone bidirectionnelle est désormais possible. Les communications entrantes sont redirigées vers un Message Driven Bean (MDB). Il est possible de définir des types de message différents. Par exemple, dans le cas d'une application

8 Analyse Tendance 8 d'envoi de message d'alertes sous forme de mails, il est envisageable de définir un connecteur qui envoie ce type de message. En matière d'intégration, cette possibilité de communication peut apparaître comme un système concurrent des services Web. En fait, il s'agit plutôt de deux technologies complémentaires. On peut ainsi développer un service Web permettant d'obtenir le solde d'un compte bancaire. À son tour, le service peut déléguer l'implémentation à un mainframe via un connecteur JCA. Listing 1 : exemple JSP 1.2 <jsp:usebean id="produit" type="com.masociete.product" scope="request"/> [ ] Nom du produit: <%= produit.getnom() %> [ ] <% if (produit.getfabricant().equals("superdiscount")) %> [ ] <% %> Listing 2 : exemple JSP 2.0 Nom du produit: $produit.nom [ ] <c:if test="$produit.fabricant == param.fabricant"> [ ] </c:if> Listing 3 : exemple JSTL [ ] <table> <jstl:foreach xmlns:c="http://java.sun.com/jstl/core" var="compteur" begin="1" end="3"> <row>$compteur</row> </jstl:foreach> </table> Listing 4 : interface du service [ ] public interface StockPriceProvider extends javax.rmi.remote [ ] public float getstockprice(string code) throws javax.rmi.remoteexception; [ ] Listing 5 : implémentation du service sous forme d'un Stateless Session Bean Depuis J2EE 1.3, le modèle de sécurité s'appuie sur Java Authentication and Authorization Service (JAAS), défini dans J2SE. La nouveauté de J2EE 1.4 est la spécification Java Authorization Service Provider Contract for Containers. Elle permet l'intégration d'une infrastructure d'autorisation existante dans le serveur d'application. Ainsi, il n'est plus nécessaire de créer une couche supplémentaire au niveau du serveur d'application, lorsqu'un outil fédérateur des autorisations existe dans l'entreprise. Conteneur Web La couche présentation des applications J2EE bénéficie d'une nouvelle version de la spécification Java Server Pages 2.0 (JSP). JSP 2.0 introduit la notion de fragment de pages réutilisable. JSP 2.0 comprend également un nouveau langage d'expression. Ce langage remplace avantageusement les expressions Java dans les pages JSP. Le listing 1 et le listing 2 donnent un aperçu de ces évolutions. Malheureusement, la spécification Java Server Pages Standard Tag Library (JSTL) ne fait pas partie de la plate-forme. JSTL propose un ensemble de balises standard pour les pages JSP (voir listing 3). Les fonctionnalités communes sont fournies par des balises standard : conditions et itérations, internationalisation, requêtes SQL et manipulations [ ] public class StockPriceProviderWS implements StockPriceProvider, javax.ejb.sessionbean [ ] public float getstockprice(string code) // récupération des données de la base [ ] XML. Il n'est plus nécessaire d'utiliser des librairies du marché ou d'insérer du code Java. La librairie JSTL est néanmoins disponible séparément. On peut également regretter l'absence de la spécification Java Server Faces, qui définit un ensemble de composants Web gérés côté serveur et facilement manipulables par des environnements de développement. J2EE 1.4 manque ainsi une occasion de donner le change à ASP.NET, l'un des points forts de.net. Enterprise Java beans Dans la plate-forme J2EE 1.3, la spécification Enterprise Java Beans 2.0 (EJB) améliore grandement la persistance des entités gérées par le conteneur (Container Managed Persistence ou CMP). À l'occasion, le langage EJB-QL a été introduit pour définir des requêtes indépendamment de la base de données. La nouvelle mouture 2.1 des EJB apporte des améliorations au langage EJB-QL : clause ORDER BY, opérateurs d'agrégation (AVG, COUNT, MAX, MIN, SUM). Ces lacunes avaient été comblées par les principaux serveurs du marché, qui proposaient une version propriétaire de EJB-QL pour les EJB 2.0. Autre nouveauté, les composants ont maintenant la possibilité de s'enregistrer auprès d'un service de planification de tâches (Timer). Par exemple, un composant de facturation peut s'enregistrer auprès du service pour déclencher l'envoi d'un message au client à une date donnée. De la même manière, il est également possible de développer un composant qui nettoie la base de données quotidiennement ou déclenche un mécanisme de sauvegarde chaque semaine. Au cœur de la plate-forme, les services Web sont maintenant intégrés aux composants EJB. Ainsi, les Stateless Session Beans peuvent être utilisés pour implémenter un service Web. La première étape est de définir l'interface du service (voir listing 4). Ensuite, l'implémentation du service doit être définie, sous forme d'un Stateless Session Bean (voir listing 5) Grâce à un utilitaire de JAX-

9 Analyse Tendance 9 Listing 6 : exemple d'appel d'un service Web à partir d'un composant EJB [ ] public class StockBuyer implements javax.ejb.sessionbean [ ] public String buystock(string code, int number) [ ] // récupération de l'instance du service via JNDI InitialContext jndicontext = new InitialContext( ); StockPriceProviderService service = jndicontext.lookup("java:comp/env/stockpriceproviderservice"); // récupération stub StockPriceProvider stockpriceprovider = service.getstockpriceprovider(); // appel de méthode distante float price = stockpriceprovider.getstockprice( code ); [ ] RPC, il est ensuite possible de générer le stub client et un document WSDL, le tout, à partir de l'interface du service. Le stub permet d'accéder au Stateless Session Bean via le protocole SOAP. Quant au document WSDL, il peut servir à d'autres types de clients, comme par exemple un client.net. Les composants EJB peuvent être clients de services Web grâce à JAX-RPC. Pour cela, ils font appel à l'environnement JNDI pour récupérer une référence sur le service Web. Ensuite, l'appel au service peut être réalisé, au choix, via un stub généré statiquement, via à un proxy dynamique ou bien encore, grâce à un mécanisme d'invocation dynamique (Dynamic Invocation Interface). Le listing 6 montre un composant EJB accédant à un service Web grâce au stub généré. La plate-forme J2EE 1.4 comporte de nombreuses nouveautés. La plus attendue d'entre elles est, sans doute, la prise en compte des services Web dans la plate-forme. De ce point de vue, les choix du JCP (Java Community Process) semblent raisonnables. Les services Web s'appuient principalement sur les Stateless Session Beans, reconnus pour leur performance et leur capacité à monter en charge. En outre, l'intégration avec la plateforme est simple et cohérente. Avec la version 1.4, J2EE prend véritablement l'existant en considération. Ainsi, J2EE 1.4 spécifie, et donc standardise, un certain nombre de services essentiels en production, comme : la supervision, l'administration et le déploiement des applications. Avec la nouvelle version de JCA, et les services Web, J2EE 1.4 propose de véritables moyens pour interopérer avec le patrimoine applicatif de l'entreprise. En bien des aspects, J2EE 1.4 propose des fonctionnalités majeures, et l'on est impatient de pouvoir juger des implémentations de ces spécifications. C'est maintenant au tour des principaux éditeurs du marché de sortir une nouvelle mouture de leur produit

10 Crystal Reports V9 est arrivé! Vous aimeriez avoir plus de loisirs? Avec le nouveau Crystal Reports V9, vous allez gagner du temps. La toute dernière version de ce grand classique reconnu par toute l'industrie possède plus de 50 nouvelles fonctionnalités et mises à jour. Elle n'a jamais été aussi rapide ni aussi puissante et elle vous permet de créer et d'intégrer le contenu de rapports personnalisés. Dans la vie, il n'y a pas que le travail qui compte... Les nouvelles fonctionnalités et mises à jour de Crystal Reports V9 Gain de temps lors de la création de rapports grâce à des outils de productivité avancés Amélioration du reporting et de l'intégration des applications Internet Contrôle SQL illimité pour un accès aux données vraiment flexible Echange efficace des éléments de rapport via portails, appareils sans fil et Microsoft Office Achetez avant le 30 septembre et essayez GRATUITEMENT Crystal Analysis Professional. Pour de plus amples informations, tapez Crystal Decisions, Inc. Crystal Decisions et Crystal Reports sont soit des marques déposées, soit des marques commerciales de Crystal Decisions, Inc. aux Etats-Unis et/ou dans d'autres pays. Toutes les marques commerciales ou marques déposées citées appartiennent à leurs propriétaires respectifs.

11 Technique Langage 11 TOUT PROJET INFORMATIQUE DOIT ACCEPTER FACILEMENT DES MODIFICATIONS. PARMI LES TECHNIQUES QUI FACILITENT LES MODIFICATIONS DANS LES DÉVELOPPEMENTS ORIENTÉS OBJET, NOUS PRÉSENTONS LE MÉCANISME DE DÉLÉGATION EXTERNE. MAIS LA DÉLÉGATION PEUT ÊTRE DIFFICILE À METTRE EN PLACE. L ARTICLE PROPOSE UNE TECHNIQUE APPELÉE DYNAMIC JAVA BINDER (DJBINDER), QUI REND LA DÉLÉGATION EXTERNE PRATIQUEMENT TRANSPARENTE EN ENVIRONNEMENT JAVA. Alvaro Schwarzberg, a participé à de multiples projets dans des entreprises internationales (Colombie, Brésil, Etats-Unis), principalement chez Dassault Systèmes. Son expérience concerne principalement le développement objet, internet, les bases de données et le PLM (Product Life Management). J ai eu l opportunité de participer à plusieurs projets pour faire évoluer des applications Java existantes. A ces occasions j ai souvent souhaité pouvoir ajouter de nouvelles fonctionnalités à une classe sans la recompiler. Voici quelques une des raisons qui ont justifié ce souhait : Je n avais pas le droit d accéder ou de modifier le fichier source de la classe. Par exemple, quand la classe avait été développée par un éditeur de logiciels externe. La classe était installée dans beaucoup de sites distribués et la nouvelle fonctionnalité n était utile que pour un nombre limité de ces sites. Il y avait des objets persistants et je ne voulais pas gérer plusieurs versions de la même classe, ni mettre à jour tous les objets persistants en utilisant un outil batch. Je ne voulais pas toucher une classe bien testée qui avait travaillé correctement pendant plusieurs mois ou plusieurs années. D autres développeurs travaillaient sur la même classe et nous devions coordonner nos modifications pour éviter les incompatibilités et ne pas écraser mutuellement nos changements. Cela aurait été bien plus facile si chaque développeur avait pu travailler dans son propre fichier source associée à la fonctionnalité qui l intéressait. Après un temps de réflexion, j ai décidé que je ne voulais pas une solution complètement dynamique comme, par exemple, dans JavaScript où il est possible de rajouter de nouvelles fonctions à une classe pendant l exécution. Dans ce type de langages, la performance est très affectée et il est difficile de maîtriser l architecture de l application. Finalement, j ai créé un outil, appelé Dynamic Java Binder (DJBinder), qui permet d attacher dynamiquement à une classe de nouvelles implémentations d interfaces sans modifier le fichier source de la classe. Les interfaces dynamiquement attachées sont complètement équivalentes aux interfaces listées normalement après le mot clé "implements". DJBinder utilise le mécanisme de chargement de classes de la plateforme Java 2 pour créer le lien entre les interfaces et les classes. Un exemple valant mieux qu un long discours, je me servirai d un exemple comme fil conducteur de mon explication de DJBinder. Voici les définitions utilisés dans cet exemple : class Person public Person (String n, int a) name=n; age=a; allpersons.add (this);; public static Enumeration getall() return allpersons.elements(); ; public String getname() return name; ; protected static Vector allpersons = new Vector(); protected String name ; protected int age ; class Man extends Person public Man (String n, int a) super(n, a); class Woman extends Person public Woman (String n, int a) super(n, a);

12 Technique Langage 12 interface Print void tostandardoutput() ; Il est facile de réaliser que ces classes n ont pas été conçues avec l intention d utiliser un quelconque mécanisme dynamique (comme la grande majorité de classes Java existantes). Mon cas d école est le suivant : imaginez une application qui pendant plusieurs années a créé des objets de type Man et Woman. Maintenant, il est nécessaire d ajouter une fonctionnalité de listing pour imprimer le nom et l âge de chaque personne sur la sortie standard. Afin de réduire le risque de régression la solution développée ne doit pas modifier le code existant de l application. Voyons d abord le code Java que vous devez coder pour résoudre ce problème en utilisant DJBinder. Nous verrons après comment DJBinder fait marcher le tout. Les instructions suivantes utilisent l interface Print pour imprimer les informations d une personne : Person p =... ; ((Print) p).tostandardoutput (); Le cast est nécessaire car l interface Print n est pas implémentée par la classe Person. Le compilateur Java croit que l interface Print est implémentée par une sous-classe de Person, mais nous savons que ceci n est pas vrai. Ni la classe Man, ni la classe Woman n implémentent l interface Print. Dans DJBinder, la façon d implémenter l interface Print sans toucher à la définition de la classe Person est une nouvelle classe appelée DI_Person Print : public abstract class DI_Person Print implements Print public void tostandardoutput() Person p = (Person) (Object) this ; System.out.println (p.getname()) ; Le nom de la classe est très important parce qu il fait le lien entre la classe Person et l interface Print. La classe est abstraite parce qu elle ne peut pas être instanciée directement, ses instances sont créées par BJBinder en fonction des opérations de cast. La ligne principale est : Person p = (Person) (Object) this ; L objet référencé par la pseudo-variable this est castée dans Person afin d accéder à la méthode getname(). Le cast n est pas fait directement, car le compilateur Java interdit le cast entre classes qui n appartiennent pas à la même hiérarchie. Le fait de passer par la classe Object permet de lever cette restriction. Pour imprimer l âge des personnes il faut accéder au membre age de la classe Person. Le problème est que le membre age a un accès protected qui interdit l accès depuis la classe DI_Person Print. La solution offerte par DJBinder est de créer une nouvelle classe DA_Person qui liste les membres de la classe Person qui sont accessibles depuis toutes les classes DI_Person *. Par exemple, nous pouvons utiliser la classe suivante pour autoriser l accès au membre age. abstract class DA_Person public int age; Ce qui nous permet d imprimer l âge des personnes dans la méthode tostandardoutput() : public abstract class DI_Person Print implements Print public void tostandardoutput() Person p = (Person) (Object) this ; System.out.println (p.getname()) ; DA_Person pp = (DA_Person) (Object) this ; System.out.println (pp.age) ; La principale nouveauté est que la pseudovariable this est castée dans DA_Person au lieu de Person afin accéder au membre protected age. Une alternative équivalente serait de caster la variable p : DA_Person pp = (DA_Person) (Object) p; Maintenant nous pouvons rassembler tous les morceaux pour écrire le code qui imprime toutes les personnes : public class PrintAllPersons public static void main (String [] arg) Enumeration e = Person.getAll(); while (e.hasmoreelements()) Print p = (Print) e.nextelement() ; p.tostandardoutput () ; abstract class DA_Person public int age; abstract class DI_Person Print implements Print public void tostandardoutput() Person p = (Person) (Object) this ; System.out.println (p.getname()) ; DA_Person pp = (DA_Person) (Object) this ; System.out.println (pp.age) ; Le mécanisme de DJBinder est similaire à celui des classes internes (inner classes) de Java. Les classes DI_* sont pratiquement des classes internes. La plus grande différence étant que chaque classe DI_* est définie dans un fichier source différent et peut être placée dans un fichier jar différent. De plus le fait que chaque classe DI_* peut être dérivée d une autre classe permet de combler le manque d héritage multiple dans Java d une façon élégante sans les problèmes d autres langages comme C++. Le code Java de l exemple compile normalement, mais à l exécution il y aurait plusieurs erreurs si DJBinder ne profitait pas du chargement dynamique des classes Java pour changer le bytecode. Le chargement des classes Java marche de la façon suivante : chaque fois que la machine virtuelle de Java a besoin d une nouvelle classe, elle demande au class loader courant de retourner le bytecode correspondant. Par exemple, le class loader par défaut cherche un fichier appelé nomdelaclasse.class dans les répertoires listés dans la variable d environnement CLASSPATH, et retourne le contenu du fichier. Pour sa part, le class loader de DJBinder travaille de façon différente. Il se sert du class loader normalement utilisé par l application pour récupérer le bytecode original, et après il modifie le bytecode avant de le retourner à la machine virtuelle. DJBinder demande que le class loader utilisé par la machine virtuelle soit celui de DJBinder. Pour les programmes de type console il suffit de remplacer la commande : pathdelamachinevirtuelle paramètres nomdelapplication paramètresdelapplication par pathdelamachinevirtuelle paramètres amslib.djbinder.djbinder.star.start nomdelapplication paramètresdelapplication La classe amslib.djbinder.start se charge d exécuter l application en utilisant le class loader de DJBinder. Pour les autres types de programme Java (applet, servlet, JSP, etc.) il existe une façon similaire de procéder adaptée aux caractéristiques de chaque environnement d exécution. Par exemple il suffit d exécuter un serveur d applications Java avec amslib.djbinder.start pour que les beans appelés par les JSP et les servlets soient capables d utiliser les interfaces dynamiquement implementées. Le «class loader» de DJBinder modifie le bytecode en quatre endroits : 1. les opérations de cast vers des interfaces. Les exceptions lancées par les opérations de cast sont capturées et une recherche est faite pour trouver une classe nommée DI_classeDeLobjet interface ou DI_superclasseDeLobjet interface. Si la classe est trouvée, un objet de la classe DI_* adé-

13 Technique Langage 13 quate est créé et retourné, sinon l exception est relancée. Le terme superclassedelobjet représente n importe quelle classe dans la hiérarchie de la classe jusqu à java.lang.object. Si le même cast est fait deux fois pour un même objet, le précédent objet DI_* est retourné au lieu de créer un nouvel objet. Ceci permet de garder des informations dans les objets DI_*. Dans mon exemple, cette modification du bytecode évite l exception qui serait normalement lancée par l instruction : Print d = (Print) e.nextelement() ; 2. les opérations de cast vers des classes. Si l objet casté est une implémentation dynamique d interface (un object DI_*), DJBinder remplace le cast par une référence à l objet principal, c est-à-dire l objet qui a déclenché la création de l objet DI_*. Dans mon exemple, cette modification du bytecode évite l exception qui serait lancée par les instructions : Person p = (Person) (Object) this; DA_Person pp = (DA_Person) (Object) this ; 3. les références vers des classes DA_*. Les classes DA_* ne sont qu un artifice pour le compilateur, et en conséquence toutes les références vers une classe DA_XXX sont converties dans des références à la classe XXX. De plus, dans la classe XXX, des méthodes spéciales permettent l accès aux membres protected depuis les classes DI_XXX *. Dans mon exemple ces modifications du bytecode permettent d accéder au membre protected age de la classe Person. 4. les opérations instanceof et ==. Les opérations instanceof et == sont modifiées afin que leur comportement soit compatible avec les opérations de cast. Par exemple, si les classes X, DI_X I et DI_X J existent et la variable v référence un objet de type X, alors les opérations de cast (I) v (J) v ne lancent pas d exception et les opérations : v instaceof I v == (I) v (J) v == (I) v retournent True. Ces modifications du bytecode créent l illusion que l objet principal et les objets DI_* ne forment qu un seul objet. Ceci rend la programmation beaucoup plus facile. La figure 1 montre l architecture logicielle qui est rendue possible par DJBinder. Une dernière condition exigée par DJBinder est que les classes DI_X I et DA_X appartiennent au même package que la Figure 1. Architecture de DJBinder. Les classes et interfaces sont placées dans trois fichiers jar différents. DJBinder fait l'union des trois classes (X, DI_X I et DI_X K). Pour tous les effets pratiques, les interfaces I, J et K sont implémentées par la classe X. classe X, ou à un sous-package appelé djbinder. Par exemple si la classe Person appartient au package acme.applis, alors les classes DI_Person Print et DA_Person doivent appartenir au package acme.applis ou au package acme.applis.djbinder. Le sous-package djbinder permet d utiliser le mécanisme dynamique de DJBinder pour des classes appartenant à un "sealed package", c est-à-dire à un package qui ne peut plus être modifié. Avant de finir, regardons les bénéfices apportés par DJBinder de deux points de vue différents : celui du développeur et celui du client de l application. Pour les développeurs, l unité de modification est normalement le fichier source. C est lui qui a une date de création et de modification. Dans les projets importants, avec plusieurs développeurs, il est nécessaire d établir un mécanisme de réservation afin que deux développeurs ne modifient pas simultanément le même fichier source. DJBinder permet de mieux distribuer les fichiers sources parmi les développeurs, de façon à ce que chaque développeur travaille sur un ensemble bien défini de services (groupés dans une même interface). Ceci facilite le travail en parallèle de plusieurs développeurs (concurrent engineering), et en conséquence la durée du développement est réduite. Pour les clients et/ou les administrateurs d une application, l unité de modification est le fichier exécutable. Dans les applications Java, les fichiers exécutables sont normalement des fichiers jar. DJBinder permet de construire des fichiers jars associés à chaque modification. Il suffit de les ajouter à l environnement d exécution, sans modifier les fichiers jars déjà livrés avec les versions précédentes du produit, pour que les nouvelles fonctionnalités soient disponibles. Normalement, ceci facilite l administration de l application et rassure les clients craintifs de régressions. Une fonctionnalité qui peut être facilement réalisée avec DJBinder est le typage virtuel. Il s'agit de la possibilité d utiliser un type différent du nom de la classe Java pour chercher une implémentation dynamique d interface. Par exemple, vous pouvez associer le type virtuel "Mexican" à une instance de la classe Man (la nationalité étant utilisée comme type virtuel). Dans ce cas l interface Print pourrait être implémentée par la classe DI_Mexican Print et inclure quelques champs additionnels. Différentes instances de la même classe Person peuvent avoir différents types virtuels. Cette flexibilité est très utile, particulièrement pour communiquer avec des applications ou des bases de données existantes. En résumé, DJBinder permet une architecture logicielle très flexible "orientée vers les fonctionnalités" et qui facilite l évolution de n importe quelle application Java, y compris celles qui existent déjà, sans avoir besoin de les recompiler. Pour ce faire, DJBinder utilise le mécanisme de chargement dynamique de classes de Java et il n a pas besoin de compilateurs ni de machines virtuelles spéciales. Droit de publication : Java Developer s Journal (http://www.sys-con.com/java/). ALLER PLUS LOIN Pour plus d information sur le class loader de Java : ClassLoader.html ou contactez moi: Vous pouvez télécharger une version complète de DJBinder depuis le site de DJBinder. Cette version ne peut être utilisée pour un développement commercial sans autorisation de ma part.

14 Palais des Congrès de Versailles 3 et 4 Octobre 2002 Le rendez-vous autour de la Technologie JAVA Un événement co-produit par INFORMATIONS et INSCRIPTION : JAVA, J2EE, J2ME, J2SE, EAI, XML, WSAD, Eclipse, JBuilder, 9iAS, netbeans, SunONE construisent notre avenir En présence de Kim Polese - Co-fondatrice de Java Partenaires Privilèges En partenariat avec l Ingénierie pédagogique Partenaires Majors 3 ème Millénaire & Cie/Cho You

15 Technique Langage 15 POUR UN PROGRAMMEUR NON FAMILIER AVEC LE MÉCANISME D'EXCEPTION, SA DÉCOUVERTE EST SOURCE DE PERPLEXITÉ : POURQUOI UN DISPOSITIF EN APPARENCE SI COMPLIQUÉ POUR ÉTABLIR UN DIAGNOSTIC D'ERREUR? Paul-Bernard Amade, s'occupe des cours "java fondamental" chez Sun Education France après un parcours professionnel orienté vers les langages de programmation et la messagerie (il a participé à la réalisation d'interprètes APL, SQL de langages "propriétaires", et à la réalisation de systèmes X400). Il considère la programmation comme un art à pratiquer entre la gastronomie et le cornet à piston. Objection votre honneur! Il faut arriver à expliquer : pourquoi il est important d'établir un diagnostic précis quand une erreur est détectée (éviter un message comme "une erreur est survenue"!) pourquoi ce diagnostic est lui- même un objet (un simple message sous forme de chaîne de caractère n'est pas terriblement exploitable si on admet l'idée qu'un autre code peut prendre des mesures pour, par exemple, corriger l'erreur) pourquoi l'objet qui établit le diagnostic ne sait pas, a priori, "à qui" faire passer cet objet (un code "réutilisable" est le moins possible dépendant du contexte, l'objet Throwable remonte la pile d'exécution et est repassé à un code initiateur de la demande qui a provoqué l'exception). pourquoi le compilateur Java nous force-t-il, en général, à récupérer quelque part cet objet de diagnostic (pour améliorer la robustesse du code : vous n'avez jamais vu de code dans lequel l'oubli de la prise en compte d'une erreur provoquait des catastrophes?) Nous allons revenir ici sur deux aspects : quelles informations de diagnostic et qui déclenche une Exception? (sans parler du cas où c'est l'exécuteur de la JVM qui décide qu'il y a quelque chose d'anormal). Quelles informations de diagnostic? Supposons que nous écrivions un code applicatif qui découvre subitement qu'il manque un produit commandé par un client, écririons nous : if (yenaplus) throw new ExceptionStockEpuise( "stock épuisé" ); // MAUVAISE IDEE! Cette rédaction appelle plusieurs remarques : C'est une tautologie : si nous avons pris la peine de définir un type de diagnostic précis (ExceptionStockEpuise) la nature même de cet objet dit que le stock est épuisé. Le contenu du message est tout à fait superflu.

16 Technique Langage 16 Bien que la classe mère des Exceptions (java.lang.throwable) définisse un constructeur avec un argument "motif" (de type String). Il faut prendre cette possibilité avec des pincettes : Le motif spécifié doit servir à préciser les circonstances de l'incident et à préciser les informations qui accompagnent le diagnostic. L'intention est, en général, de produire une chaîne "lisible par un être humain"... Cet être humain pourrat'il lire le message? Si votre message est en français et qu'il ne sait lire que le batave le but n'est pas atteint. Moralité: mieux vaut prévoir une chaîne qui soit facilement exploitable par le mécanisme d'internationalisation. Ceci est une autre histoire... Qui nous dit que ce qui récupère le diagnostic est nécessairement un être humain? Peut-être un autre code sera-t'il intéressé par ce diagnostic pour exploiter des informations plus tangibles qu'une simple chaîne de caractère. Peut-ètre y aura-t'il un code quelque part pour s'occuper de ce problème de stock et ce code aurait besoin de données Java. Faisons un essai simplifié de définition de l'exception : package com.pousse.gestion.stock ; public class ExceptionStockEpuise extends Exception public final Produit produitconcerné ; public final Stock étatstock ; public final Demande requête ; public ExceptionStockEpuise (String complémentinfo, Produit produit, Stock état, Demande demande) super(complémentinfo) ; this.produitconcerné = produit ; this.étatstock = état ; this.requête = demande ; // + méthodes spécifiques Comme pour tout exemple celuici ne prétend pas être un modèle mais une incitation à la reflexion. Quelques points: D'abord une figure de style : les champs du diagnostic sont "public final" au lieu d'être "private" avec des accesseurs. En observant les sources mêmes de Java, on s'aperçoit qu'il n'y a pas de politique constante à ce sujet. Pourtant, dans bien des cas, on peut estimer que c'est une bonne stratégie pour un objet diagnostic immuable. Bien sûr cela ne dispense pas, le cas échéant, de doter cet objet d'un comportement spécifique. L'objet Exception essaye de véhiculer toutes les informations importantes sur l'incident. On remarquera qu'il sera toujours temps, dans le code qui récupérera le diagnostic, de générer des informations "lisibles par un être humain". En attendant u n code applicatif pourra aussi prendre des mesures basées sur les informations exploitables par programme. Ceci dit, il faut être prudent sur le transfert d'objets par une exception. Entre le moment où le diagnostic s'est déclenché et le moment où il est effectivement exploité il ne faut pas que l'état d'un objet dont on passe la référence ait évolué d'une manière à fausser le diagnostic. Dans l'exemple on peut imaginer la situation suivante : une demande de produit déclenche une erreur liée à la gestion de stock, avant que le diagnostic soit exploité une autre demande concurrente intervient. Dans ce cas toute information susceptible d'évoluer doit être "clonée" pour figer le diagnostic à un instant T (on peut imaginer que c'est le cas du champ "étatstock" dans notre exemple). Si une instance d'exception "voyage" sur le réseau (entre un client et un serveur, entre applications collaborantes, etc.) il faut bien sûr que les objets référencés puissent eux-mêmes voyager et ça ce n'est pas toujours évident. Bon, on peut toujours faire prendre le relai à une autre Exception qui voyage mieux : nous laisserons le lecteur réfléchir à ce que cela implique. Quelques autres remarques sur ce que contient un diagnostic : Un diagnostic peut être établi par le programmeur quand il détecte une situation anormale et cette détection peut elle-même résulter du déclenchement d'une autre exception. Dans ce cas c'est un code à l'interieur d'un bloc "catch" qui gère la création d'une nouvelle Exception : try... //sauvegarde d'une donnée catch (IOException exc) throw new ExceptionSauvegarde(exc, donnéecourante) ; On a ici deux diagnostics : - on n'a pas pu sauvegarder cette donnée - du fait d'une IOexception que voici. Ce "chainage d'exception" a été systématisé à partir de la version 1.4 de Java. java.lang.throwable est dotée d'un constructeur qui prend en paramètre un autre Throwable et la méthode "getcause()" permet d'obtenir cet autre diagnostic. Les objets Throwable contiennent aussi implicitement des informations sur l'état de la pile. Les programmeurs connaissent généralement les méthodes "printstacktrace()" qui exploitent ces informations. (On notera, par ailleurs, qu'ils utilisent souvent abusivement ces méthodes qui devraient n'être reservées qu'à des situations temporaires de debug.) Java 1.4 permet un accès plus sophistiqué à ces informations au travers de la méthode "getstacktrace()". Le point important dont il faut se souvenir pour avoir un diagnostic correct de ce point de vue est qu'il faut faire le "new" d'une exception pratiquement à l'endroit précis où on fait le "throw" : dans le cas contraire les informations de trace seraient erronées. De manière générale le choix du point de déclenchement mérite une petite réflexion. Qui déclenche une exception? Rapellons ici la théorie. Une demande de service a : des paramètres, un résultat (quand il s'agit d'une méthode), un ou des diagnostics d'erreurs (les exceptions déclarées par la clause "throws"). Outre l'avantage d'une spécification précise du service, ce dispositif nous permet d'éviter des situations "à la langage C" dans lesquelles on a des fonctions qui rendent un résultat et... certains résultats doivent être testés pour détecter un condition anormale. Tests parfois oubliés au détriment de la robustesse du code. Dans la mesure où Java nous offre un mécanisme pour renforcer cette robustesse (les exceptions controlées) il serait dommage d'oublier les leçons du passé : on voit parfois des codes Java qui n'utilisent les exceptions que

17 Technique Langage 17 pour signaler l'aboutissement d'une cascade de tests qui ont échoué. Pour différentes raisons il convient de rapprocher au maximum le déclenchement d'une Exception de la source de l'erreur. Reprenons l'exemple de notre Stock pour illustrer une de ces raisons : la mauvaise idée serait d'écrire dans notre application un code qui, avant de déclencher une Exception, teste une possibilité de demande d'achat pour un Produit qui à son tour demande une information à son Stock. // dans code applicatif... A EVITER! if( monproduit.estdisponible() ) monproduit.acheteselon(mademande); else throw new ExceptionStock(/*parametre */) ; C'est à l'objet le plus proche de la connaissance de la situation anormale de réagir (en l'occurence l'instance de Stock). Cela change le point de vue du service : au lieu de tester si une demande est possible on réalise directement la demande d'achat au risque de la voir échouer. On peut légitimement se demander si cette philosophie est généralisable car un mécanisme d'exception n'est pas neutre au niveau performance. Dans le cas ci-dessus il faut prendre en consideration le fait qu'on est obligé de verrouiller toute la chaine des appels ("synchronized") comprenant le test et la demande d'achat définitive (sinon le produit risque de ne plus être disponible au moment où se réalise l'achat). On aurait donc: dans Stock : quelque chose comme public synchronized void fournirselon(demande dm) throws ExceptionStockEpuise... On notera ici un petit problème avec l'exemple lui même : si ExceptionStockEpuise utilise dans son constructeur un Produit, alors le Stock doit le connaître (nous laissons le lecteur imaginer des correctifs à cette petite incohérence). dans Produit : quelque chose comme public void acheterselon(demande dm) throws ExceptionStockEpuise, Le code propage l'exception venu de l'instance de Stock. etc....jusqu`a ce que l'initiateur de la demande reçoive un diagnostic. Notons que cela n'empêche pas un code intermédiaire de récupérer l'exception avant de la repropager et ceci pour informer d'autres parties intéressées par cet épuisement de stock. Qui récupère une exception? Voilà un vaste problème: quand recupérer un exception dans un bloc catch et que faire dans le cadre de ce bloc? Si l'on considère une application Java comme un assemblage (éventuellement dynamique) de sous-systèmes, chaque sous-système doit signaler à l'appelant l'échec d'une demande de service le concernant. A un point de la hiérarchie des appels un code doit être capable de clore l'incident (ou bien alors l'application s'arrête). Un tel code n'est pas nécessairement situé "à la surface" de l'application (par ex. dans l'interface utilisateur). Dans ce dernier cas on rentre dans une seconde phase de vie de l'exception : comment adresser un rapport signalant à "quelqu'un" que quelque chose s'est passé? Le code qui génère le rapport ne sait pas, a priori, comment il est utilisé (est-il appelé dans le contexte d'une interface graphique avec un utilisateur pour lire le rapport? dans une application en tâche de fond avec un administrateur pour lire le rapport? etc.). Un programmeur aguerri doit savoir répondre à ces questions : Quand utiliser des exceptions controlées, quand utiliser des RuntimeExceptions? Quand récupérer l'une et l'autre? Comment écrire un code qui récupère quand même les Exceptions qui ont échappé aux blocs catch? Quand utiliser des assertions? (à partir de Java1.4) Pourquoi est-il immoral de laisser un bloc "catch" vide? (sauf dans de très rares cas) Comment utiliser les blocs "finally" à bon escient? Comment filtrer des groupes d'exceptions par des "catch" en cascade? Peut-on faire quelque chose d'une Error? Pourquoi n'est-il pas "politiquement correct" d'utiliser printstackstrace()? Comment utiliser des mécanismes de traces, rapport, journalisation et en particulier ceux du package java.util.logging? Comment et à quel moment internationaliser les messages "lisibles par un être humain"? Comment rendre le code plus facile à maintenir en signalant au lecteur les endroits où le déroulement normal des instructions est affecté par la propagation possible d'une Exception. Bon jeu de piste!

18 Technique Langage 18 LA PERSISTANCE DES OBJETS EST UN PROBLÈME NON RÉSOLU EN JAVA. SI L'ON DOIT GÉRER UN PETIT NOMBRE D'OBJETS, LA SÉRIALISATION EST UNE SOLUTION. Gil Francopoulo société Tagmatica Les SGBD Tout d abord, une mise en garde évidente : le présent article reflète l avis personnel de l auteur. Et cet avis n est pas nécessairement celui des autres membres du Club-Java. La persistance des objets n est pas un problème résolu en Java. Quand on a un modèle simple avec un nombre moyen d objets, on peut se satisfaire d un stockage via un SGBD relationnel. Mais si l on a des millions d objets et que l on doit effectuer des jointures (c est bien souvent le cas quand on a un modèle physique très éloigné du modèle conceptuel et que l on doit recalculer le modèle conceptuel), alors le système s écroule. Si on a des objets plus complexes, plus interconnectés ou de l héritage, il vaut mieux passer à un SGBD objets. Dans un cas comme dans l autre, cela passe par l achat (donc la dépendance) d un logiciel tiers. En tout cas, java ne répond pas à cette problématique. On peut toujours chipoter sur le thème : «est-ce qu un langage de programmation doit comporter ou non un mécanisme de persistance?», mais personnellement, je peux répondre «oui» sans hésiter une seconde, tout simplement parce que j en ai souvent besoin et que la pérennité du langage est bien supérieure à celle des fournisseurs de logiciels tiers. Notons qu il existe un projet qui s appelle JDO, qui sera peut-être intégré au JDK, mais ce ne sera pas avant plusieurs années, donc je n en parlerai pas. La sérialisation Si l on doit gérer un petit nombre d objets, une autre possibilité est la sérialisation. Le principe est assez simple : on convertit les objets en un format adapté à la sortie en flux. La désérialisation est le processus inverse qui convertit un objet sérialisé en une instance d objet. Pour qu un objet soit sérialisé, il doit implémenter l interface «java.io.serializable». La sérialisation pose trois problèmes : 1. Quand on désérialise des objets nonstructurés ou structurés sous forme arborescente, le mécanisme est trivial. Mais, quand on a affaire à un graphe (avec ou sans cycle) c est un peu plus délicat : il ne faut pas désérialiser les objets qui l ont déjà été. Il faut donc marquer les objets déjà sérialisés afin de ne pas les dupliquer artificiellement sur disque. On utilise pour cela, soit un attribut local de l objet ou bien un bitset général, ce qui prend moins de place. 2. Lors de la désérialisation, le problème se repose dans le sens inverse : a-t-on ou non déjà créé l objet? Comment relier les objets entre eux si celui-ci a été créé longtemps auparavant? En d autres termes, il faut se livrer à une édition des liens complète. 3. Mais surtout, cela prend beaucoup de temps quand on a beaucoup d objets. J ai eu récemment à gérer 5 millions d objets. Il était

19 Technique Langage 19 hors de question de les gérer par sérialisation, car cela prenait plusieurs heures pour sérialiser et désérialiser. Qu est-ce qu un fichier mappé? La technique du fichier mappé est un mécanisme utilisé depuis longtemps par certains développeurs C. En langage C, les appels systèmes ne sont pas portables : Sous Unix, il faudra faire : «open» puis «mmap» Sous Windows, il faudra faire : «fopen32» puis «fmmap32» C est un peu complexe à mettre en œuvre (et à mettre au point), mais cela marche et un certain nombre de gros logiciels professionnels en tirent parti. Pour ce qui concerne Java, la nouveauté depuis le JDK-1.4 (sorti en version de production en février 2002), c est qu on peut faire la même chose en java. Il va sans dire que le code est strictement identique qu elle que soit la plate-forme. Après avoir importé les packages qui vont bien (c est toujours un peu pénible cette affaire) : import java.io.* ; import java.nio.* ; import java.nio.channels.* ; import java.nio.channels.filechannel.* ; Il suffit des trois lignes magiques suivantes : RandomAccessFile raf= new RandomAccessFile("f", "rw"); FileChannel fc= raf.getchannel(); MappedByteBuffer mbb= fc.map( MapMode.READ_WRITE, 0L, fc.size() ); Explication des trois lignes: Ligne-1 : On crée un RandomAccessFile. C est un fichier qui va nous permettre de nous déplacer dans toute sa longueur. Pour en augmenter la taille, il suffit d écrire en fin de fichier. On va pouvoir lire et écrire sans autre formalité. Ligne-2 : On obtient le canal du fichier. Ligne-3 : On «mappe» le canal sur la mémoire. C est cette instruction qui est magique. A partir de ce moment, on a une zone mémoire qui est associée à un fichier. L association en question n est pas définie strictement dans le langage. Le système d exploitation (SE) gère l association via son mécanisme de mémoire virtuelle. En général, ce sont des pages de 8K octets ou plus et dont la montée et la descente sont contrôlées par l algorithme de gestion de la mémoire virtuelle du SE. Cet algorithme tire parti de la RAM disponible et est assisté par un chip de gestion mémoire prévu à cet effet. Bref Ce que l on sait, c est que les informations sont montées en mémoire à la demande et que lorsque l on ferme le fichier, la totalité de la zone figure sur disque. Notons qu il est possible d influencer la stratégie du SE depuis java avec des ordres spécifiques comme «load», mais cela n a d intérêt (vis-à-vis du reste de la charge de la machine) que lorsqu on a plusieurs fichiers mappés et que l on désire en favoriser l un plutôt que l autre. En fait, disons que ces considérations débordent le périmètre du présent article. Pour plus de détails, vous pouvez consulter : J. Hart, Early Adopter J2SE-1.4 [Wrox Press 2001]. L usage du fichier mappé Maintenant que le fichier est mappé, on dispose d une zone d octets : ce sont des «bytes». Notons que j utilise volontairement le terme de «zone» et non de tableau, car ne n est pas réellement un tableau Java. On va pouvoir se déplacer en spécifiant le déplacement en octets (j insiste, ce sont des octets). On va écrire l objet avec la méthode idoine. Imaginons que l on désire inscrire l entier 7 à la position 36 du fichier, on fera : raf.seek(36l) ; raf.writeint(7); On notera que le paramètre de «seek» est un entier long. C est heureux, car sinon, on ne pourrait pas gérer des fichiers de taille supérieure à 2 gigas (2 31 1). On n a pas forcément besoin de gérer des fichiers de cette taille-là tous les jours, mais cela m est déjà arrivé et j étais bien content de pouvoir le faire. Inversement, pour lire, il suffit de faire : raf.seek(36l) ; int e= raf.readint(); Un peu de pratique sur la sérialisation Voici un petit exemple tout simple de sérialisation. Le programme principal prend un paramètre. Si l on donne le paramètre «creation», l objet est créé et sérialisé. Si l on donne le paramètre «consultation», l objet est désérialisé et interné en mémoire. C est la classe A qui suit : import java.io.*; class A implements Serializable int c1; public static void main(string[] args) String opt= args[0]; if (opt.equals(«creation»)) creation(); else if (opt.equals(«consultation»)) consultation(); static void creation() try A a= new A(); a.c1= 7; ObjectOutputStream out= new ObjectOutputStream( new FileOutputStream(«A.dmp»)); out.writeobject(a); out.close(); catch (Exception e) e.printstacktrace(); static void consultation() try ObjectInputStream in= new ObjectInputStream( new FileInputStream(«A.dmp»)); A a= (A)in.readObject(); System.out.println(«Après rechargement: «+a.c1); in.close(); catch (Exception e) e.printstacktrace(); Si l on a besoin d un traitement spécial (ce qui est souvent le cas), il faut définir les fonctions d E/S notamment pour réaliser les opérations d édition des liens dont il était question au chapitre 3. C est la classe B qui suit : import java.io.*; class B implements Serializable int c1; private void writeobject(objectoutputstream out) throws IOException out.writeint(c1); private void readobject(objectinputstream in) throws IOException c1= in.readint(); public static void main(string[] args) String opt= args[0]; if (opt.equals(«creation»)) creation(); else if (opt.equals(«consultation»)) consultation(); static void creation() try B b= new B(); b.c1= 7;

20 Technique Langage 20 ObjectOutputStream out= new ObjectOutputStream( new FileOutputStream(«B.dmp»)); out.writeobject(b); out.close(); catch (Exception e) e.printstacktrace(); static void consultation() try ObjectInputStream in= new ObjectInputStream( new FileInputStream(«B.dmp»)); B b= (B)in.readObject(); System.out.println(«Après rechargement: «+b.c1); in.close(); catch (Exception e) e.printstacktrace(); Un peu de pratique sur le fichier mappé. C est la classe C qui suit : import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.channels.filechannel.*; class C int c1; static void ecrire(randomaccessfile raf,c c) throws IOException raf.writeint(c.c1); static Object lire(randomaccessfile raf) throws IOException C c= new C(); c.c1= raf.readint(); return c; public static void main(string[] args) String opt= args[0]; if (opt.equals(«creation»)) creation(); else if (opt.equals(«consultation»)) consultation(); static void creation() try C c= new C(); c.c1= 7; RandomAccessFile raf= new RandomAccessFile(«C.dmp»,»rw»); FileChannel fc= raf.getchannel(); MappedByteBuffer mbb= fc.map(mapmode.read_write,0l,fc.size()); ecrire(raf,c); fc.close(); catch (Exception e) e.printstacktrace(); static void consultation() try RandomAccessFile raf= new RandomAccessFile(«C.dmp»,»rw»); FileChannel fc= raf.getchannel(); MappedByteBuffer mbb= fc.map(mapmode.read_write,0l,fc.size()); C c= (C)lire(raf); System.out.println(«Après rechargement: «+c.c1); fc.close(); catch (Exception e) e.printstacktrace(); Discussion Les trois exemples de classe ne sont destinés à servir de modèle à une gestion de persistance d un graphe. Ils sont juste présentés pour établir une comparaison entre la sérialisation et le fichier mappé. Ces deux mécanismes sont très différents. La question qui est souvent posée est : «Est-ce que tous les objets sont chargés en mémoire?» Via la sérialisation, la réponse est clairement «oui», puisque les objets sont internés par création en début de session. Via le fichier mappé, la réponse est «non». Au début de session, on mappe le fichier : on prépare le terrain. Au cours de la session, le fichier est chargé à la demande (page par page) et les objets sont créés un par un à la demande. Les difficultés d édition de liens (évoquées au chapitre 3) n existent plus. Ce qui peut paraître étrange, c est que l on arrive à gérer des millions d objets comme cela. Et bien justement : pour gérer de grandes bases d objets, il faut prendre des techniques simples. Si l on utilise des moyens tortueux, on n y arrive pas. Le lecteur perspicace aura peut-être comprit qu il est possible de se servir d un fichier mappé pour implémenter un véritable système de gestion d objets avec des index, des relations, des listes, de l héritage et des transactions etc. C est d ailleurs comme cela que fonctionnent certains SGBD objets du commerce (présent ou passé). Mais ce n est pas une mince affaire à développer. Ce sera peut-être le sujet d un autre article?

VisualAge Pacbase 3.0 et WebSphere

VisualAge Pacbase 3.0 et WebSphere VisualAge Pacbase 3.0 et WebSphere Conférence VisualAge Pacbase 13 décembre 2001 Fernand Bonaguidi Jean-François Lévi 1 La plateforme logicielle WebSphere Applications de s et de Partenaires Accélérateurs

Plus en détail

Présentation générale des Web Services

Présentation générale des Web Services Présentation générale des Web Services Vue Globale Type d'architecture reposant sur les standards de l'internet Alternative aux architectures classiques : Client/serveur n/tiers Orientée services permettant

Plus en détail

Solutions de gestion de la sécurité Livre blanc

Solutions de gestion de la sécurité Livre blanc Solutions de gestion de la sécurité Livre blanc L intégration de la gestion des identités et des accès avec l authentification unique Objectif : Renforcer la politique de sécurité et améliorer la productivité

Plus en détail

FOIRE AUX QUESTIONS ACT! 2009

FOIRE AUX QUESTIONS ACT! 2009 FOIRE AUX QUESTIONS ACT! 2009 Informations générales sur ACT! 1. Quelles sont les principales fonctionnalités d ACT!? - Gérer tous vos contacts et vos clients en toute simplicité - Communiquer avec vos

Plus en détail

Cahier de charges (Source : "Java EE - Guide de développement d'applications web en Java" par Jérôme Lafosse) Module. Site Web dynamique JSP / Servlet

Cahier de charges (Source : Java EE - Guide de développement d'applications web en Java par Jérôme Lafosse) Module. Site Web dynamique JSP / Servlet Cahier de charges (Source : "Java EE - Guide de développement d'applications web en Java" par Jérôme Lafosse) Module Site Web dynamique JSP / Servlet Sujet : betaboutique Soutenance le 04 / 01 /2013 &

Plus en détail

IBM WebSphere ILOG JRules Business Rule Management System (BRMS) systèmes de gestion de règles métier

IBM WebSphere ILOG JRules Business Rule Management System (BRMS) systèmes de gestion de règles métier Automatisation des décisions métier et réduction du délai de lancement de nouvelles initiatives IBM WebSphere ILOG JRules Business Rule Management System (BRMS) systèmes de gestion de règles métier Gestion

Plus en détail

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel. Méthode de Test Pour WIKIROUTE Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel. [Tapez le nom de l'auteur] 10/06/2009 Sommaire I. Introduction...

Plus en détail

Auto-évaluation Aperçu de l architecture Java EE

Auto-évaluation Aperçu de l architecture Java EE Auto-évaluation Aperçu de l architecture Java EE Document: f1218test.fm 22/03/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION APERÇU

Plus en détail

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité. , datée du 24 avril 2012 IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité. Table des matières 1 Présentation 2 Date de disponibilité

Plus en détail

Architectures et Web

Architectures et Web Architectures et Web Niveaux d'abstraction d'une application En règle générale, une application est découpée en 3 niveaux d'abstraction : La couche présentation ou IHM (Interface Homme/Machine) gère les

Plus en détail

Unité de formation 1 : Structurer une application. Durée : 3 semaines

Unité de formation 1 : Structurer une application. Durée : 3 semaines PROGRAMME «DEVELOPPEUR LOGICIEL» Titre professionnel : «Développeur Logiciel» Inscrit au RNCP de niveau III (Bac+2) (JO du 23 Octobre 2007) (32 semaines) Unité de formation 1 : Structurer une application

Plus en détail

La page générale de téléchargement se trouve à l adresse http://developers.sun.com/resources/downloads.html

La page générale de téléchargement se trouve à l adresse http://developers.sun.com/resources/downloads.html Site de Sun La page générale de téléchargement se trouve à l adresse http://developers.sun.com/resources/downloads.html Toutes les SDK et les run-time sont téléchargeable à l adresse : http://java.sun.com/downloads/

Plus en détail

Etude Comparative entre Alfresco Share et MS SharePoint STARXPERT AUTEUR DATE 4 OCTOBRE 2011 VERSION 1.0

Etude Comparative entre Alfresco Share et MS SharePoint STARXPERT AUTEUR DATE 4 OCTOBRE 2011 VERSION 1.0 Etude Comparative entre Alfresco Share et MS SharePoint AUTEUR DATE 4 OCTOBRE 2011 STARXPERT VERSION 1.0 StarXpert 2011 STARXPERT Siège social : 100, rue des Fougères 69009 Lyon Tel 01 75 57 84 80 info@starxpert.fr

Plus en détail

SOAP OU REST, QUE CHOISIR?

SOAP OU REST, QUE CHOISIR? SOAP OU REST, QUE CHOISIR? Eric van der Vlist (vdv@dyomedea.com) SOAP ou REST, que choisir? Web Services Convention Juin 2004 Eric van der Vlist (vdv@dyomedea.com) SOAP-- WS Convention 2004 -- Page 1 COMPARER

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 16 NFP111 Systèmes et Applications Réparties Cours 10 - Les Enterprise Java Beans ( aux serveurs ) Claude Duvallet Université du Havre UFR Sciences et Techniques

Plus en détail

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES DÉCOUVREZ DES POSSIBILITÉS ILLIMITÉES GRÂCE A L INTÉGRATION À DES SYSTÈMES D ENTREPRISE EXISTANTS FONCTIONNALITÉS Connectivité des systèmes

Plus en détail

REQUEA. v 1.0.0 PD 20 mars 2008. Mouvements d arrivée / départ de personnels Description produit

REQUEA. v 1.0.0 PD 20 mars 2008. Mouvements d arrivée / départ de personnels Description produit v 1.0.0 PD 20 mars 2008 Mouvements d arrivée / départ de personnels Description produit Fonctionnalités L application Gestion des mouvements d arrivée / départ de Requea permet la gestion collaborative

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/5 Titre professionnel : Reconnu par l Etat de niveau III (Bac), inscrit au RNCP (arrêté du 12/10/07, J.O. n 246 du 23/10/07) (32 semaines) Unité 1 : Structurer une application 6 semaines Module

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM)

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM) LA BOITE A OUTILS DE L ACHETEUR DE BPM Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM) La boîte à outils de l acheteur de solution BPM -

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 38 NFP111 Systèmes et Applications Réparties Cours 11 - Les Enterprise Java Beans (Introduction aux Enterprise Claude Duvallet Université du Havre UFR Sciences

Plus en détail

Environnements de Développement

Environnements de Développement Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement: Environnements de Développement BEN ABDELJELIL HASSINE Mouna m.bnaj@yahoo.fr Développement des systèmes d Information Syllabus

Plus en détail

Programmation Web Avancée Introduction aux services Web

Programmation Web Avancée Introduction aux services Web 1/21 Programmation Web Avancée Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web PROGRAMMATION PUBLIC Professionnels informatiques qui souhaitent développer des applications et «applets» Java DUREE 4 jours 28 heures OBJECTIF Créer divers «applets» à intégrer dans un site Web dynamique,

Plus en détail

Programmation Avancée pour le Web

Programmation Avancée pour le Web L3 Informatique Option : ISIL Programmation Avancée pour le Web RAMDANI Med U Bouira 1 Contenu du module Introduction aux applications Web Rappels sur les sites Web Conception d une application Web Notion

Plus en détail

Architecture Logicielle

Architecture Logicielle Architecture Logicielle Les applications d'entreprise exemple : La technologie JEE Année universitaire 2013/2014 Semestre 1 Introduction Une application d'entreprise a généralement les caractéristiques

Plus en détail

Performance de la réplication de données Avril 2008. IBM InfoSphere Change Data Capture : Réplication de données hautement performante

Performance de la réplication de données Avril 2008. IBM InfoSphere Change Data Capture : Réplication de données hautement performante Avril 2008 IBM Change Data Capture : Réplication de données hautement performante Page 2 Le saviez-vous? Plus de 500 clients utilisent IBM Change Data Capture pour résoudre de multiples problématiques

Plus en détail

Java pour le Web. Cours Java - F. Michel

Java pour le Web. Cours Java - F. Michel Java pour le Web Cours Java - F. Michel Introduction à JEE 6 (ex J2EE) Historique Qu'est-ce que JEE JEE : Java Entreprise Edition (ex J2EE) 1. Une technologie outils liés au langage Java + des spécifications

Plus en détail

IBM Tivoli Identity Manager

IBM Tivoli Identity Manager Automatise la gestion du cycle de vie des identités IBM Tivoli Identity Manager Points forts Gérer l accès aux systèmes hérités et e-business Un moteur de dimensionnement intégré pour automatiser la Permet

Plus en détail

Scub Foundation. Socle technique Java Open Source http://www.scub-foundation.org

Scub Foundation. Socle technique Java Open Source http://www.scub-foundation.org Scub Foundation Socle technique Java Open Source http://www.scub-foundation.org Présentation de Scub Présentation de Scub Scub est une société de service en informatique qui a pour but de fournir du conseil

Plus en détail

les étapes cruciales pour une intégration réussie ;

les étapes cruciales pour une intégration réussie ; Quand vous pensez «CRM», pensez- vous d'abord (et souvent seulement) à une solution Par exemple, certaines entreprises utilisent la CRM pour la gestion des ventes et/ou pour mener des campagnes marketing

Plus en détail

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée

Plus en détail

Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire

Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire FICHE PRODUIT Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire BENEFICES Des projets réussis dans les délais et les budgets La bonne donnée disponible au

Plus en détail

*4D, quand c est la solution qui compte. 4D démocratise les services Web

*4D, quand c est la solution qui compte. 4D démocratise les services Web *4D, quand c est la solution qui compte. 4D démocratise les services Web Table des matières I. INTRODUCTION page 3 II. VERS UNE DEFINITION DES SERVICES WEB 1. Qu est ce que c est? page 3 2. A quoi ça sert?

Plus en détail

Guide d'installation de Citrix EdgeSight pour test de charge. Citrix EdgeSight pour test de charge 3.8

Guide d'installation de Citrix EdgeSight pour test de charge. Citrix EdgeSight pour test de charge 3.8 Guide d'installation de Citrix EdgeSight pour test de charge Citrix EdgeSight pour test de charge 3.8 Copyright L'utilisation du produit documenté dans ce guide est soumise à l'acceptation préalable du

Plus en détail

46 pour développer un projet e-learning

46 pour développer un projet e-learning Les meilleurs outils Web 2.0 46 pour développer un projet e-learning Pour répondre à la demande des acteurs d'un système de formation à distance, les LMS proposent trois types de fonctionnalités que nous

Plus en détail

Les serveurs applicatifs et les architectures Java

Les serveurs applicatifs et les architectures Java 03 Lucas Part 02 Page 179 Lundi, 20. août 2001 2:58 14 Chapitre 15 Les serveurs applicatifs et les architectures Java Nous avons vu jusqu ici, dans les chapitres précédents, que les utilisateurs accèdent

Plus en détail

Modernisation des applications Mainframe. avec. WebSphere Host Access Transformation Services

Modernisation des applications Mainframe. avec. WebSphere Host Access Transformation Services Modernisation des applications Mainframe avec WebSphere Host Access Transformation Services Donald Calas dcalas@fr.ibm.com 2/25/2005 2005 IBM Corporation WebSphere Host Access Transformation Services (HATS)

Plus en détail

IBM Lotus Domino Designer 6.5.1

IBM Lotus Domino Designer 6.5.1 Créez rapidement des applications multi-plateformes pour automatiser les processus métier et améliorer l efficacité de votre workflow IBM Lotus Domino Designer 6.5.1 Créez, testez et déployez rapidement

Plus en détail

Les architectures N-tiers

Les architectures N-tiers Les architectures N-tiers 1 SOMMAIRE DU COURS XML ET LES ARCHITECTURES N-TIER Introduction aux architectures N-tier Serveurs d applications Déploiement d applications J2EE Tiers applicatif : servlets Tiers

Plus en détail

Modèle spagetthi et solution EAI

Modèle spagetthi et solution EAI EAI Définition L'EAI est une notion ancienne mais toujours d'actualité. En effet, le besoin de faire communiquer des applications développées à des moments différents, dans des technologies différentes

Plus en détail

Dr. Djamel Benmerzoug. Email : djamel.benmerzoug@univ-constantine2.dz

Dr. Djamel Benmerzoug. Email : djamel.benmerzoug@univ-constantine2.dz Master 2 SITW Les services Web Dr. Djamel Benmerzoug Email : djamel.benmerzoug@univ-constantine2.dz Maitre de Conférences A, Département TLSI Faculté des NTIC Université Constantine 2 Abdelhamid Mehri

Plus en détail

Les serveurs d applications :une introduction

Les serveurs d applications :une introduction Les serveurs d applications : une introduction Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com Octobre 2006 Plan de la présentation

Plus en détail

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information. PACBASE «Interrogez le passé, il répondra présent.». Le Module e-business Les entreprises doivent aujourd hui relever un triple défi. D une part, elles ne peuvent faire table rase de la richesse contenue

Plus en détail

Reporting Services - Administration

Reporting Services - Administration Reporting Services - Administration Comment administrer SQL Server Reporting Services Cet article a pour but de présenter comment gérer le serveur depuis le "portail" de Reporting Services. Nous verrons

Plus en détail

Introduction MOSS 2007

Introduction MOSS 2007 Introduction MOSS 2007 Z 2 Chapitre 01 Introduction à MOSS 2007 v. 1.0 Sommaire 1 SharePoint : Découverte... 3 1.1 Introduction... 3 1.2 Ce que vous gagnez à utiliser SharePoint... 3 1.3 Dans quel cas

Plus en détail

Développement logiciel pour l Architecture Orientée Services avec IBM Rational Software Development Platform

Développement logiciel pour l Architecture Orientée Services avec IBM Rational Software Development Platform IBM Software Group Développement logiciel pour l Architecture Orientée Services avec IBM Rational Software Development Platform Thierry Bourrier, Techical Consultant thierry.bourrier@fr.ibm.com L Architecture

Plus en détail

Technologie SAFE* X3 - Outils et Développement. Développement, Fonction de base 2 e partie 3 jours. Web Services. 2 jours

Technologie SAFE* X3 - Outils et Développement. Développement, Fonction de base 2 e partie 3 jours. Web Services. 2 jours - Vous êtes consultant, chef de projets, acteur clé au sein de votre entreprise et vous intervenez en phase de déploiement ou de paramétrage d un logiciel Sage, Optez pour les formations «Produits» : Nous

Plus en détail

Qu'est-ce qu'un Web Service?

Qu'est-ce qu'un Web Service? WEB SERVICES Qu'est-ce qu'un Web Service? Un Web Service est un composant implémenté dans n'importe quel langage, déployé sur n'importe quelle plate-forme et enveloppé dans une couche de standards dérivés

Plus en détail

CA Mainframe Software Manager r3.1

CA Mainframe Software Manager r3.1 FICHE PRODUIT CA Mainframe Software Manager CA Mainframe Software Manager r3.1 CA Mainframe Software Manager (CA MSM) est un composant clé de la stratégie Mainframe 2.0 de CA Technologies, qui vous aide

Plus en détail

Pro/INTRALINK 10.0. Guide des programmes de formation

Pro/INTRALINK 10.0. Guide des programmes de formation Pro/INTRALINK 10.0 Guide des programmes de formation Guide des programmes de formation avec instructeur Mise à jour vers Windchill 10.0 pour les administrateurs système Administration du système de Windchill

Plus en détail

Tour d horizon de Java EE 6

Tour d horizon de Java EE 6 1 Tour d horizon de Java EE 6 De nos jours, les entreprises évoluent dans une compétition à l échelle mondiale. Elles ont besoin pour résoudre leurs besoins métiers d applications qui deviennent de plus

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Qu est-ce que ArcGIS?

Qu est-ce que ArcGIS? 2 Qu est-ce que ArcGIS? LE SIG ÉVOLUE Depuis de nombreuses années, la technologie SIG améliore la communication, la collaboration et la prise de décision, la gestion des ressources et des infrastructures,

Plus en détail

J2EE : Services Web. Stéphane Croisier, Directeur Serge Huber, Directeur Technique. 13 Juin 2002. 2002 Jahia Ltd. All rights reserved.

J2EE : Services Web. Stéphane Croisier, Directeur Serge Huber, Directeur Technique. 13 Juin 2002. 2002 Jahia Ltd. All rights reserved. J2EE : Services Web Stéphane Croisier, Directeur Serge Huber, Directeur Technique 13 Juin 2002 Aperçu Interopérabilité en XML/HTTP SOAP ebxml Outils d EAI JXTA Normes d interopérabilité XML SOAP/UDDI Inventé

Plus en détail

Gestion des immeubles

Gestion des immeubles RAPPORT DE CONCEPTION Gestion des immeubles BOUSSRHAN YOUSSEF & BENZITI WALID Email : Youssefboussrhan@gmail.com GSM : 0678510690, 0611347597 ISTA NTIC SYBA CRJJ GROUPE B Annexe : Figure 1: Diagramme de

Plus en détail

Typologie du logiciel. Typologie du logiciel. Ordinateur? ORDINATEUR. Computer = Hardware + Software. Ordinateur = Matériel + Logiciel

Typologie du logiciel. Typologie du logiciel. Ordinateur? ORDINATEUR. Computer = Hardware + Software. Ordinateur = Matériel + Logiciel Architecture Logicielle des Systèmes d Information (ALSI) Ordinateur? ORDINATEUR MATERIEL Computer = Hardware + Software Septembre 2010 Sources: GJL, Wikipédia,, Internet Ordinateur = Matériel + Logiciel

Plus en détail

Modernisation des applications Mainframe. avec. WebSphere Host Access Transformation Services

Modernisation des applications Mainframe. avec. WebSphere Host Access Transformation Services Modernisation des applications Mainframe avec WebSphere Host Access Transformation Services Donald Calas dcalas@fr.ibm.com 9/1/2004 2004 IBM Corporation Les enjeux de la modernisation du legacy Applications

Plus en détail

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile)

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile) INGENIEUR EN SCIENCES INFORMATIQUES RAPPORT D ETUDE TECHNOLOGIQUE SUR LES SOLUTIONS WEB CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, ) Student : Jiachen NIE Parcours: IHM Subject : Adaptation des Interfaces

Plus en détail

Ecole Nationale Supérieure des Télécommunications Les outils XML

Ecole Nationale Supérieure des Télécommunications Les outils XML Ecole Nationale Supérieure des Télécommunications Les outils XML Page 1 sur 13 SOMMAIRE 1 Introduction 3 2 Parseur XML et processeur XSLT 4 2.1 Le Parseur XML v2 4 2.1.1 Les API DOM et SAX 4 2.1.2 Le parseur

Plus en détail

Refonte front-office / back-office - Architecture & Conception -

Refonte front-office / back-office - Architecture & Conception - Refonte front-office / back-office - Architecture & Conception - GLG204 - Architectures Logicielles Java 2008/2009 Nom : Cédric Poisson Matricule : 06-49012 Version : 1.0 Jeudi 28 mai 2009 1 / 23 Table

Plus en détail

InfraCenter Introduction

InfraCenter Introduction Peregrine InfraCenter Introduction DICW-43-FR03 InfraCenter Copyright 2003 Peregrine Systems, Inc. Tous droits réservés. Les informations contenues dans ce document sont la propriété de Peregrine Systems,

Plus en détail

Introduction à LINQ. Chapitre 1. Qu est-ce que LINQ?

Introduction à LINQ. Chapitre 1. Qu est-ce que LINQ? Chapitre 1 Introduction à LINQ En surfant sur le Web, vous trouverez différentes descriptions de LINQ (Language Integrated Query), et parmi elles : LINQ est un modèle de programmation uniforme de n importe

Plus en détail

SIO-65291 Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

SIO-65291 Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault SIO-65291 Page 1 de 5 1- Objectifs généraux Applications Web dynamiques Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault acquérir les principes et concepts fondamentaux dans le domaine d'applications

Plus en détail

Visualiser, concevoir, déployer et interagir avec vos données Transformez vos données à l aide de Crystal Reports

Visualiser, concevoir, déployer et interagir avec vos données Transformez vos données à l aide de Crystal Reports Visualiser, concevoir, déployer et interagir avec vos données Transformez vos données à l aide de Crystal Reports Solutions SAP BusinessObjects de Business Intelligence Crystal Reports Manipulation de

Plus en détail

Les nouvelles architectures des SI : Etat de l Art

Les nouvelles architectures des SI : Etat de l Art Les nouvelles architectures des SI : Etat de l Art Objectif Mesurer concrètement les apports des nouvelles applications SI. Être capable d'évaluer l'accroissement de la complexité des applications. Prendre

Plus en détail

SOA et Services Web. 23 octobre 2011. SOA: Concepts de base

SOA et Services Web. 23 octobre 2011. SOA: Concepts de base SOA et Services Web 23 octobre 2011 1 SOA: Concepts de base 2 Du client serveur à la SOA N est Nest pas une démarche entièrement nouvelle: années 1990 avec les solutions C/S Besoins d ouverture et d interopérabilité

Plus en détail

W4 - Workflow La base des applications agiles

W4 - Workflow La base des applications agiles W4 - Workflow La base des applications agiles, W4 philippe.betschart@w4global.com Vous avez dit «workflow»? Processus : Enchaînement ordonné de faits ou de phénomènes, répondant à un certain schéma et

Plus en détail

La version 12 de PaperPort s est enrichie de nombreuses fonctions qui vont vous aider à gérer encore plus efficacement l ensemble de vos documents.

La version 12 de PaperPort s est enrichie de nombreuses fonctions qui vont vous aider à gérer encore plus efficacement l ensemble de vos documents. Bienvenue! Nuance PaperPort est un logiciel de gestion documentaire qui vous permet de numériser, d organiser, de consulter, de manipuler et de partager vos documents papier et vos fichiers numériques

Plus en détail

Sélectionner la bonne base de données de gestion de configurations pour mettre en place une plate-forme efficace de gestion de services.

Sélectionner la bonne base de données de gestion de configurations pour mettre en place une plate-forme efficace de gestion de services. Solutions de Service Management Guide d achat Sélectionner la bonne base de données de gestion de configurations pour mettre en place une plate-forme efficace de gestion de services. Aujourd hui, toutes

Plus en détail

Editeurs de logiciels. Votre guide SMS

Editeurs de logiciels. Votre guide SMS Votre guide SMS SMS et logiciels Les éditeurs de logiciels intègrent de plus en plus le SMS dans leurs produits, notamment pour permettre l envoi d alertes, de rappels de rendez-vous ou encore de notifications.

Plus en détail

Cours Android. Cours en ligne Développement sur mobile avec Android. Académie Libre info@academielibre.fr

Cours Android. Cours en ligne Développement sur mobile avec Android. Académie Libre info@academielibre.fr Cours Android Cours en ligne Développement sur mobile avec Android Académie Libre info@academielibre.fr Programme général du cours Développement sur mobile avec Android Module 1 - Programmation J2ee A)

Plus en détail

WEBSPHERE & RATIONAL. Jacques Rage

WEBSPHERE & RATIONAL. Jacques Rage WEBSPHERE & RATIONAL Jacques Rage Agenda Websphere WAS MQ Commerce et Portail Smash Travailler avec Webphere : Rational Les nouveaux venus Vendre Websphere Les liens Websphere qu'est ce que c'est? C'est

Plus en détail

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium dans le cadre du projet JASMINe Avril 2008 Table des matières 1 Introduction 3 1.1 Rappel sur JASMINe.......................................

Plus en détail

Spécification du profil UML d assemblage cible EJB (version 1)

Spécification du profil UML d assemblage cible EJB (version 1) Spécification du profil UML d assemblage cible EJB (version 1) Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti) Référence : Livrable 2.2 Date : 31 mai 2002

Plus en détail

Fonctionnalités de développement

Fonctionnalités de développement 163 Chapitre 5 Fonctionnalités de développement 1. Optimisation des applications ASP.NET Fonctionnalités de développement 1.1 Présentation de ASP.NET ASP.NET est un ensemble de technologies créé par Microsoft

Plus en détail

//////////////////////////////////////////////////////////////////// Administration bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application Architecture Multi-Tier Traditionnellement une application informatique est un programme exécutable sur une machine qui représente la logique de traitement des données manipulées par l application. Ces

Plus en détail

Synthèse de son offre logicielle

Synthèse de son offre logicielle Connecting your business Synthèse de son offre logicielle Copyright 2006, toute reproduction ou diffusion non autorisée est interdite STREAM MIND Créateur de produits logiciels innovants dans le traitement

Plus en détail

Apache Tomcat 8 Guide d'administration du serveur Java EE 7 sous Windows et Linux

Apache Tomcat 8 Guide d'administration du serveur Java EE 7 sous Windows et Linux Avant-propos 1. À qui s adresse ce livre? 11 2. Les pré-requis 12 Préambule 1. Rappel sur les architectures Internet/Intranet/Extranet 13 1.1 Le protocole HTTP 14 1.1.1 Les méthodes HTTP 16 1.1.2 Les codes

Plus en détail

WordPress : Guide à l édition

WordPress : Guide à l édition WordPress : Guide à l édition WordPress : Guide à l édition... 1 Présentation... 2 1. Accès au site... 2 2. Le tableau de bord... 2 3. Editez les contenus... 4 Quelle est la différence entre les pages

Plus en détail

Annuaires LDAP et méta-annuaires

Annuaires LDAP et méta-annuaires Annuaires LDAP et méta-annuaires Laurent Mynard Yphise 6 rue Beaubourg - 75004 PARIS yphise@yphise.com - http://yphise.fr T 01 44 59 93 00 F 01 44 59 93 09 LDAP020314-1 Agenda A propos d Yphise Les annuaires

Plus en détail

Exceed 8.0. Nouvelles fonctionnalités

Exceed 8.0. Nouvelles fonctionnalités Exceed 8.0 Nouvelles fonctionnalités Copyright Hummingbird 2002 Page 1 of 9 Sommaire Sommaire... 2 Généralités... 3 Conformité à la section 508 de la Rehabilitation Act des Etats-Unis... 3 Certification

Plus en détail

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures Software propose une offre d intégration unique, qui apporte l équilibre parfait entre investissements et performances pour les entreprises qui doivent sans cesse améliorer leurs processus. Des caractéristiques

Plus en détail

Contact. entreprise. Appsfinity Gmbh Neuhofstrasse 3a CH 6340 Baar (ZG)

Contact. entreprise. Appsfinity Gmbh Neuhofstrasse 3a CH 6340 Baar (ZG) Contact entreprise. Appsfinity Gmbh Neuhofstrasse 3a CH 6340 Baar (ZG) Tel: +41 415 520 504 Email: sales@onlogis.com Visibilité et controle sur vos opérations, n importe où et à tout moment... Onlogis

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Mission Val de Loire 81 rue Colbert BP 4322 37043 TOURS CEDEX 1 Siret 254 503 048 00012. Cahier des charges MAINTENANCE INFORMATIQUE

Mission Val de Loire 81 rue Colbert BP 4322 37043 TOURS CEDEX 1 Siret 254 503 048 00012. Cahier des charges MAINTENANCE INFORMATIQUE Mission Val de Loire 81 rue Colbert BP 4322 37043 TOURS CEDEX 1 Siret 254 503 048 00012 Cahier des charges MAINTENANCE INFORMATIQUE Mai 2013 Table des matières Sommaire 1 Introduction... 3 1.1 Objectifs...

Plus en détail

Sauvegarde des bases SQL Express

Sauvegarde des bases SQL Express Sauvegarde des bases SQL Express Sauvegarder les bases de données avec SQL Express Dans les différents articles concernant SQL Server 2005 Express Edition, une problématique revient régulièrement : Comment

Plus en détail

Créer et partager des fichiers

Créer et partager des fichiers Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation

Plus en détail

DRS. Donnez des Capacités à Votre Serveur d Impression d Entreprise. Distributeur exclusif de la gamme des logiciels Levi, Ray & Shoup, Inc.

DRS. Donnez des Capacités à Votre Serveur d Impression d Entreprise. Distributeur exclusif de la gamme des logiciels Levi, Ray & Shoup, Inc. DRS Donnez des Capacités à Votre Serveur d Impression d Entreprise Distributeur exclusif de la gamme des logiciels Levi, Ray & Shoup, Inc. Les documents les plus importants de votre entreprise sont issus

Plus en détail

Environnements de développement

Environnements de développement Environnements de développement Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/edi/ Introduction aux EDI, la plateforme

Plus en détail

Points forts : Amélioration de l efficacité des activités de marketing

Points forts : Amélioration de l efficacité des activités de marketing AUTOMATISATION DU MARKETING Le module d automatisation du marketing dans Microsoft Business Solutions Axapta vous offre une vue détaillée pour gérer des campagnes ciblées et personnalisées à travers tous

Plus en détail

Rationalisez vos processus et gagnez en visibilité grâce au cloud

Rationalisez vos processus et gagnez en visibilité grâce au cloud Présentation de la solution SAP s SAP pour les PME SAP Business One Cloud Objectifs Rationalisez vos processus et gagnez en visibilité grâce au cloud Favorisez une croissance rentable simplement et à moindre

Plus en détail

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

Plus en détail

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova I. Introduction Dans une période où la plasticité peut aider à réduire les coûts de développement de projets comme des applications mobile,

Plus en détail

Étude comparative de Dimensions CM et de Subversion Comparaison des performances

Étude comparative de Dimensions CM et de Subversion Comparaison des performances Présentation de solution CARACTÉRISTIQUES PRINCIPALES Gestion des processus, changements, configurations, versions et mises en production à partir d'une architecture unique Assistance en vue d'une fusion

Plus en détail

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. www.sybase.fr/poweramc DOCUMENTATION

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. www.sybase.fr/poweramc DOCUMENTATION Sybase PowerAMC 16 Guide des nouvelles fonctionnalités générales DOCUMENTATION 2 2 www.sybase.fr/poweramc A propos de PowerAMC 16 PowerAMC est une solution de modélisation d'entreprise graphique qui prend

Plus en détail

L essentiel. Coopérative, flexible, très performante : la plateforme Engineering Base. web aucotec.com

L essentiel. Coopérative, flexible, très performante : la plateforme Engineering Base. web aucotec.com L essentiel Coopérative, flexible, très performante : la plateforme Engineering Base web aucotec.com Les défis La globalisation des structures d ingénierie avec le travail en réseau sur des sites dispersés

Plus en détail

Visual Paradigm Contraintes inter-associations

Visual Paradigm Contraintes inter-associations Visual Paradigm Contraintes inter-associations Travail de Bachelor d'informaticien de gestion Partie C Présentation de Visual Paradigm 1 Présentation de Visual Paradigm For UML L objet du travail de Bachelor

Plus en détail