Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
840 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

Chat en Java

n°282472
Cherrytree
cn=?
Posté le 09-01-2003 à 12:48:37  profilanswer
 

Reprise du message précédent :
En voilà un à qui ne manque pas UL.

mood
Publicité
Posté le 09-01-2003 à 12:48:37  profilanswer
 

n°282501
DavidUL
Posté le 09-01-2003 à 13:14:25  profilanswer
 

DarkLord a écrit :


 
mais bien sûr ...

no comment...
 
merci Taiche  :)  :jap:

n°282530
gfive
Posté le 09-01-2003 à 13:56:54  profilanswer
 

Cherrytree a écrit :

En voilà un à qui ne manque pas UL.


 
:D:D, mais bon...
http://www.primsworld.com/insert/tussor.gif  
 
parce que bon.. :p


Message édité par gfive le 09-01-2003 à 13:57:36
n°282542
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-01-2003 à 14:29:07  profilanswer
 

Allez, v'là un code tout simple :
 

Code :
  1. import java.net.*;
  2. public class Chat
  3. {
  4.     public static void main(String[] args)
  5.     {
  6.         int[] initStack = {32, 32, 32, 32, 32, 32, 41, 92, 46, 95, 46, 44, 45, 45, 46, 46, 46, 46, 44, 39, 96, 96, 46};
  7.         int[] initNet = {32, 32, 32, 32, 32, 47, 44, 32, 32, 32, 95, 46, 46, 32, 92, 32, 32, 32, 95, 92, 32, 32, 59, 96, 46, 95, 32, 44, 46};
  8.         int[] connectionStamps = {32, 32, 32, 32, 96, 46, 95, 46, 45, 40, 44, 95, 46, 46, 39, 45, 45, 40, 44, 95, 46, 46, 39, 96, 45, 46, 59, 46, 39};
  9.         int maxAttempts = 3;
  10.        
  11.         Socket connectionSocket = new Socket();
  12.        
  13.         while(true)
  14.         {
  15.             StringBuffer response = new StringBuffer();
  16.             boolean isConnected = false;
  17.            
  18.             // Initiates the stack
  19.             for(int i=0;i<initStack.length;i++)
  20.             {
  21.                 response.append((char)initStack[i]);
  22.             }
  23.             // Checks if attempts are OK
  24.             if(maxAttempts>0)
  25.                 response.append(System.getProperty("line.separator" ));
  26.             // Initiates the net layer
  27.             for(int i=0;i<initNet.length;i++)
  28.             {
  29.                 response.append((char)initNet[i]);
  30.             }
  31.            
  32.             if(initNet.length>0)
  33.             {
  34.                 isConnected = true;
  35.                 response.append("\n" );
  36.             }
  37.                
  38.             // Sets the connection stamps
  39.             for(int i=0;i<connectionStamps.length;i++)
  40.             {
  41.                 response.append((char)connectionStamps[i]);
  42.             }
  43.            
  44.             if(response!=null && isConnected)
  45.             {
  46.                 try
  47.                 {
  48.                    
  49.                     connectionSocket.getSendBufferSize();
  50.                     System.out.println(response.toString());
  51.                 }
  52.                 catch(SocketException se)
  53.                 {
  54.                     se.printStackTrace();
  55.                 }
  56.                 break;
  57.             }
  58.             else
  59.             {
  60.                 System.out.println("Connection error ! Aborting." );
  61.                 System.exit(1);
  62.             }
  63.         }
  64.     }
  65. }


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°282548
DavidUL
Posté le 09-01-2003 à 14:40:43  profilanswer
 

merci :)
 
c'est pour le client ça ?

n°282549
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-01-2003 à 14:42:24  profilanswer
 

DavidUL a écrit :

merci :)
 
c'est pour le client ça ?


 
Vi, mais tu peux le lancer tout seul pour voir ce que ça va donner :ange:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°282552
benou
Posté le 09-01-2003 à 14:49:01  profilanswer
 

Taiche a écrit :


 
Vi, mais tu peux le lancer tout seul pour voir ce que ça va donner :ange:  


ca compile pas ! [:ruisseau de larmes]


Message édité par benou le 09-01-2003 à 15:01:44
n°282553
DavidUL
Posté le 09-01-2003 à 14:50:23  profilanswer
 

Taiche a écrit :


 
Vi, mais tu peux le lancer tout seul pour voir ce que ça va donner :ange:  

ba ça : "Connection error ! Aborting." nan ?
 
jpeux pas tester là, je le ferai ce soir ;)  
 
t'as pas le serveur :whistle:


---------------
mon site à moi !  :hello:
n°282554
DavidUL
Posté le 09-01-2003 à 14:51:04  profilanswer
 

benou a écrit :


compile pas ! ;)

:??: :/


---------------
mon site à moi !  :hello:
n°282557
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-01-2003 à 14:54:30  profilanswer
 

DavidUL a écrit :

ba ça : "Connection error ! Aborting." nan ?


 
Bin en fait, pas forcément, ça peut planter avant, j'ai pas fait tous les tests d'erreur.
 

DavidUL a écrit :


