IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

JSP / Sources java : qui compile quoi ?


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut JSP / Sources java : qui compile quoi ?
    Bonjour à tous .
    Voila , je débute en ce qui concerne le developpement d'application WEB avec Java.
    J'ai donc installé Tomcat et Eclipse pour commencer à me faire la main .
    J'aurais quelques questions sur le fonctionnement .
    J'ai crée un projet tomcat avec eclipse et il a donc créer dans le repertoire webapps de tomcat un dossier du nom de mon projet .
    Je me retrouve donc avec le dossier webapps/TEST de tomcat .

    Si j'ai bien compris le fonctionnement pour une page JSP :
    Quand je crée un fichier .jsp dans webapps/TEST avec eclipse , il est automatiquement compilé en bytecode et ce bytecode est placé dans le repertoire webapps/TEST/work/ lorsqu'un appel est fait pour la première fois sur cette page , par exemple lorsque dans le navigateur je tape "http://localhost/TEST/mapage.jsp" , les appels suivant a cette page ne compil pas , ils utilisent le bytecode deja compilé.
    Dite moi si je me trompe , j'ai besoin d'être sur du fonctionnement (approximatif).

    Deuxième problème, quand je crée une classe avec eclipse (une classe que je vais utiliser dans un de mes jsp par exemple), il place le fichier .java dans /webapps/TEST/WEB-INF/src/.
    Mais voila , si j'ai bien compris , le fichier .java ne peut être lu par tomcat , il doit donc être compilé.
    Et effectivement , si je regarde dans le dossier webapps/TEST/WEB-INF/classes je retrouve bien ma classe avec cette fois l'extension .class.
    J'en conclue donc que mon fichier .java a etait compilé en .class.
    Ma question est donc la suivante , qui compile cette classe ? Tomcat (comme pour les jsp) ou eclipse ?

    Merci d'avance de votre aide .

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Par défaut
    Salut,

    C'est bien d'être curieux, ce genre de détails intéresse très peu de gens en temps normal.

    Pour la première question, c'est un peu plus complexe que tu penses.
    Un fichier JSP est interprété directement par Tomcat. Donc la transformation en bytecode ne sert à rien. La preuve, tu peux tout à fait créer un JSP, le mettre sur un serveur Tomcat et voir le résultat. Et donc si, la page JSP est inteprétée à chaque appel. Il n'y a pas de système de cache comme tu le penses.

    Donc, le bytecode, ça sert à quoi ? A permettre le débuggage au sein d'Eclipse.
    Chaque JSP est transformé en servlet. D'abord en bytecode (fichier class), puis en servlet (fichier java). De cette manière, il est possible de faire du pas à pas avec Eclipse dans une page JSP.


    Pour la 2ème question, c'est Eclipse qui compile la classe. La preuve, tu peux tout à fait créer des classes Java sans installer Tomcat.

    D'autres questions ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    ok donc si j'ai bien compris lors d'un appel a la page index.jsp , si c'est le premier appel à cette page , le chargement est un peu long , car avant d'interpreter la page , il la convertie en .java (servlet) que l'on peut d'ailleur voir dans le dossier work .
    Ensuite pour les appels suivant c'est immediat car il utilise la servlet .java precedement créée .
    Le fichier .java est donc du code java pur (non compilé) comme on pourrait l'écrire soit même d'ailleur par exemple lorsque l'on écrit une servlet .
    Ca ok .
    Par contre , lorsque j'ecris une classe , donc un fichier .java , pourquoi eclipse doit compiler ce fichier en .class puisque tomcat peut lire les .java ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Je viens finalement de trouver la réponse à ma question , et je vous la livre donc ici , de manière à pouvoir aider quelqu'un éventuellement.

    Une des différences entre PHP et JSP réside dans le fait que PHP est interprété alors que JSP est compilé .

    Je m'explique :
    A chaque chargement d'une page PHP , le serveur interprète la page est génère du code HTML.
    A chaque chargement d'une page JSP , le serveur appelle le fichier .class chargé en mémoire représentant la page jsp et compilé précédemment (lors du tout premier appel de la page).
    C'est ce fichier compilé qui se charge de générer le code HTML .
    Maintenant que se passe-t-il lors du premier appel de la page JSP ?
    En fait la page JSP passe dans l'interpreteur JSP et ressort sous forme de fichier .java (une servlet) .
    Cette servlet est à son tour passé dans le compilateur pour finalement en sortir en tant que fichier .class puis monté en mémoire .
    La seule différence entre une servlet et une page jsp c'est que lors du premier appel la servlet ne passe pas dans l'interpreteur puisque elle est deja une servlet .

    Ensuite lorsque l'on écrit une classe personnelle , (avec Eclipse par exemple) , on obtient un fichier maClasse.java.
    Si on veut utiliser cette classe dans une de nos pages JSP , on doit la compiler , car tous les paquetages sont compilé .
    Que ce soit un paquetage standard , du genre : java.util.ArrayList ou que ce soit un paquetage privé du genre net.dev.maClasse .
    Eclipse se charge de compiler pour vous cette classe , mais vous pouvez le faire manuellement .

    Voila , j'ai pu comprendre ca d'apres l'excellent livre : Java EE Guide de developpement d'applications web en Java .
    http://java.developpez.com/livres/?p...L9782746047150

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/12/2010, 13h17
  2. Compiler du code source java en java
    Par djmad dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 14/04/2009, 11h53
  3. Réponses: 7
    Dernier message: 26/07/2007, 10h10
  4. compilation d'un fichier source java à partir de DOS
    Par lion000 dans le forum Langage
    Réponses: 8
    Dernier message: 25/07/2007, 14h27
  5. Réponses: 10
    Dernier message: 28/06/2007, 21h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo