Le support des Api de bas niveau (niveau transport) abstraction par lequel une application Java interagit avec le réseau, et par extension à distance avec les clients et les services. Socket et les APIs de soutien fiable de flux d'octets et peu fiables, les services de messagerie. Ils sont généralement utilisés pour le protocole TCP/IP et UDP/IP, bien que d'autres réseaux piles de protocole peut (au moins en théorie) être pris en charge.
RMI est un cadre et le protocole de la famille pour la mise en œuvre au niveau de l'application de réseautage entre les applications Java. Il modélise les interactions du réseau en tant que méthode de Java appels contre les objets qui vivent dans d'autres applications. Ce modèle nécessite un mécanisme (généralement un serveur de nom) qui permet à une application de "publier" des objets afin qu'une autre application peut s'y référer. (Et le fait que le RMI ports sont généralement bloqués par défaut) signifie qu'il y a un montant non négligeable de la configuration de l'effort dans la mise en place du RMI.
Servlets sont un ensemble d'Api qui sont principalement conçu pour la mise en œuvre de la partie serveur de HTTP communications; soit, pour la construction des serveurs web en Java. Ils (ou plus exactement le conteneur web dans lequel ils sont exécutés) de s'occuper des détails du protocole HTTP, de sorte que le programmeur (en théorie) ne doit faire face à "l'application" des préoccupations.
Dans la pratique, la servlet développeur et/ou de déploiement doit composer avec d'autres choses comme la mise en correspondance des URLs pour les servlets d'objets, de sécurité et d'authentification. En outre, les Servlets ne traitent que du côté serveur HTTP interaction ... le côté client doivent être traitées par les différentes Api. (Vous pouvez aussi argumenter que les Servlets en eux-mêmes n'en font pas assez, comme en témoigne la prolifération des frameworks d'applications web qui sont construits sur des Servlets.)
En bref:
Sockets sont de bas niveau de la communication réseau
RMI est de haut niveau Java-Java calcul distribué
Servlets sont pour la mise en œuvre de sites web et de services web
J'aime la réponse, mais je viens insatisfaits. Je m'attendais à mieux comprendre la relation entre les servlets et les sockets. Ne servlets dépendent de sockets. les servlets dépendent de sockets." - Au niveau de l'API, pas de. Lors de la mise en œuvre, probablement que oui. Vous pouvez (en théorie) de mettre en œuvre des servlets sans l'aide de la Socket API si vos servlets communiquées exclusivement avec sur-accueil des clients, ou si vous avez mis en place votre propre équivalent à Socket fonctionnalités; par exemple, dans le code natif.
Sockets -- Quelques simples appels directement à l'interface avec le protocole TCP/IP. Très simple, mais vous implment votre propre tampon de manutention et de traiter avec des réponses incomplètes et les délais d'attente en vous-même. L'absence d'authentification ou de sécurité prévue.
rmi -- poignées de tout ce qui précède, <opinion personnelle>c'est un des pire des Api pour avoir contaminé la java des normes </opinion personnelle>, assez simple à programmer, poignées de base erreurs de réseau, l'authentification et les questions de sécurité. Difficile à configurer et à déployer.
Servlets, superbe API simple, tous les problèmes de réseau pris en charge pour vous, de la sécurité et de l'authentification via des plugins. Pas de problèmes de déploiement, de configuration simple.
Justifier votre opinion Il est de mon avis, je sais que certaines personnes aiment juste le RMI, mais je trouve qu'il ya tout simplement trop grand nombre de classes et d'interfaces en cause, son un pain PITA de déboguer et de l'API, qui encourage un style de codage avec de multiples appels de méthode sur le réseau qui meurt lorsqu'il est déployé dans un véritable réseau. L'ensemble de ce qui pourrait être vécu, mais, les problèmes de déploiement sont juste un show stopper. Le client et le serveur classes doivent correspondre exactement une fois que vous avez passé de 100 machines client, il devient impossible à gérer. Votre avis sans aucun doute divertissant ne répond pas à la question, et le "show stopper" problème que vous mentionnez n'est pas valide.
Utiliser des sockets pour mettre en œuvre un protocole TCP/IP spécifique, si une norme existante ou de votre propre protocole personnalisé. Vous avez le contrôle complet sur tous les aspects de la communication en réseau.
Servlets l'appui de la demande/réponse de la sémantique dans le sens général, mais il est nettement plus probable que vous allez utiliser HTTPServlets qui soutiennent, comme prévu, la requête HTTP/répondre sémantique. Par exemple, un serveur web, ou une RESTful HTTP critère.
Utiliser RMI pour la distribution des Objets Java. RMI est lui-même mis en œuvre à l'aide de Sockets (voir ci-dessus) et met en œuvre la Java Fil de Protocole.
Le support des Api de bas niveau (niveau transport) abstraction par lequel une application Java interagit avec le réseau, et par extension à distance avec les clients et les services. Socket et les APIs de soutien fiable de flux d'octets et peu fiables, les services de messagerie. Ils sont généralement utilisés pour le protocole TCP/IP et UDP/IP, bien que d'autres réseaux piles de protocole peut (au moins en théorie) être pris en charge.
RMI est un cadre et le protocole de la famille pour la mise en œuvre au niveau de l'application de réseautage entre les applications Java. Il modélise les interactions du réseau en tant que méthode de Java appels contre les objets qui vivent dans d'autres applications. Ce modèle nécessite un mécanisme (généralement un serveur de nom) qui permet à une application de "publier" des objets afin qu'une autre application peut s'y référer. (Et le fait que le RMI ports sont généralement bloqués par défaut) signifie qu'il y a un montant non négligeable de la configuration de l'effort dans la mise en place du RMI.
Servlets sont un ensemble d'Api qui sont principalement conçu pour la mise en œuvre de la partie serveur de HTTP communications; soit, pour la construction des serveurs web en Java. Ils (ou plus exactement le conteneur web dans lequel ils sont exécutés) de s'occuper des détails du protocole HTTP, de sorte que le programmeur (en théorie) ne doit faire face à "l'application" des préoccupations.
Dans la pratique, la servlet développeur et/ou de déploiement doit composer avec d'autres choses comme la mise en correspondance des URLs pour les servlets d'objets, de sécurité et d'authentification. En outre, les Servlets ne traitent que du côté serveur HTTP interaction ... le côté client doivent être traitées par les différentes Api. (Vous pouvez aussi argumenter que les Servlets en eux-mêmes n'en font pas assez, comme en témoigne la prolifération des frameworks d'applications web qui sont construits sur des Servlets.)
En bref:
les servlets dépendent de sockets." - Au niveau de l'API, pas de. Lors de la mise en œuvre, probablement que oui. Vous pouvez (en théorie) de mettre en œuvre des servlets sans l'aide de la
Socket
API si vos servlets communiquées exclusivement avec sur-accueil des clients, ou si vous avez mis en place votre propre équivalent àSocket
fonctionnalités; par exemple, dans le code natif.OriginalL'auteur Stephen C
Sockets -- Quelques simples appels directement à l'interface avec le protocole TCP/IP. Très simple, mais vous implment votre propre tampon de manutention et de traiter avec des réponses incomplètes et les délais d'attente en vous-même. L'absence d'authentification ou de sécurité prévue.
rmi -- poignées de tout ce qui précède, <opinion personnelle>c'est un des pire des Api pour avoir contaminé la java des normes </opinion personnelle>, assez simple à programmer, poignées de base erreurs de réseau, l'authentification et les questions de sécurité. Difficile à configurer et à déployer.
Servlets, superbe API simple, tous les problèmes de réseau pris en charge pour vous, de la sécurité et de l'authentification via des plugins. Pas de problèmes de déploiement, de configuration simple.
Il est de mon avis, je sais que certaines personnes aiment juste le RMI, mais je trouve qu'il ya tout simplement trop grand nombre de classes et d'interfaces en cause, son un pain PITA de déboguer et de l'API, qui encourage un style de codage avec de multiples appels de méthode sur le réseau qui meurt lorsqu'il est déployé dans un véritable réseau. L'ensemble de ce qui pourrait être vécu, mais, les problèmes de déploiement sont juste un show stopper. Le client et le serveur classes doivent correspondre exactement une fois que vous avez passé de 100 machines client, il devient impossible à gérer.
Votre avis sans aucun doute divertissant ne répond pas à la question, et le "show stopper" problème que vous mentionnez n'est pas valide.
OriginalL'auteur James Anderson
Utiliser des sockets pour mettre en œuvre un protocole TCP/IP spécifique, si une norme existante ou de votre propre protocole personnalisé. Vous avez le contrôle complet sur tous les aspects de la communication en réseau.
Servlets l'appui de la demande/réponse de la sémantique dans le sens général, mais il est nettement plus probable que vous allez utiliser HTTPServlets qui soutiennent, comme prévu, la requête HTTP/répondre sémantique. Par exemple, un serveur web, ou une RESTful HTTP critère.
Utiliser RMI pour la distribution des Objets Java. RMI est lui-même mis en œuvre à l'aide de Sockets (voir ci-dessus) et met en œuvre la Java Fil de Protocole.
OriginalL'auteur alphazero