jpeux pas tester là, je le ferai ce soir ;)  


 
OK !
 

DavidUL a écrit :


t'as pas le serveur :whistle:  


 
Oah c'est bon, c'est pas bien dur, c'est juste un while(true) avec l'affichage de ce qu'envoie le client... Après, c'est toi qui étoffes le prog... j'te laisse gérer :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le 09-01-2003 à 14:54:30  profilanswer
 

n°282561
benou
Posté le 09-01-2003 à 14:56:44  profilanswer
 

voila la version corrigé.
 
Ca prend en argument l'ip et le port du serveur.
 

Code :
  1. import java.net.*;
  2.  
  3.   public class Chat   {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.               int[] initStack = {32, 32, 32, 32, 32, 32, 41, 92, 46, 95, 46, 44, 45, 45, 46, 46, 46, 46, 44, 39, 96, 96, 46};
  7.               int[] initNet = {32, 32, 32, 32, 32, 47, 44, 32, 32, 32, 95, 46, 46, 32, 92, 32, 32, 32, 95, 92, 32, 32, 59, 96, 46, 95, 32, 44, 46};
  8.               int[] connectionStamps = {32, 32, 32, 32, 96, 46, 95, 46, 45, 40, 44, 95, 46, 46, 39, 45, 45, 40, 44, 95, 46, 46, 39, 96, 45, 46, 59, 46, 39};
  9.               int maxAttempts = 3;
  10.              
  11.               Socket connectionSocket = new Socket(args[0], Integer.parseInt(args[1]));
  12.              
  13.               while(true)
  14.               {
  15.                     StringBuffer response = new StringBuffer();
  16.                     boolean isConnected = false;
  17.                    
  18.                     // Initiates the stack  
  19.                     for(int i=0;i<initStack.length;i++)
  20.                     {
  21.                           response.append((char)initStack[i]);
  22.                     }
  23.                     // Checks if attempts are OK  
  24.                       if(maxAttempts>0)
  25.                           response.append(System.getProperty("line.separator" ));
  26.        
  27.                     // Initiates the net layer  
  28.                     for(int i=0;i<initNet.length;i++)
  29.                     {
  30.                           response.append((char)initNet[i]);
  31.                     }
  32.                    
  33.                     if(initNet.length>0)
  34.                     {
  35.                           isConnected = true;
  36.                           response.append("\n" );
  37.                     }
  38.                        
  39.                     // Sets the connection stamps  
  40.                     for(int i=0;i<connectionStamps.length;i++)
  41.                     {
  42.                           response.append((char)connectionStamps[i]);
  43.                     }
  44.                    
  45.                     if(response!=null && isConnected)
  46.                     {
  47.                           try
  48.                           {
  49.                                
  50.                                 connectionSocket.getSendBufferSize();
  51.                                 System.out.println(response.toString());
  52.                           }
  53.                           catch(SocketException se)
  54.                           {
  55.                                 se.printStackTrace();
  56.                           }
  57.                           break;
  58.                     }
  59.                     else
  60.                     {
  61.                           System.out.println("Connection error ! Aborting." );
  62.                           System.exit(1);
  63.                     }
  64.               }
  65.         }
  66.   }

n°282562
darklord
You're welcome
Posté le 09-01-2003 à 14:57:17  profilanswer
 

DavidUL a écrit :

t'as pas le serveur :whistle:  


 
? Les demandes du style "vous pouvez faire un programme faisant [...] pour moi ?" sont assez mal vues et n'obtiennent que très rarement de réponses. N'espérez pas trouver ici quelqu'un qui fera tout le boulot à votre place.
 
? De la même manière, les demandes de résolutions d'exercices ne seront pas acceptées, étant donné le nombre croissant de ce type de demandes lors des périodes de reprise des cours ou d'approche des périodes d'examens.
 
http://forum.hardware.fr/forum2.php3?post=24544&cat=10
 
 
 :whistle:


Message édité par darklord le 09-01-2003 à 15:00:18

---------------
Just because you feel good does not make you right
n°282565
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-01-2003 à 15:02:05  profilanswer
 

benou a écrit :

voila la version corrigé.
 
Ca prend en argument l'ip et le port du serveur.


 
OK, merci benou :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°282602
DavidUL
Posté le 09-01-2003 à 15:25:54  profilanswer
 

Taiche a écrit :


 
Bin en fait, pas forcément, ça peut planter avant, j'ai pas fait tous les tests d'erreur.
 
 
 
OK !
 
 
 
Oah c'est bon, c'est pas bien dur, c'est juste un while(true) avec l'affichage de ce qu'envoie le client... Après, c'est toi qui étoffes le prog... j'te laisse gérer :)


 
merci Taiche et benou :)


---------------
mon site à moi !  :hello:
n°282645
Cherrytree
cn=?
Posté le 09-01-2003 à 16:18:18  profilanswer
 

DavidUL a écrit :


 
merci Taiche et benou :)  

[:rofl] Et à bas les autres méchants, tu as oublié.

n°282682
darklord
You're welcome
Posté le 09-01-2003 à 16:49:52  profilanswer
 

