Domino Références : Site francophone de ressources pour les développeurs Lotus Notes / Domino Domino Références
Site francophone de ressources pour les développeurs Notes/Domino
Annuaire Articles Forums Contact
Recherche
 
Mot exact résultats
Au Sommaire ...
Annuaire commenté des sites traitant de Lotus Notes/Domino
Articles d'actualité
Les forums de discussion
Une remarque, une critique, un encouragement. N'hésitez pas à me contacter.
The Team that meets in Forum.
Newsletter
email:   
s'abonner se désabonner 
Statistiques
 Stats du site

 

1. Domino, Java, Garnet et les JSP
par Lionel

Domino, Java, Garnet et les JSP


Bon. Ce soir j'ai décidé de prendre mon courage à deux mains et mon clavier de l'autre pour vous parler d'un thème d'atualité on ne peut plus brulant : Java et les Java Server Pages (JSP par la suite). Dans ce premier article, je vais tenter de répondre aux questions que vous vous posez tous : qu'est-ce que c'est? comment ça marche? est-ce soluble dans l'eau?

En préalable, je parlerai un peu de Java dans Domino afin de resituer la problématique des JSP dans un contexte plus large.


Table des matières:

  1. Java: qu'est-ce que c'est?
  2. Comment utilise-t-on Java dans les applications Internet?
  3. Dois-je donc utiliser Java dans mes applications Domino?
  4. Et Garnet alors?
  5. Les Java Server Pages: l'équivalent Java de l'ASP et du PHP
  6. Alors pourquoi utiliser des JSP dans une application Domino?
  7. Quelques liens utiles...

 

1. Java: qu'est-ce que c'est?

Java est un langage de programmation inventé par Sun. Sa syntaxe est assez proche du C++ et il offre une panoplie de possibilités très large grâce à de très nombreuses librairies que le programmeur peut inclure dans son code. On peut citer par exemple la librairie JDBC, qui permet de se connecter aux bases de données ODBC ou plus proches de nous, les librairies Domino qui permettent d'accéder aux bases de données Notes/Domino.

L'autre avantage de Java est sa portabilité puisqu'il fonctionne sur de nombreux systèmes d'exploitation et plateformes.

Enfin, il est utile de rappeler que Java s'est imposé comme un standard sur Internet. On dit même qu'il devrait se positionner à terme comme le seul langage de programmation sérieux face à Visual Studio de .NET. Pour ma part, je pense quand meme qu'il y aura toujours de la place pour les PHP, Perl, Python et autres C.

 

2. Comment utilise-t-on Java dans les applications Internet?

Aujourd'hui, on utilise Java essentiellement pour quatre types d'usage sur le web (sans parler des applications B2B pour l'échange de fichiers XML):

  1. Les applets: ce sont de petits programmes qui s'exécutent sur le poste client et non sur le serveur d'où ils sont simplement téléchargés. On utilise les applets dans le but premier d'augmenter la richesse fonctionnelle des sites web. Les applets diminuent sensiblement les performances en termes de temps de réponse côté client.
     
  2. Les scripts CGI: ce sont des scripts ou des programmes qui s'exécutent côté serveur. En fait, le CGI est une norme qui décrit les relations entre un serveur HTTP et un programme extérieur. On peut donc écrire les scripts CGI à l'aide de n'importe quel langage: C, Perl, Python et bien sur Java.
     
  3. Les servlets: comme les scripts CGI, les servlets s'exécutent sur le serveur mais présentent l'avantage d'être plus intégrées au serveur web. Elles peuvent notamment conserver des informations d'authentification à l'aide des cookies de sessions. Les servlets sont uniquement écrites en Java.
     
  4. Les Java Server Pages (JSP) sont également des scripts qui s'exécutent sur le serveur. A la différence des servlets et des programmes CGI qui sont appelés par des URL, le code des JSP est directement intégré dans des pages au format HTML.
     

Domino sait gérer ces quatre types de composants et offre même la possibilité supplémentaire d'écrire les agents en Java à la place du langage de formules ou du LotusScript. On peut même utiliser un éditeur Java externe comme VisualAge d'IBM ou Forte de Sun pour écrire son code Java pour Domino. Il suffit en effet d'installer le composant AgentRunner inclus dans lkit de développement Java pour Domino.

Mais tout ça c'est de la cuisine. Ce qu'il faut retenir c'est que Java est parfaitement intégré à Domino.

A noter: les applets, les scripts CGI et les servlets ne nécessitent pas d'ajout de programmes sur le serveur Domino. Il suffit simplement de modifier quelques éléments de configuration. Il en va différemment des JSP pour lesquelles un serveur (au sens logiciel du terme) supplémentaire est nécessaire: IBM Websphere, Apache Tomcat ou Oracle OC4J. On parle dans ces cas d'architecture n-tiers.

 

3. Dois-je donc utiliser Java dans mes applications Domino?

Avant de céder aux sirénes du dernier cri, il est préférable de réfléchir un instant. Car l'utilisation de Java peut nécessiter de votre part un investissement substantiel : formations, moindre productivité initiale, découverte de bugs, etc.

D'autant plus que Java n'offre pas toujours des performances aussi honorables que celles d'un bon agent LotusScript (essayez de faire des parcours de vue sans la méthode recycle et vous m'en donnerez des nouvelles).

