Fournir la logique des applications
Bien que vous puissiez écrire des modules Apache qui fourniraient la logique de vos applications, la plupart des développeurs trouvent qu’il est bien plus facile d’utiliser des langages de script et de les intégrer à Apache à l’aide de modules déjà écrits par d’autres. En dernier ressort, tout ce qu’un langage informatique sait faire consiste à faire en sorte que le CPU compare, ajoute, soustrait, multiplie et divise des octets. Les langages de script offrent l’avantage de s’exécuter sans aucune modification sur autant de plateformes que possible : votre site peut donc passer d’une machine à une autre. Si vous êtes débutant et que vous connaissez quelqu’un qui puisse vous aider pour un langage particulier, celui-ci sera sûrement le meilleur choix. Nous consacrerons un chapitre à l’installation du support des langages principaux et nous en profiterons pour parcourir leurs principales possibilités.
Discuter des langages de programmation est une tâche assez ardue car les programmeurs se divisent en deux catégories : ceux qui aiment un langage particulier et les autres. Naturellement, ceux qui discutent des langages appartiennent à la première et beaucoup de ceux qui lisent des ouvrages comme celui-ci dans l’attente de faire quelque chose d’intéressant avec un ordinateur ont tendance à appartenir à la seconde. En ce qui nous concerne, nous considérons les langages comme un mal nécessaire : ils ont tous leurs curiosités, allant du doux amusement à des plaisirs comparables à un gargarisme à l’acide de batterie. Nous aimerions que les adeptes de chaque langage sachent que nos commentaires sur les autres langages ont également mis en furie leurs partisans.
Server-Side Includes
Server-side includes est plus un moyen d’éviter les langages de script qu’un langage de script à proprement parler. Si vos besoins sont très limités, les fonctionnalités élémentaires de cet outil peuvent résoudre un certain nombre de problèmes de contenu. En outre, il peut également être utilisé en même temps que d’autres approches. Server-side includes est présenté au chapitre 14.
PHP
PHP constitue une autre approche au problème de l’intégration de HTML avec les scripts CGI, les bases de données et Apache. Un débutant total en programmation a tout intérêt à commencer avec PHP, qui étend HTML -- il devra apprendre HTML, de toute façon.
Au lieu d’écrire des scripts CGI avec des langages comme Perl ou Java, qui interagiront ensuite avec Apache pour produire les pages HTML qui seront envoyées au client, la stratégie de PHP consiste à s’intégrer lui-même dans le code HTML. L’auteur écrit du HTML en y incorporant des commandes qui seront interprétées par le paquetage PHP lorsque la page sera servie. Nous pourrions, par exemple, ajouter la ligne suivante :
Bonjour tout le monde !<BR>
dans notre code HTML, ou utiliser cette instruction PHP :
<?php print "Bonjour tout le monde !<BR>";?>
ce qui aurait exactement le même effet. La construction <? php ...?> permet d’intégrer les commandes PHP dans du HTML standard. PHP dispose, en outre, de ressources lui permettant d’interagir avec les bases de données et de faire quasiment tout ce dont sont capables les autres langages de scripts.
La syntaxe de PHP repose sur celle du langage C, avec quelques emprunts à Perl. Le principal problème, lorsque l’on apprend un nouveau langage de programmation, consiste à désapprendre les parties devenues inutiles de ceux que l’on connaît déjà. Par conséquent, si vous n’avez aucune expérience de programmation qui pourrait vous perturber, PHP est un choix comme un autre pour commencer. Ses partisans prétendent que plus d’un million de sites web l’utilisent déjà : vous ne serez donc pas le premier.
De plus, comme il a été conçu dès le départ pour le Web, il évite beaucoup des tracas qui ont été nécessaires pour faire fonctionner correctement Perl dans un environnement web. Par contre, il est relativement récent et n’a pas accumulé la foule de modules déjà prêts qui remplissent la bibliothèque du CPAN ( Comprehensive Perl Archive Network, voir http://www.cpan.org ).
L’un de nous, par exemple, a créé un site web permettant d’effectuer des recherches textuelles dans une encyclopédie médicale. Le problème, avec les recherches de textes, est que l’on peut rechercher « operation », mais que le texte contient « operated on », « operating theater », etc. La réponse consiste à travailler sur la racine du mot : sur CPAN, il existe plusieurs modules Perl supprimant les terminaisons des mots anglais pour obtenir, par exemple, la racine « operat » à partir de « operation », le mot recherché. Si l’on souhaite aller plus loin et analyser des phrases anglaises pour les décomposer, il existe également des modules capables de le faire. Ceux-ci peuvent ne pas exister pour PHP et ils peuvent être difficiles à écrire par soi-même. Une décision hâtive dans le choix de la route la plus simple peut s’avérer coûteuse au final.
L’installation de PHP est décrite au chapitre 15.
Perl
Perl est un langage efficace mais dont la syntaxe est compliquée. Comme il existe depuis 1987, beaucoup de ses fonctionnalités pénibles ont été gommées et le nombre de ses partisans est énorme, comme l’est celui des modules qui constituent l’archive CPAN. Sa fonctionnalité vedette est son utilisation des expressions régulières pour analyser les lignes de texte. Lorsque l’on programme pour le Web, on est sans cesse en train de disséquer des URL et les données renvoyées par les formulaires HTML : les expressions régulières sont alors constamment sollicitées. Perl dispose également d’une structure de données appelée « tableau associatif », qui permet de nommer les éléments d’un tableau : elle est très utile, bien que sa syntaxe puisse également être très compliquée et trompeuse.
Le plus gros défaut de Perl est, sans doute, l’absence de déclaration des variables. Vous pouvez créer des noms de variables à la volée (généralement à cause d’une faute de frappe ou d’une erreur quelconque) : Perl créera ces variables, même si elles sont erronées et qu’elles ne devraient pas exister. Cela dit, ce problème peut être tempéré par l’utilisation de l’option -w de la ligne de commande et en plaçant la déclaration suivante au début des scripts :
use strict;
Tous ceux qui programment en Perl doivent posséder le « Camel Book » publié par O’Reilly. Malgré toutes les blagues qui émaillent son contenu, cet ouvrage assez imposant n’est pas destiné à guider les premiers pas des débutants. Le livre de Sriram Srinivasan, Programmation avancée en Perl est également très bien. Si vous êtes un débutant total (comme nous l’avons tous été un jour), jetez un coup d’œil à Perl for Web Site Management de John Callender ou à Introduction à Perl de Randal L. Schwartz et Tom Phoenix.
L’utilisation de Perl dans les applications CGI est présentée au chapitre 16 et le module mod_perl est détaillé au chapitre 17.
Java
Java est un langage de programmation plus « pur » (et il est compilé), mais c’est un jeunot. Dans le monde Apache, Java côté serveur est désormais disponible via Tomcat (voir le chapitre 17). Préférer Java à Perl, Python ou PHP dépend principalement de ce que vous pensez de Java : comme l’a dit un jour le président Lincoln, « ceux qui aiment ce genre de choses trouveront que c’est le genre de choses qu’ils aiment ». Cependant, l’un d’entre nous au moins pense que beaucoup des défauts du Web sont dus à Java : il permet aux créateurs web de dépenser leur énergie à créer des pages qui vibrent, rebondissent, clignotent, se dissolvent... Lorsqu’un programmeur maîtrise Java et toutes ses astuces distrayantes, il est sûrement trop tard pour lui suggérer que ce que souhaite en réalité le lecteur sont des informations statiques organisées en mots et images judicieusement placés : tâche pour laquelle Perl et PHP sont tout à fait indiqués et bien plus faciles d’emploi.
Velocity, encore un autre langage de création de pages, mais écrit en Java pour que vous puissiez jouer avec ses entrailles, est apparu :
Velocity est un moteur de modèles reposant sur Java. Il permet aux concepteurs de pages web de disposer d’un langage de modèles simple mais puissant permettant de faire référence à des objets définis en Java. Les concepteurs web peuvent travailler de concert avec les programmeurs Java pour développer des sites web selon le modèle Vue-Contrôleur (MVC), ce qui signifie que les concepteurs de pages peuvent se consacrer exclusivement à l’aspect des sites tandis que les programmeurs se consacreront exclusivement à l’écriture de code de haute qualité. Velocity sépare le code Java des pages web, ce qui facilite la maintenance à long terme des sites et fournit une alternative viable à JSP (Java Server Pages) et PHP.
Les lecteurs intéressés trouveront Velocity sur http://jakarta.apache.org/velocity/.
En plus des réserves stylistiques que nous émettons sur Java comme support créatif, nous trouvons que Tomcat présente plusieurs symptômes d’un projet trop compliqué, et ceci bien qu’il soit au tout début de son développement. Il semble y avoir beaucoup d’impasses et de nombreux moyens de faire mal les choses. Nous avons lutté avec l’interface entre Tomcat et Apache pendant plusieurs mois, sans succès : à chaque fois que nous revenions au problème, une nouvelle version de Tomcat avait changé de nombreuses règles du jeu. À la fin, nous y sommes parvenus mais, pour cela, il nous a fallu bricoler à la fois Apache et Tomcat.
L’utilisation de Java avec Apache est présentée au chapitre 18.
Autres possibilités
Python ressemble assez à Perl. Il est bien moins connu, mais sa syntaxe est également moins obscure. Comme lui, c’est un langage de script, mais conçu de façon académique (ce qui n’est pas nécessairement une mauvaise chose). En outre, il est facile à apprendre.
JavaScript a été conçu au départ pour être utilisé dans les navigateurs, mais il a également prouvé son utilité sur les serveurs. Ce langage n’a qu’une relation très superficielle avec Java et il est souvent utilisé comme langage de script dans un grand nombre d’environnements applicatifs. Une autre possibilité que nous vous conseillons d’éviter, sauf si vous n’avez absolument pas le choix, est Visual Basic -- plus précisément la forme VBScript utilisée dans les différents produits Microsoft. BASIC a été inventé pour initier rapidement les étudiants à la programmation. Il n’a jamais été destiné à devenir un vrai langage de programmation et les tentatives dans ce but se sont largement soldées par des échecs, bien que certains développeurs l’utilisent. Un nombre étonnant de gros sites de commerce en ligne se diluent souvent dans un nuage de messages d’erreurs de Visual Basic. Ceux qui apprécient ASP ( Active Server Pages ) de Microsoft, mais pas le serveur web de ce même éditeur, peuvent trouver un émulateur Perl sur CPAN ( http://www.cpan.org/ ) et Sun Microsystems distribue une implémentation commerciale d’ASP qui fonctionne avec Apache ( http://wwws.sun.com/software/chilisoft/ ).