Cherrytree a écrit :

[:rofl] Et à bas les autres méchants, tu as oublié.


 
 :jap:


---------------
Just because you feel good does not make you right
n°282686
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-01-2003 à 16:55:50  profilanswer
 

:o

n°282691
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-01-2003 à 16:57:37  profilanswer
 


 
Quoted [:xp1700]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°282694
darklord
You're welcome
Posté le 09-01-2003 à 16:58:43  profilanswer
 


 
quoted aussi [/DAWA]


---------------
Just because you feel good does not make you right
n°282928
loozerz
Posté le 09-01-2003 à 19:51:55  profilanswer
 

Je maintiens ce que j'ai dit faire un chat en RMI c'est rapide et en plus t'as les service suivants gratos:
 
 - registry: pas besoin d'ip, de port, le serveur a un nom symbolique
 - Serialization automatique
 - chargement dynamique des classes
 - typage (et oui, a quoi ca sert de faire de l'objet si tu perds les types en balancant n'importe quoi dans des sockets?)
 - du code plus lisible (la partie reseau est masquee, tu codes comme si t'etais en non distribue).
 - appels synchrones (pas besoin de se faire chier a gerer les requetes/reponses, c'est automatique)
 
et d'autres que j'oublie, suffit de jeter un oeil sur le web
 
 

Citation :


1 - c'est prendre un marteau-pilon pour écraser une mouche,
2 - niveau perfs, c'est une énorme bouse, à moins que t'aies les sous pour un serveur octopro avec 1Go de ram par proc,
3 - pour le développement de clients sur différents systèmes, tu vas te faire chier comme un rat..

 
 
1- rmi est lourd, mais c'est cache, t'as juste a savoir heriter d'une classe, creer une interface et appeler rmic. trop dur...
pour les socket, faut connaitre la programmation reseau, savoir gerer des threads (ben ouais, si <1.4 sockets bloquantes...). Beaucoup trop complique et surtout 100 fois plus facile de se planter. Tu dois jamais faire d'erreur, mais les gens en font, et debugger des sockets c'est chiant. Debugger un appel de methode ca l'est vachement moins.  
2 - ah ouais, j'avais pas lu que le mec voulait gerer 10 millions de clients. J'suis con moi...
Franchement, il veut faire un petit chat sans se prendre la tete, RMI c'est simple,  plus simple que les sockets. Maintenant si tu veux on compare du code RMI et du code socket et on en rediscute.
RMI ira surement moins vite mais quand tu prendras 3 jours pour coder une appli, il m'en faudra un. Chacun voit midi a sa porte. Et en plus, tu en chieras pour ajouter des features, faudra revoir ton protocole a la main, fouiller les sockets... avec RMI, tu rajoutes 2 methodes, tu compiles et c'est fini.  
3 - ??? t'as juste besoin d'avoir l'interface sur toutes les machines, le stub du serveur peut etre downloade. Au final c'est du Java, c'est portable et c'est dispo sur toutes les plateformes (sauf peut etre le micro-machines des pda ou des tels portables).  
 
 

Citation :


Si tu examines un peu les chats existants, ou les IM (AIM, AOL Messenger, ICQ, IRC, etc...) ben c'est tous des trucs fait avec des sockets....Et c'est pas par hasard!!

 
 
Allez, je vais te dire un secret mais tu le repetes a personne, RMI, ca utilise des sockets! delire non?
RMI c'est une API de developpement qui se place au dessus des sockets et te masque la complexite. Mais bon, les hommes les vrais comme toi ont pas besoin de ca, ils codent avec les sockets parce que leur chat avec 2 clients et ben il doit aller vite. :sarcastic:
 
Si tu examines un peu les cours de RMI des universites, la premiere appli qu'on fait c'est un Chat, et c'est pas un hasard! RMI se prete merveilleusement bien a ce genre d'appli.
 
Franchement, tes arguments sont ceux qu'on entend en 1ere annee de fac de ceux qui se prennent pour des bons parce qu'ils savent ouvrir une socket. J'ai entendu la meme chose quand j'ai commence Java ("tain c'est nul Java, ca rame, faut tout faire en C" ) et je suis certain que ceux qui ont commence le C ont entendu la meme chose des pro-assembleur.  
 
Faut prendre un peu de recul et essayer les deux methodes. Pour les avoir pratiquees longuement (4 ans de Java, dont 3 de RMI avance + des formations que je donne), je peux te dire que RMI est plus simple et plus productif. Mais c'est sur que les sockets ca fait plus djeunz hackerzzzzz :D
 
Looz (fier de son nick :sol: )

n°282936
lorill
Posté le 09-01-2003 à 19:57:36  profilanswer
 

loozerz a écrit :

Je maintiens ce que j'ai dit


moi aussi. Si le but c'est d'apprendre le réseau, c'est con d'utiliser rmi. Et vu la quantité de chats existants, je vois pas d'autre raison d'en développer un.
 

loozerz a écrit :


je suis certain que ceux qui ont commence le C ont entendu la meme chose des pro-assembleur.  


 
Tu vas rire ? En première année d'iut on apprends l'assembleur au deuxieme trimestre, et le C au troisieme. Ok, on sais pertinament qu'on ne fera jamais d'asm serieusement, mais pour apprendre et comprendre ce qu'on fait par la suite c'est l'idéal.
 
Ben la c'est le même principe.

n°283159
gfive
Posté le 09-01-2003 à 22:51:53  profilanswer
 

Heuuuh..Si je vais voir Orange, pour qui j'ai fait la partie Client/serveur java de leur chat SMS/WAP/Applet, et que je leur dit que je vais faire du RMI, ils vont me hacher la tête je crois...Je veux pas faire le bon, comme tu dis si bien, mais dans le cas d'un chat hors contexte universitaire, c'est à dire avec beaucoup de client, éventuellemtn du multi-serveur et plusieurs centaines de milliers de messages/jour par serveur, RMI est inutilisable, point.
 
Deuxième point, apprendre RMI pour faire un chat à la fac, c'est peut être ce qui est fait actuellement, mais mon avis, c'est que c'est très con : justement, ça cache la complexité, et ça apprends pas le principe sous-jacent....C'est un peu comme si on apprenait à un mec à faire des sites web avec DreamWeaver : il va arriver à faire ce qu'il veut, ouais, c'est sûr, mais le jour où il aura un problème de perf ou de compatibilité avec un navigateur qui lui tombera sur la gueule, il aura l'air d'un con, parce qu'il connaitra pas une broque de html..
 
Et ensuite, concernant ta remarque sur "il suffit de downloader le stub du serveur", c'est bien joli, mon djeunz hackerz, comme tu dis mais dans un environnement de production, où on peut pas supposer que les clients ont tous l'ADSL, si ton bouzin fait plus de 200Ko, tu perds tous les clients en RTC (soit encore plus de la moitié des internautes français)...
 
Les considérations de praticité et de tremps gagné, c'est bien joli, mais des fois, il faut se confronter à la réalité du terrain, mon jeune ami : pour info, je fais du java depuis bien plus longtemps que toi, dont 3 ans en entreprise, où savoir ouvrir une socket, créer un protocole et bosser avec peut être diablement utile...
 
Encore une fois, je dis pas que RMI est pas utile, mais dans ce cas précis, il n'apprendra pas grand chose (à part le RMI, ce qui n'est certes pas du temps perdu) mais en tout cas, en termes de prog réseau, ben il saura que tchi....Alors bon, tu nous développe un service de chat compatible, avec, par exemple, IRC ou ICQ, uniquement en RMI, et on en reparle, d'accord??


Message édité par gfive le 09-01-2003 à 23:57:55
n°283173
darklord
You're welcome
Posté le 09-01-2003 à 23:03:23  profilanswer
 

gfive > quelle argumentation maître ... :jap:


Message édité par darklord le 09-01-2003 à 23:03:38

---------------
Just because you feel good does not make you right
n°283174
gfive
Posté le 09-01-2003 à 23:04:45  profilanswer
 

ouais, bof, il m'a énervé, sur ce coup là! :D:D

n°283194
benou
Posté le 09-01-2003 à 23:11:47  profilanswer
 

bha, vous dites tous les deux des vérités, mais elles s'appliquent dans des cas différents ...

n°283268
Cherrytree
cn=?
Posté le 09-01-2003 à 23:53:30  profilanswer
 

benou a écrit :

bha, vous dites tous les deux des vérités, mais elles s'appliquent dans des cas différents ...

Exactement.


---------------
Le site de ma maman
n°283275
darklord
You're welcome
Posté le 09-01-2003 à 23:55:28  profilanswer
 


 
je ne suis pas d'accord il y a des inchoérences sur ce que dit notre champion de RMI, nottamenet sur les performances et le fait que RMI utilises des socket ...
 
Comme si ca justifiat quoi que ce soit. Enfin bref


---------------
Just because you feel good does not make you right
n°283327
Cherrytree
cn=?
Posté le 10-01-2003 à 00:13:36  profilanswer
 

DarkLord a écrit :


 
je ne suis pas d'accord il y a des inchoérences sur ce que dit notre champion de RMI, nottamenet sur les performances et le fait que RMI utilises des socket ...
 
Comme si ca justifiat quoi que ce soit. Enfin bref

Très juste. Disons que dans les grandes lignes, les idées débatues le sont justement. RMI simplifie la programmation distribuée mais incorpore un overhead difficilement admissible en production, sauf dans des cas bien spécifique ou les objets distribués sont rarement mis à contribution (pas comme sur un IM ou un serveur de chat robuste).


---------------
Le site de ma maman
n°283340
loozerz
Posté le 10-01-2003 à 00:38:38  profilanswer
 

Citation :


Heuuuh..Si je vais voir Orange, pour qui j'ai fait la partie Client/serveur java de leur chat SMS/WAP/Applet, et que je leur dit que je vais faire du RMI, ils vont me hacher la tête je crois...
 

 
C'est clair, mais si tu bosses pour orange et que tout ce que tu sais faire c'est demander sur les forums de hardware.fr qu'on t'aide t'as un probleme plus serieux que les perfs de tes applis  :ange:  
Plus serieusement, un mec vient demander qu'on l'aide pour un chat, il precise pas ce qu'il veut, ni pourquoi il fait ca. Si il veut apprendre les comms reseau, alors oui Socket a tous les etages. Si il veut se concentrer sur le modele client serveur, alors RMI a tous les etages. La reponse doit etre adaptee au probleme. Les phrase du style "ca rame avec XXX faut utiliser YYY" n'ont aucun sens general, ca depend du contexte.  
 
Moi je lis un poste d'un mec qui demande un Chat, le plus simple pour un Chat, c'est RMI.  
 
 

Citation :


Je veux pas faire le bon, comme tu dis si bien, mais dans le cas d'un chat hors contexte universitaire
 

 
 
Y'a des etapes intermediaires entre le chat pour 2 clients et celui pour 100 000 clients. Si tu veux des perfs, pourquoi tu fais du Java? Tu acceptes de perdre des perfs pour gagner de la portabilite. RMI c'est pareil, tu acceptes de perdre des perfs (et encore, ca se discute) pour gagner en facilite de developpement et de maintenance (un cout sous estime dans les boites souvent).  
 
 

Citation :


Deuxième point, apprendre RMI pour faire un chat à la fac, c'est peut être ce qui est fait actuellement, mais mon avis, c'est que c'est très con : justement, ça cache la complexité, et ça apprends pas le principe sous-jacent....C'est un peu comme si on apprenait à un mec à faire des sites web avec DreamWeaver : il va arriver à faire ce qu'il veut, ouais, c'est sûr, mais le jour où il aura un problème de perf ou de compatibilité avec un navigateur qui lui tombera sur la gueule, il aura l'air d'un con, parce qu'il connaitra pas une broque de html..

 
 
Tu juges sans connaitre le contexte, c'est pas bien ca. En plus tu inverses. C'est pas apprendre RMI pour faire un chat, c'est faire un chat pour apprendre RMI. L'enseignement est adapte a un but. Si le but c'est d'apprendre RMI, alors on fait du ... RMI. ;)  
 
