Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SOCKET VS RMI
Resumen
Los URL y las conexiones URL (URLConnection) proporcionan un mecanismo de un nivel relativamente alto (nivel
7 del modelo OSI) para acceder a los recursos de Internet. Algunas veces, los programas requieren una comunicacin
a travs de la red, a un nivel un poco ms bajo; por ejemplo, cuando se desea escribir una aplicacin cliente /
servidor. Para este tipo de programas, se utilizan las clases Socket y RMI, provenientes de java, que trabajan en los
niveles 3 y 4 del modelo OSI.
2
SOCKET VS RMI
programas Java. (Usted * podra * interfaz de los Mensajes en broadcast. Los sockets permiten
programas Java RMI con los programas escritos enviar mensajes sin destinatario, de forma que
en otros idiomas, pero probablemente hay cualquiera puede recogerlo. Con rmi la
maneras ms fciles de hacerlo ...) comunicacin siempre es punto a punto.
RMI se construye en la parte superior de los Carga dinmica de clases. Rmi permite la carga
sockets, traduce llamadas de mtodo y devuelve dinmica de clases, es decir, el servidor puede
valores y los enva a travs de sockets. pasar al cliente clases que este no tenga en su
VENTAJAS E INCONVENIENTES CLASSPATH en tiempo de ejecucin y
Codificacin: El establecimiento de la conexin viceversa. Esto hace que ampliar dinmicamente
es similar en nmero de lneas de cdigo en el comportamiento de una aplicacin rmi sea ms
ambos casos (un par de lneas). sencillo.
Los sockets necesitan ms cdigo para identificar
qu mensaje llega y tratarlo en consecuencia
(sentencias switch-case o tantos if como tipos de CONCLUSIONES
mensaje distintos). En rmi se hace con llamadas a
mtodos, por lo que no es necesario ningn tipo CUNDO USAR SOCKETS Y CUNDO
de codificacin adicional. USAR RMI
En rmi se necesitan una serie de herramientas Si nuestro enlace fsico es lento (puerto RS232,
adicionales, compilar los objetos remotos adems modem, etc) es mejor usar sockets.
de con javac con rmic y finalmente tener lanzado Si tenemos pocos tipos de mensajes y se usan
el programa rmiregistry. para transmitir muchos datos (por ejemplo,
En los sockets se enva un mensaje y se debe transferencia de ficheros), es mejor sockets.
esperar por la respuesta, que puede llegar o no. Si el servidor ofrece muchas funcionalidades, es
Las lecturas de mensajes dejan bloqueado el hilo mejor rmi.
hasta que llegan. En rmi la llamada queda Si la aplicacin servidor va a modificarse con
bloqueada hasta recibir la respuesta. En ambos cierta frecuencia y no queremos tener que
casos suele ser necesario el uso de hilos si las actualizar todos los clientes uno a uno, la carga
respuestas pueden tardar. dinmica de clases de rmi puede ser una solucin.
Ancho de banda: En los sockets, por la red slo
se envan los mensajes que nosotros enviamos. En REFERENCIAS BIBLIOGRAFICAS
rmi, se enva adems todo el protocolo interno de
https://docs.oracle.com/javase/7/docs/api/java/net/
rmi, que suele ser de un tamao considerable. En
Socket.html
general, rmi consume ms ancho de banda de
nuestro enlace fsico que los sockets. https://cloud.google.com/appengine/docs/standard/
Comunicacin con otros lenguajes: rmi es java/sockets/
puramente java, as que slo puede integrarse
entre dos programas java. Con sockets podemos http://www.javaworld.com/article/2077322/core-
java/core-java-sockets-programming-in-java-a-
comunicarnos con cualquier otro programa hecho tutorial.html
en cualquier otro lenguaje, aunque tendremos que
enviar los mensajes campo a campo para hacerlos http://www.public.iastate.edu/~java/docs/guide/rmi
compatibles con el otro lenguaje. /index.html