Java, Internet et l'AS400

Internet et Java intègrent tout un ensemble de normes et technologies, constituant une solution de développement cohérente. Ces outils sont standards, relativement peu coûteux, et reposent sur des concepts dont la pérennité est assurée.

Environnement de développement

La famille Java La famille internet Applications distribuées

Environnement de développement

IBM a tenté pendant des années d'imposer un environnement de développement global. Après un ensemble de succès assez relatifs, la plateforme Eclipse a fini par s'imposer, car ouverte, d'une grande efficacité, et en bonne intégration avec des outils standards comme le serveur Tomcat et l'outil de gestion de versions CVS.

Eclipse

Eclipse est un environnement de développement intégré fortement configurable par adjonction de tous types de pluggins.

Tomcat

Tomcat est un serveur Web capable de prendre en charge les JSP, pages HTML intégrant du code java et compilées lors de leur première utilisation. L'administration d'un serveur Web peut être une affaire relativement complexe, mais l'utilisation de Tomcat comme serveur local pour un poste développeur ne présente aucune difficulté. Un redémarrage prend quelques secondes.

Tomcat est un serveur libre issu de la fondation Apache. Pour un développeur, il suffit de savoir qu'il fonctionne sans problème, et que ce qui fonctionne sous Tomcat devrait fonctionner à peu près à l'identique sur un serveur de production beaucoup plus sophistiqué.

CVS

CVS et son successeur SubVersion sont des outils de gestion de version en environnement coopératif.

La famille Java

Java comprend un langage et une riche famille d'outils. Une application intranet doit être dotée d'une interface graphique conviviale, et se connecter à une base de données. Les outils assurant ces fonctions sont intégrés à l'offre Java. L'accès concret à une base de données est fortement dépendant de celle-ci. JDBC est une spécification abstraite, proche de SQL, que les fournisseurs de base de données implémentent.

Le langage Java

Java est un langage objet proche dans ses fonctionnalités de C++ ou Delphi. Ses principales qualités sont la simplicité, la fiabilité et la cohérence.

Les éléments syntaxiques ont été volontairement limités, l'absence de pointeurs et la gestion automatique de la mémoire éliminent les plantages applicatifs brutaux. Au pire, un traitement émet un diagnostic d'erreur compréhensible, et se termine.

La conception est réellement modulaire, classe par classe. La cohérence est vérifiée lors des compilation, mais l'assemblage final réalisé à l'exécution. Une classe peut souvent être créée, testée et modifiée de manière autonome. L'assemblage des classes constituant une application dans une archive constitue une facilité de distribution, pas un impératif du langage.

La boite à outils Java (JDK) est complète, mais l'interface graphique de base (AWT) ne gère pas les objets complexes comme les tableaux et les arbres.

La plus grosse lacune, partagée par d'autres langages, est l'absence d'objets évolués pour gérer les sorties imprimées. En l'an 2000, les classes commencent à être mises en place dans Java 2D, mais sont peu documentées et ne fonctionnent pas toujours correctement.

Les Swings

L'interface graphique Java initiale, l'AWT, repose fortement sur les primitives graphiques du système hôte, et fournit un nombre limité de composants. Cette interface est disponible sur tous les système Java, y compris ceux inclus dans les navigateurs. Les composants Swing sont autonomes, riches, et peuvent être compris et étendus par tout développeur Java. Ils sont inclus dans Java 1.2, et disponibles dans des versions antérieures sous forme d'archive swingall.jar. Cette archive est assez volumineuse.

L'esthétique des composants Swing est analogue à celle des bibliothèques graphiques C++ ou Delphi.

La bonne utilisation de composants graphiques reste une tâche assez complexe. Avec les Swings, la maitrise des concepts Modèle-Composant-Vue est nécessaire.

JDBC