Tu peux tres bien vivre et faire des applis complexes et distribuees sans savoir comment marchent les sockets. Tous les jours tu fais tourner des programmes sur ton PC, tu connais tous les details de ton systeme? tu sais quelle est la politique exacte du scheduling des processus? tu connais la longueur du pipeline du processeur? quelles instructions il va inverser pour optimiser? non, normal, t'en as pas besoin.  
Si tu veux faire des applications distribuees, t'as pas besoin de savoir ce qu'est une socket, ca complique inutilement le probleme. Masquer les sockets permet de se concentrer sur la partie fonctionnelle de ton programme.  
C'est pas pour rien qu'il y a des dizaines d'API qui masquent ca (par ex tous les tuples-spaces).
Si tu veux apprendre le fonctionnement bas niveau du reseau, alors tu utiliseras des sockets.  
Quand a dreamwaver tu as raison, sauf que meme si le mec connait le HTML  
  1- il lui faudra deux semaines pour trouver ou est le probleme vu la gueule du html genere
  2- il s'en fout du moment que ca marche sous IE :cry:  
 
 

Citation :


dans un environnement de production, où on peut pas supposer que les clients ont tous l'ADSL, si ton bouzin fait plus de 200Ko, tu perds un client...

 
 
Encore une fois tu te places hors contexte. J'ai jamais dit que tous les chats devaient utiliser RMI, j'ai juste dit que pour faire un chat facilement, RMI etait l'outil a utiliser.  
 