Alors que faire? A mon avis, il faut utiliser Java avec parcimonie en tenant compte de ses points forts et de ses points faibles:

  • Java est recommandé pour certains types d'opération. C'est la cas par exemple des protocoles IP. Lorsque vous aurez essuyé vos premiers revers en essayant d'effectuer des requêtes LDAP ou HTTP avec LotusScript, vous comprendrez que Java est une panacée en ce domaine.
     
  • Les Servlets ne sont chargées qu'une seule fois en mémoire, ce qui augmente leurs performances. En comparaison, un agent en LotusScript est chargé en mémoire à chaque appel. En contrepartie, une servlet peut être appelée par plusieurs requêtes simultanées ce qui signifie qu'il faut la programmer avec soin.
     
  • Les servlets et pages JSP ne sont pas incluses dans des bases Notes. Elles sont stockées dans le système de fichier du serveur. Ceci peut entraîner des tâches administratives additionnelles en cas de réplication sur d'autres serveurs.
     
  • Les JSP offrent de nouvelles possibilités. J'y reviendrai.

Enfin, je rajouterai qu'à titre personnel l'apprentissage et l'utilisation de Java peut vous être bénéfique. Car après tout, c'est un standard que vous pourrez réutiliser dans d'autres environnements.

 

4. Et Garnet alors?