Java Database Connectivity est un ensemble d'interfaces (API) d'accès à une base de donnée par SQL. Elles définissent les objets abstrait et les méthodes utilisés par Java pour accéder aux données, mais pas le code sous-jacent. Quelle que soit la base de données le développeur utilise le même code, mais l'implémentation sous-jacente est spécifique à la base de données. Concrètement, l'implémentation est un driver, fourni comme un ensemble de classes incluses dans une archive. Une implémentation d'accès via ODBC est fournie par défaut, ODBC doit être présent et configuré sur la machine cible.

Connexion à un AS400

L'AS400 est un mini-système IBM fiable, facile à gérer, et doté d'une base de données intégrée. Cette machine est couramment utilisée dans des environnements de production ou de gestion comprenant de 20 à quelques milliers d'utilisateurs, avec ou sans équipe informatique.

Deux drivers JDBC sont disponibles. Le premier est destiné à être utilisé par la machine virtuelle Java intégrée à l'AS400. Le second est une partie de L'AS400 Toolbox for Java, disponible sous forme d'archive jt400.jar. Les performances sont comparables à un accès SQL natif. Le PC et l'AS400 doivent se trouver sur le même réseau IP. Aucun autre middleware n'est requis.

La mise en place peut être optimisée en intégrant les requêtes dans des procédures stockées renvoyant un ResultSet, écrites en RPG ou COBOL.

Le passage à Java est possible pour tout programmeur RPG intéressé par la micro informatique. Un JTree ou une JTable n'est pas plus difficile à maitriser qu'un sous-fichier ou une édition avec ruptures. L'approche objet repose sur des concepts qui sont nouveaux en programmation mais familiers dans l'élaboration d'une application volumineuse. Un développeur habitué à modulariser ses projets RPG, et ayant pris le temps d'intégrer une approche métier du découpage des taches par objets, produira du code de meilleure qualité qu'un développeur pur Java trop polarisé sur une approche technique.

Dans les langages traditionnels, il est souvent possible et nécessaire de mémoriser les modèles de code employés. Cette démarche ne s'applique pas en objet, car les modèles sont complexes et variés : on retient un cadre, et on retrouve le reste. Un apprentissage progressif est préférable, en partant d'objets simples, puis en passant à des objets plus complexes. L'utilisation d'objets par copie de code sans compréhension des concepts sur lesquels ils reposent donne des résultats décevants.

La famille Internet

Un rôle fondamental d'internet est l'affichage d'un document dans un navigateur. Les documents web peuvent être complexes et integrer des objets dynamiques. L'évolution des langages de définition de documents les destine à des domaines plus vastes que l'affichage dans un navigateur.

HTML, langage de définition de documents

HTML décrit un formalisme simple pour élaborer des documents. Le texte est inclus dans des balises prédéfinies qui définissent la structure du document et sa mise en page. D'autres balises permettent d'intégrer des images, de définir des liens, ou d'intéger des scripts.

Voici un exemple simple de document HTML :

<HTML><BODY>
<h1>Le monde Internet et Java</h1>
<p>Le monde internet et java ...
<p>La famille Java</p>
<ul>
<li>Java, le langage</li>
<li>les Swings, composants graphiques professionnels</li>
<li>JDBC, l'accès aux bases de données</li>
<li>jt400, implémentation concrète de JDBC et middleware d'accès à l'AS400</li>
</ul>
</BODY></HTML>

Un simple éditeur ASCII suffit pour créer un document, qui peut également être généré par un programme en réponse à une requête. Divers traitements de texte peuvent gérer ce format, et des outils spécialisés existent.

La liste des balises est figée, et il est difficile de réaliser des mises en pages complexes.

CSS, langage de mise en forme de documents

Cascading Style Sheets permet des mises en forme élaborées et paramétrée des documents HTML. Le simple rattachement d'une feuille de style à un document existant modifie radicalement son aspect.