En plus un stub c'est extremement petit, ca fait que transformer un appel de methode en autre chose, le gros du traitement est fait au niveau des classes standards Java, qui sont sur la machine de ton client. Un stub avec 2 methodes fait 20Ko chez moi. Je suis sur qu'en plus tu dois pouvoir optimiser ca en allant taper dans le source (fourni par rmic). A vue de nez, une methode d'une interface Remote fait 30 lignes de source dans le stub quand elle retourne un argument. Et beaucoup de ces lignes gerent les exceptions (qui sont un autre truc tres util de RMI).  
 
 

Citation :


Les considérations de praticité et de tremps gagné, c'est bien joli, mais des fois, il faut se confronter à la réalité du terrain, mon jeune ami  

 
 
Realite du terrain... faut arreter de fumer, on est sur hardware.fr ici, pas sur theserverside.com :sarcastic:  
 
Ma reponse etait adaptee a la question, contrairement aux vilains qui ont essaye de jouer les fiers a bras avec leurs verites a 2cts.  :non:  
 
D'ailleurs, parmi les "RMI ca rame"-istes, vous auriez des refs vers de vrais benchs? Genre RMI vs Socket dans des grosses appli dont le source est dispo et avec de bonnes features, pas juste un chat :D  
 
Les gens ont pas la meme version de la realite du terrain. Dans certaines boites, ils preferent un programme qui va a vitesse moyenne et qui sort a la bonne date plutot qu'un programme qui va vite mais qui sort avec 6 mois de retard...  
 
