|
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:
- Java: qu'est-ce que c'est?
- Comment utilise-t-on Java dans les applications
Internet?
- Dois-je donc utiliser Java dans mes applications
Domino?
- Et Garnet alors?
- Les Java Server Pages: l'équivalent
Java de l'ASP et du PHP
- Alors pourquoi utiliser des JSP dans une application
Domino?
- 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):
- 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.
- 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.
- 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.
- 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
|