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
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é.
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.
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.
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.
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.
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.
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 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.
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:
<h3 class="rouge">
.
Remplacer <BODY>
par <BODY class="modernist">
change la police du document entier, et fait passer les titres de niveau 3 en bleu.
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é :
<TABLE>
),
les éléments en lignes (<TR>
)
et les sous éléments en colonnes (<TD>
)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 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.
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.
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.
wrkrdbdire
)
jt400.jar
contenant
le driver JDBC et l'inclure dans le CLASSPATH du projet
com.ibm.as400.access.AS400JDBCDriver
. Il est préférable
de définir les propriétés de connexion dans un fichiers de propriétés.
L'application peut dès le départ être créée comme une applet. L'utilisation en tant qu'applet impose quelques contraintes.
Swing
et jt400
sont volumineuses,
et les temps de chargement en internet dissuasifs. Certaines configurations
de navigateurs conservent les archives dans un cache, ce qui résoud le problème.
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.
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 :
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é.
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é.