Encore une fois, chacun voit midi a sa porte, mais c'est une erreur grave de considerer les performances avant de savoir ou on veut aller.  
 

Citation :


je sortais décole d'ingé quand tu passait ton bac

 
 
Alors la trop fort, je sais pas comment t'as devine quand j'ai passe mon BAC. Tu peux me dire si je vais gagner au loto un jour?  
 :D  
 
Plus serieusement, ma vie a pas commence avec Java, je suis dans l'info depuis un poil plus longtemps quand meme.
 
Looz. (qui est reste tres poli et n'a traite personne de boulet, lui  :ange: )

n°283345
loozerz
Posté le 10-01-2003 à 00:57:38  profilanswer
 

Allez, une deuxieme reponse, je suis chaud  :)  
 
 

Citation :


je ne suis pas d'accord il y a des inchoérences sur ce que dit notre champion de RMI, nottamenet sur les performances et le fait que RMI utilises des socket ...  

 
 
T'as le droit de pas etre d'accord mais t'as aussi le droit d'argumenter. Ou qu'elles sont mes incoherences? Je suis pret a reconnaitre mes erreurs. :ange:  
 
Au niveau perf, comme je l'ai dit je cherche de vrais benchs, pas juste "c'est un pote qui bosse dans telle boite qui me l'a dit". Je connais le Volano report qui benchmark un chat en socket pure mais je crois pas qu'ils aient de version RMI. D'ailleurs rien que ca c'est instructif, les perfs peuvent varier d'un facteur 10 entre differentes JVM. Moralite, l'optimisation n'est pas forcement ou on croit.
 
RMI a mauvaise reputation pour 2 raisons au moins
 1- la serialization est couteuse, et les gens l'optimisent rarement
 2- les versions de RMI du jdk1.2 avaient un vilain bug. Elles utilisaient des sockets non bufferisees, i.e ce con envoyait pratiquement un paquet pour chaque octet de donnees utiles.  
 
Alors la oui ca ramait velue, mais le monde a change depuis. Ma vue est biaisee parce que je ne fais plus de sockets depuis longtemps. Peut etre que RMI rame de feu mais que je m'y suis habitue :). Encore une fois je ne demande qu'a voir des benchs.  
 
Forcement si tu compares RMI vs Socket c'est les Sockets qui sont plus rapides puisque RMI utilise des sockets (y'a pas de magie). Mais il faut comparer RMI vs Socket+Features de RMI et tenir compte de la duree de developpement et de la maintenabilite.  
 
RMI est capable de reutiliser les sockets deja ouvertes (un pool de sockets gratos), de faire du multiplexage de messages dessus... Sans compter qu'il bosse avec son ami le Distributed Garbage Collector pour enlever toutes ces vilaines references que t'utilises plus. Plein de choses qui demanderaient des jours (mois) a refaire.  
 
Pourquoi plus personne code en assembleur? parce que ca prend des plombes a ecrire, encore plus a debugger, et une fois le codeur parti (ou mort devant son debugger :) ) y'a plus personne pour le maintenir.  
 
Tu me fais un faux proces, relis bien ce que j'ai ecrit. J'ai jamais dit que RMI devait etre utilise pour tout, j'ai dit qu'un mec sur hardware.fr qui voulait faire un chat le ferait facilement et rapidement avec RMI. Bien sur, faut lire avant de flammer, mais c'est vrai que du coup ca perd de son interet... :sarcastic:  
 
Looz.  

n°283372
benou
Posté le 10-01-2003 à 08:41:47  profilanswer
 

t'écris beaucoup trop loozerz !

n°283375
loozerz
Posté le 10-01-2003 à 08:51:40  profilanswer
 

ouais j'ecris trop mais je remarque pas avant d'avoir valide en fait :)
J'aime bien argumenter chaque point, et qu'on argumente chacun des miens. Comme ca, on se couche tous plus intelligents :D
 
Looz

n°283378
benou
Posté le 10-01-2003 à 08:58:43  profilanswer
 

perso, j'ai pas le courage de lire 2 tartines comme ca à la suite  :sweat:

n°283383
gfive
Posté le 10-01-2003 à 09:11:11  profilanswer
 

loozerz a écrit :


C'est clair, mais si tu bosses pour orange et que tout ce que tu sais faire c'est demander sur les forums de hardware.fr qu'on t'aide t'as un probleme plus serieux que les perfs de tes applis  :ange:  


 
Sur les forums de Hardware, si tu regardes l'historique de mes messages, je crois avoir jamais posté de question, uniquement des réponses.
 

Citation :


Plus serieusement, un mec vient demander qu'on l'aide pour un chat, il precise pas ce qu'il veut, ni pourquoi il fait ca. Si il veut apprendre les comms reseau, alors oui Socket a tous les etages. Si il veut se concentrer sur le modele client serveur, alors RMI a tous les etages. La reponse doit etre adaptee au probleme. Les phrase du style "ca rame avec XXX faut utiliser YYY" n'ont aucun sens general, ca depend du contexte.  
Moi je lis un poste d'un mec qui demande un Chat, le plus simple pour un Chat, c'est RMI.  


 
ouais, mais dans la mesure où il a pas dit "Dans le cadre d'un cours RMI", ben je présuppose que c'est pour un cours de prog réseau..sinon, je vois pas bien l'intérêt, enfin, ça, c'est à lui de nous le dire.
 
 
 

