Messages
du sujet
Quelques questions sur le livre (Java 1.4 & 5.0) |
Vince
Ville : Paris
Membre depuis : 11 févr. 2005
Messages : 2
|
11 févr. 2005 à 13:04
Bonjour,
j'ai lu ce super livre en totalité , et je me pose quelques questions :
*Synchronisation Chat (p.337) : Pourquoi l'objet synchronisé est il 'participantsChat' (et non 'messagesChat'). Est ce une erreur ?
*Build du forum (annexe p.343) : Je ne comprend pas trés bien le .bat , pourquoi ne compile t on que 6 fichiers .java . Comment se fait il que l on retrouve bcp plus de fichiers .class aprés ?? Je suis un peu perdu dans l'arborescence de cette application ... :/
merci d'avance !
vince
|
Manu
Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
|
13 févr. 2005 à 18:22
> j'ai lu ce super livre en totalité [...]
Je suis heureux que vous soyez arrivé au bout avec autant d'enthousiasme ;-)
> *Synchronisation Chat (p.337) : Pourquoi l'objet synchronisé est il 'participantsChat' (et non 'messagesChat') ?
participantsChat est l'objet synchronisé parce que premièrement, on en a besoin dans la condition
if (!participantsChat.contient(utilisateurForum))
et qu'il faut par sécurité accéder de façon synchronisé à la collection participantsChat pour éviter tout problème de concurrence d'accès à cette collection dans les autres pages JSP étudiés avant.
Secundo, comme suggéré dans l'aparté "Attention Deadlocks" de la même page, un des meilleurs moyens pour éviter les deadlocks est d'essayer de limiter le nombre d'objets verrous dans un même programme. Donc, autant éviter de se synchroniser sur messagesChat et sur participantsChat, et utiliser participantsChat comme unique verrou dans toutes les pages JSP du chat.
> *Build du forum (annexe p.343) : Je ne comprend pas trés bien le .bat , pourquoi ne compile-t-on que 6 fichiers .java . Comment se fait il que l'on retrouve bcp plus de fichiers .class aprés ??
Ne sont cités dans la première instruction javac de buildforum.bat que les fichiers strictement nécessaires au forum et indirectement les fichiers des classes dont ils dépendent (on n'a pas besoin des fichiers AfficherSujets.java ou des fichiers des autres classes d'outils).
Quand le compilateur javac compilera par exemple UtilisateurForum.java, il compilera aussi Utilisateur.java pour vérifier si la classe Utilisateur dont hérite UtilisateurForum est correcte, et javac générera les fichiers .class correspondants.
Pour plus de clarté (et pour être plus réaliste), j'aurai peut-être mieux fait de citer tous les fichiers des classes nécessaires sans tenir compte des dépendances entre eux. --- Manu (moderator/modérateur)
|
Vince
Ville : Paris
Membre depuis : 11 févr. 2005
Messages : 2
|
14 févr. 2005 à 08:15
Ok merci de la réponse !
Cependant chez moi lorsque je compil un programme si je ne cite pas tous les fichiers .java , j'ai une erreur de compilation (class mere introuvable) , il faut necessairement que je cite tous les .java lors du javac ... pourquoi ?
|
Manu
Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
|
16 févr. 2005 à 18:09
Il faut probablement que vous utilisiez l'option -sourcepath de javac
Voir pages 45 et suivantes et aussi le sujet http://www.eteks.com/services/forumcahierjava1/viewSubject.jsp?subjectId=250 --- Manu (moderator/modérateur)
|