Garnet était le projet d'intégration d'un serveur de JSP dans Domino. En l'occurence il s'agissait de Tomcat le serveur gratuit d'Apache. Il a été possible de le tester jusqu'à la Beta 4 de RNext. Car après, vous le savez sans doute, Garnet a été abandonné par Lotus (annonce faite lors de l'événement LotusSphere 2002).

Avec Garnet, il était possible de créer et gérer les pages JSP directement depuis Domino Designer. Et il n'était pas nécessaire d'installer un serveur supplémentaire sur la machine. Et tous les développeurs qui ont pu le tester ont vivement apprécié cette fonctionnalité. J'y reviendrai.

Alors, comment expliquer le revirement de Lotus? Pourquoi supprimer une fonction plébiscitée par les développeurs? Officiellement, Lotus a affirmé qu'il était peu judicieux d'intégrer les JSP dans Domino alors que d'autres applications le font déjà beaucoup mieux (Websphere par exemple). L'autre raison évoquée était que le serveur JSP de Domino n'aurait pas été complétement conforme aux standards. Noble préoccupation mais qui semble peu convaincante quand on sait que Domino intègre par exemple un serveur LDAP ou un serveur POP.

Pour ma part, je crois que l'abandon de Garnet est la conséquence d'un choix stratégique qui positionne Websphere comme le pivot de l'offre Intranet/Internet d'IBM/Lotus. Dans ce schéma, Websphere agit en tant qu'élément fédérateur des applications web de l'entreprises. Et il dispose de nombreux atouts pour bien résussir cette tâche : single sign-on puissant, portlets, etc.

Domino devient alors un composant logiciel périphérique susceptible d'enrichir les fonctionnalités de Websphere à l'aide de ce que Lotus appelle les drop-in components collaboratifs (assez proche du concept de portlet).

Attention : quand je parle de Domino comme composant périphérique je songe essentiellement et presqu'exclusivement aux grandes sociétés dont l'organisation complexe nécessite des fédérateurs comme Websphere. Pour beaucoup d'autres sociétés, Domino demeurera encore pour longtemps l'élément central de leur stratégie Intranet. Je suis d'ailleurs persuadé que l'abandon de Garnet ne remet pas en cause la pérennité de Domino.

En plus l'arrêt de Garnet ne signifie pas l'abandon des JSP. On peut toujours les utiliser même si la mise en oeuvre est moins conviviale (nettement moins conviviale quand même).

 

5. Les Java Server Pages: l'équivalent Java de l'ASP et du PHP

Il est temps d'aborder plus précisèment la question des JSP afin de mieux comprendre leur fonctionnement.

Les JSP sont l'équivalent Java des Active Server Pages de Microsoft ou du langage gratuit PHP (qui cartonne sur Internet). Il s'agit d'un mode de programmation qui consiste à intégrer des morceaux de codes Java au sein d'une page web.

Certaines parties de la page comportent des balises HTML classiques : liens, paragraphes, tableaux, listes, etc, etc . Les autres parties de la page Web contiennent du code Java qui sera executé au moment de l'appel de la page par le navigateur client. On peut par exemple insérer un code qui va parcourir une vue Domino.

Si on examine le code de la page retournée, on ne trouve nulle trace des éléments de programmation car c'est le serveur de JSP (Tomcat ou Websphere ou autre) qui interprète le code et renvoie simplement les données. On parle alors de scripts server-side par opposition aux scripts client-side qui tel JavaScript s'exécutent sur le poste client.

Ca ne vous rappelle rien? Ben oui, ça ressemble quand même un peu à ce que l'on fait lorsque l'on travaille avec un masque dans Domino Designer. On définit des zones programmables et des zones de texte ou de présentation. Et à l'exécution, le serveur envoie les données au navigateur. Sauf qu'avec les JSP, on sort de l'environnement Domino et donc de ses contraintes.

 

6. Alors pourquoi utiliser des JSP dans une application Domino?

Parce que c'est flexible et puissant. Prenons un exemple: comment afficher dans une même page web des informations issues de différentes bases Notes? Une vue par ici, un bout de page par là, un agent ici, etc . On peut le faire avec des frames mais sans beaucoup de grâce. En plus que se passe-t-il si l'utilisateur n'a pas le droit d'accéder à une information? Dans la frame, on va voir une demande de mot de passe alors qu'avec une JSP on peut cacher le contenu.

Cette faculté à intégrer au sein d'une même page des éléments issus de différents endroits est essentielle pour le développement des portails d'entreprise. Et les portails d'entreprise c'est un des enjeux majeurs de l'intranet aujourd'hui.

Bon, je vous l'accorde, on n'a pas attendu les JSP pour faire des intranet performants et de qualité. C'est sur. Mais il faut reconnaître que l'apport des JSP ajoute des possibilités nouvelles qui enrichissent le potentiel de Domino et le rendent plus compétitif.

Enfin, signalons que grâce au JSP on peut dépasser certaines des limites de mises en page et d'affichage imposées par Notes. Ce dernier argument n'est pas vraiment décisif car avec Notes on peut réaliser n'importe quel type de design et de mise en page. Disons qu'avec les JSP c'est juste un peu plus facile.

Il convient tout de même de signaler que les JSP n'apportent pas encore les mêmes performances que le serveur Domino en termes de temps de réponse.


Bien. Maintenant que nous avons un peu mieux compris l'intérêt des JSP, nous allons pouvoir en tester le potentiel. Mais avant cela nous devons installer et configurer le serveur de JSP.

Quelques liens utiles sur les technologies Java ...

... et sur Domino et Java

Mise à jour: 18/09/2003
Conception: Lionel, 2001-2002