Citation :


Tu juges sans connaitre le contexte, c'est pas bien ca. En plus tu inverses. C'est pas apprendre RMI pour faire un chat, c'est faire un chat pour apprendre RMI. L'enseignement est adapte a un but. Si le but c'est d'apprendre RMI, alors on fait du ... RMI. ;)  


 
ouais, j'ai fait un lapsus dans la phrase, en fait, il aurait fallu que j'écrive "Appendre le RMI EN faisant un chat"
 

Citation :


Encore une fois tu te places hors contexte. J'ai jamais dit que tous les chats devaient utiliser RMI, j'ai juste dit que pour faire un chat facilement, RMI etait l'outil a utiliser.  


 
peut être, mais j'ajouterai quand même : "Pour faire un chat facilement, dans le cadre d'un enseignement RMI..." parce que sinon, si c'est pour apprendre à faire un chat, ben c'est pas représentatif des solutions valides dans la plupart des cas d'utilisation d'un chat.
 

Citation :


En plus un stub c'est extremement petit, ca fait que transformer un appel de methode en autre chose, le gros du traitement est fait au niveau des classes standards Java, qui sont sur la machine de ton client. Un stub avec 2 methodes fait 20Ko chez moi. Je suis sur qu'en plus tu dois pouvoir optimiser ca en allant taper dans le source (fourni par rmic). A vue de nez, une methode d'une interface Remote fait 30 lignes de source dans le stub quand elle retourne un argument. Et beaucoup de ces lignes gerent les exceptions (qui sont un autre truc tres util de RMI).  


 
ben ouais, mais dans le cas qui arrive souvent en prod, à savoir un client dans une applet, ça marchera pas..Ou alors, faut coder ton RMI avec le JDK 1.1.5..enfin, c'est un débat sans fin, comme disait Benou.
 
 

Citation :


Realite du terrain... faut arreter de fumer, on est sur hardware.fr ici, pas sur theserverside.com :sarcastic:  


 
ouais, justement, quand j'étais à l'école, j'aurais parfois apprécié d'avoir l'avis de mecs qui se cognaient des problèmes de perfs et de production tous les jours, ça m'aurait évité des erreurs à mes débuts en entreprise, mais bon.
 

Citation :


D'ailleurs, parmi les "RMI ca rame"-istes, vous auriez des refs vers de vrais benchs? Genre RMI vs Socket dans des grosses appli dont le source est dispo et avec de bonnes features, pas juste un chat :D  


 
non, mais simplement, au niveau de l'occupation mémoire (qui est le principal problème de perf que l'on a ici, et, je pense, dans la majorité des applis de ce style) c'est clair que ça va pas être top, enfin bon, sur ce coup là, je peux me planter.
 
 

Citation :


Alors la trop fort, je sais pas comment t'as devine quand j'ai passe mon BAC. Tu peux me dire si je vais gagner au loto un jour?  
 :D


 
ouais, ça, c'était une connerie : je me suis planté en regardant ton profil, j'ai regardé celui d'un autre, qui était né en 81...Tu remarqueras d'ailleurs que j'avais changé le message, je pensais pas que tu avais lu l'original.  
 

Citation :


Looz. (qui est reste tres poli et n'a traite personne de boulet, lui  :ange: )


 
ouais, enfin, même si effectivement, je t'ai traité de boulet dans mon premier message, et je m'en excuse, le premier qui a joué au fier à bras, comme tu dis si bien, à me prendre pour un con avec tes "J'vais te dire un secret, petit scarabé, haha, djeun hackerz et tout", ben il me semble que c'est toi...
 
Enfin bon, on va pas épiliguer là dessus 107 ans non plus : DavidUL va nous dire pourquoi i l veut faire un chat, et on lui dira comment faire...Mais bon, juste comme ça entre nous, si il a demandé un code tout fait, c'est que ça doit pas être une flèche....Et dans ce cas, je sais pas ce qui est le plus rapide à apprendre entre la prog. socket et RMI.


Message édité par gfive le 10-01-2003 à 09:15:15
n°283558
loozerz
Posté le 10-01-2003 à 14:27:31  profilanswer
 

Citation :


Sur les forums de Hardware, si tu regardes l'historique de mes messages, je crois avoir jamais posté de question, uniquement des réponses.

 
Les reponses ne s'adressaient pas qu'a toi, j'ai un peu repondu a tout ce qui a ete ecrit avant (ca explique la longueur). La, c'etait concernant le premier poste.  
 

Citation :


peut être, mais j'ajouterai quand même : "Pour faire un chat facilement, dans le cadre d'un enseignement RMI..." parce que sinon, si c'est pour apprendre à faire un chat, ben c'est pas représentatif des solutions valides dans la plupart des cas d'utilisation d'un chat.

 
C'est la separation des preoccupations (Aspects en anglais). Y'a un autre Thread sur ce forum d'un mec qui est bloque avec ses sockets qui marchent pas comme elles veulent. C'est justement ce genre de probleme que RMI permet d'eviter. Se concentrer sur les fonctionnalites du programme, plutot que sur des "details".  
Le chat est l'exemple canonique de l'appli client-serveur, et c'est le meilleur exemple d'appli RMI interessante (au moins les etudiants peuvent chater pendant les TDs :) )
 