CSS dispose de fonctions complexes. Il est capable d'assurer un résultat dépendant du support, navigateur, imprimante ou Wap. Son format de base est simple et permet d'enrichir les balises par des classes de style ou en liaison avec une hiérarchie de balises particulière.

Extrait de la feuille de style de ce document:

BODY { font-size: 1.0em; font-family: Verdana, Myriad Web, Syntax, sans-serif; }
BODY.modernist { font-size: 1.0em;
 font-family: Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
}
A {text-decoration: none }
A:link {font-weight: bold; color: #C00; background: #FFC; }
A:visited { font-weight: bold; color: #999; background: #FFC; }
A:active { font-weight: bold; color: #F00; background: #FC0; }
A:hover { color: #C00; background: #FC0; }
A.offsite { font-weight: normal; color: #C00; background: #FFC; }

H3 {color: green }
BODY.modernist H3 {color: blue }
H3.rouge {color: red }
H2 {color: #cc9966; font-style: normal; margin-top: 0.0em; margin-bottom: 0.7em; font-weight: bold}

Quelques caractéristiques de CSS:

XML, le futur du Web

ATTENTION: Ce qui suit ce paragraphe a été écrit en 2001. En 2006, il apparaît que XML s'est imposé en matière d'échange de données, ou pour stocker des données structurées complexes, comme des fichiers de configuration ou destinées à être traitées automatiquement. Open office et la suite Microsoft Office utilisent XML comme langage de définition de documents. Il semble en revanche difficile de demander à un humain d'écrire directement du XML, et l'approche HTML + CSS reste la plus efficace. Ce qui suit reste tout de même d'actualité pour l'essentiel.

eXtensible Markup Langage définit toute une famille de normes.

Un document XML est balisé avec des règles plus strictes qu'un document HTML, mais les noms de balise sont totalement libres. A toute balise ouvrante doit correspondre une balise fermante, la casse doit être respectée, et les valeurs d'attributs mis entre apostrophes. La norme précise que si un document n'est pas bien formulé, c'est à dire syntaxiquement correct, un navigateur doit signaler les erreurs et ne pas l'afficher.

Un document XML peut être constitué d'un assemblage de sous documents, ce qui permet de gérer plus facilement les documents volumineux.

Un document XML valide :

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<adresses>
 <client code="1234">
   <nom>Dupond</nom>
   <prenom>Pierre</prenom>
 </client>
 <client code="5000">
   <nom>Durand</nom>
   <prenom>Jacques</prenom>
 </client>
</adresses>

Il est très facile de faire générer par un programme du code XML en réponse à une requête. De nombreux parsers permettent de transformer un document XML en objets arborescents, selon un schéma et avec des API normalisés. XML est ainsi un excellent candidat pour stocker des données structurées dans un format ASCII standard, pour les transporter via un réseau par exemple.

De nombreuses normes sont associées à XML

La solution suivante permet d'afficher un document XML formaté :

Début 2001, Internet Explorer 5 est capable d'afficher ce type de document. Netscape 6 affiche un document XPL en utilisant CSS mais ne connait pas XSL.

Cette approche peut paraitre complexe, mais il faut prendre en compte les points suivants

XML peut difficilement à ce jour être utilisé pour des applications Internet, ou tout dépend du navigateur utilisé et de sa configuration. En Intranet ou Extranet, ces données peuvent être contrôlées et le résultat est maitrisable.

Consulter une présentation XML pour plus d'information.

JavaScript, pour dynamiser l'affichage

JavaScript est un langage interprété destiné à réaliser des tâches d'animation ou de contrôle dans un navigateur.

Avec JavaScript, il est possible de réaliser des contrôles sur le contenu des champs d'un formulaire, d'afficher du texte dans la barre d'état du navigateur, de réaliser des animations périodiques, et dans certains cas de modifier la structure du document.

Des actions simples comme accéder au contenu d'une partie du document ou afficher un texte défilant dans la barre de statut peuvent poser de sérieux problèmes de mise au point. Il est souvent difficile de trouver la cause d'une erreur d'exécution. Ce qui fonctionne pour un navigateur ne fonctionnera pas forcément pour un autre.

JavaScript est potentiellement un langage puissant, ECMAScript est utilisé par XSL. La normalisation des conditions d'utilisation dans un navigateur n'est pas assez avancée pour envisager des usages autres que ponctuels. La consultation de scripts issus de divers documents Web montre une grande diversité dans les techniques de codage, avec des approches souvent tortueuses.

Applications distribuées

Les applications distribuées sont découpées par niveau :

Cette architecture est désignée comme architecture 3 tiers. Dans les faits, de nombreuses configurations sont possibles.
Si deux couches sont regroupées on parle de client serveur.
Si le client se contente d'envoyer des requêtes HTML et de récupérer du contenu sous ce format, on parle de client léger.

Applications et Applets

Il est possible de bâtir une application professionnelle en utilisant seulement des outils standards. Le serveur de données est ici un AS400, mais pourrait être n'importe quel autre système.

Cette solution est légère et fonctionne. Pour une base de données AS400, il faut

L'application peut dès le départ être créée comme une applet. L'utilisation en tant qu'applet impose quelques contraintes.

L'utilisation d'applets en intranet est possible, mais n'est pas simple. Les applets rencontrées sur divers sites web servent le plus souvent à des affichages complexes, comme des graphes de données. Peu de solutions réelles impliquent des intéractions complexes avec le serveur. Les applications internet utilisent plutôt à ce jour une approche client léger.

Bases de mise en place d'un serveur

Pour une solution client léger, un serveur génère des documents HTML en réponse à des requêtes. Le cas abordé ici concerne un serveur Websphere AS400, et des développements en Java. La version d'OS utilisée est une V4R3.

Websphere doit être préalablement configuré. La documentation précise que les performances sont meilleures avec des répertoires situés près de la racine. Il ne faut donc pas suivre les exemples fournis, qui exploitent des arborescences profondes. Les programmes sont implémentés en Java sur l'AS400 et utilisent le driver natif.

Deux approches de développement sont possibles :

Les développements impliquent le plus souvent des servlets, et de nombreux problèmes peuvent rendre les tests difficiles. Les servlets sont performants une fois lancés, mais le chargement initial est très long. Websphere doit identifier les servlets recompilés et charger la dernière version disponible. Ceci ne fonctionne pas toujours, et impose un redémarrage fréquent du serveur.

Les développements client léger directement sur le serveur posent de nombreux problèmes. Tout ce qui peut être testé en autonome côté client doit l'être. JBuilder Enterprise offre la possibilité de tester directement les servlets sur le poste de développement, l'investissement peut se révéler très rentable.

L'interface utilisateur peut inclure des applets dialoguant directement avec le serveur : l'applet ouvre sa propre connexion HTTP, demande et obtient des données et libère le socket concerné, en court circuitant le navigateur. L'approche la plus facile à développer consiste à obtenir les données en tant qu'objets sérialisés. D'autres approches sont envisageables :


Bibliographie

Webmaster in a Nutshell, O'Reilly (en français). Une synthèse indispensable, pas seulement pour les webmestres.

Java in a Nutshell, O'Reilly (en français). Les bases.

Java Swing, O'Reilly (en Anglais, 1100 pages). Ouvrage de référence. Détaille le fonctionnement des divers composants et propose de nombreux exemples.

La documentation Websphere est disponible au format PDF sur tous les AS400.

O'Reilly et Eyrolles collaborent pour certains ouvrages, en général de grande qualité.


Patrick LARREYA, juin 2000 - janvier 2001.
contact: patrick.larreya, laposte.net
retour vers accueil

Ce site a été créé avant l'an 2000, et à quelques détail près volontairement conservé en l'état.
Curieusement, de nombreux éléments techniques restent d'actualité.