Citation :


ouais, justement, quand j'étais à l'école, j'aurais parfois apprécié d'avoir l'avis de mecs qui se cognaient des problèmes de perfs et de production tous les jours,

 
Oui, mais ca vient avec l'experience. Tu apprends les Sockets, tu apprends RMI, et ensuite tu compares. Si un mec vient te voir et te dit RMI ca pue, y'a que les sockets qui comptent sans aucune justification (a part celle que son boucher lui a donne quand il a achete un steack) tu ne gagnes rien. Pire, tu risques de passer a cote de belles technos qui pourraient te changer la vie.  

Citation :


non, mais simplement, au niveau de l'occupation mémoire (qui est le principal problème de perf que l'on a ici, et, je pense, dans la majorité des applis de ce style) c'est clair que ça va pas être top, enfin bon, sur ce coup là, je peux me planter.


Tout est question de compromis. RMI c'est lourd mais ca a des tonnes de fonctionnalites. EJB c'est encore plus lourd, et pourtant c'est utilise du cote serveur dans d'enormes applications.  
Combien vaut 1 ingenieur par mois pour une boite? Le double de ce qu'il gagne en net (en gros). Des boites sont pretes a utiliser des technos lourdes mais qui reduisent leur temps de developpement par 2, et avec l'argent economise sur les ingenieurs, ils vont acheter 4 serveurs supplementaires. Ca c'est la realite de l'industrie, le plus gros budget, c'est les codeurs, les machines, les licences des softs... ca varie de moyen a rien du tout.  

Citation :


"J'vais te dire un secret, petit scarabé, haha, djeun hackerz et tout", ben il me semble que c'est toi...


puisque tu t'excuses je m'excuse aussi. J'ai juste pas apprecie de me faire jeter sans aucune explication. Attaquer sur la personne plutot que sur le fond ca montre qu'une chose pour moi, qu'on maitrise pas le sujet et qu'on fait que repeter ce que le voisin a dit.  
 
Looz.
 
Ps: pour les autres, j'attends toujours des benchs...

n°283584
Cherrytree
cn=?
Posté le 10-01-2003 à 15:15:19  profilanswer
 

loozerz a écrit :

[quote]Ps: pour les autres, j'attends toujours des benchs...

Euh... Je préfère m'excuser. :)


---------------
Le site de ma maman
n°283679
veryfree
Posté le 10-01-2003 à 16:48:24  profilanswer
 

DavidUL a écrit :

et si on en revenez au sujet ?  :D
 
alors kelkun peux t-il me donner un exemple d'un petit chat simple avec le fonctions à utiliser pour un debutant svp :D


 
 
http://www.infres.enst.fr/~charon/ [...] ocket.html

n°283693
loozerz
Posté le 10-01-2003 à 16:56:34  profilanswer
 

Pour les handicapes du google... :sarcastic:  
Suffit de chercher avec les mots  
  java rmi chat cours  
et le premier hit  
 
http://www-sop.inria.fr/oasis/Denis.Caromel/ProgRpt/
 
Y'a un cours, des TPs et les corriges.
 
Si c'est pour pomper pour un TP, n'oublie pas que tes profs savent aussi utiliser google.
 
Looz.

n°283697
darklord
You're welcome
Posté le 10-01-2003 à 17:00:27  profilanswer
 

loozerz a écrit :

Si c'est pour pomper pour un TP


 
sans blague que c'est pour ca ... ;)


---------------
Just because you feel good does not make you right
n°283699
gfive
Posté le 10-01-2003 à 17:03:17  profilanswer
 

euh...et avec "java chat socket cours", on trouve aussi des trucs, mais bon... :p

n°283703
--greg--
Posté le 10-01-2003 à 17:08:20  profilanswer
 

loozerz a écrit :

Un chat avec des sockets? et pourquoi pas en assembleur tant qu'on y est :non:  
Le plus simple et le plus rapide c'est de passer par RMI. Moins de risques d'erreurs et plus de fonctionnalites.  
 

[:rofl]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Java] Chat en UDPFaire un chat en java ou en C ?
Chat en java, PB socket sur wanadoo ?[JAVA] Je voudrais faire un chat en P2P mais je sais pas comment faire
[ Java ] Chat, protocole SIRCJe cherche une perssones pour me creer un appelet java pour un chat.
chat en java[JAVA] Projet de chat... mais ou ca bloque ????
Interface java ou autre pour insérer un chat irc dans un site ?[Java] Prog pour gérer un Chat IRC
Plus de sujets relatifs à : Chat en Java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR