Download Comparativa de programación cliente/servidor con Java y

Document related concepts
no text concepts found
Transcript
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament d’Arquitectura de Computadors
Comparativa de programación
cliente/servidor con Java y Corba
(apunts de l’assignatura en format transparència)
Comparativa de programación cliente/servidor con Java y Corba
1. ¿Qué herramientas conocemos para la programación
Cliente/Servidor?
 2. ¿Qué es Corba?
 3. ¿Qué ofrece Java para aplicaciones Cliente/Servidor?
 4. Corba us Java Sockets
 5. Corba us RMI
 6. RMI + JINI
 7. ¿Qué le falta a Corba y a RMI?
 8. ¿Qué nos depara el futuro?
 9. Bibliografía

CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
2
¿Qué herramientas conocemos para la programación
Cliente/Servidor?

Sockets
– Implementados en todos los S.O. Modernos
– Comunican dos procesos que pueden estar alojados en dos
màquinas diferentes
– El cliente debe conocer la máquina y puerto donde se ubica el
servidor
– Se debe establecer un protocolo cliente/servidor para el correcto
funcionamiento de la aplicación.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
3
¿Qué herramientas conocemos para la programación
Cliente/Servidor?

RPC’s
– Basado en Sockets
– Abstrae al programador del uso de Sockets
• Máquina Host
• Puerto
• Protocolo
– Sigue siendo necesaria la distinción del código cliente y del
código servidor
– Requiere del Port-Mapper
• Publicar RPC
• Preguntar por RPC, etc...
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
4
¿Qué es Corba?

Corba es:
– Un producto de la O.M.G. (Object Management Group)
– Un entorno para la ejecución de P.O.O. Distribuido.
– Como añadir a las RPC’s el paradigma de la P.O.O.
• Herencia
• Poliformismo
• ...
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
5
¿Qué es Corba?

Corba se puede implementar en multitud de lenguajes:
–
–
–
–

Java
C++
Eiffel
...
Es necesario que exista una versión de Corba para la
plataforma donde se quiere implementar
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
6
¿Qué es Corba?

Estructura parecida a las RPC’s:
– Fragmento IDL -> Stub Cliente
– Esqueleto IDL -> Stub Servidor
– ORB -> “Port-Mapper” + Marshall/Unmarshall, ...
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
7
¿Qué ofrece Java para aplicaciones Cliente/Servidor?

Java Sockets
– ...

RMI
–
–
–
–
Remote Method Invocation
Solución que aporta Sun (Java) para la P.O.O. Distribuidos
Incorpora un Garbage Collector Distribuido
Cualquier plataforma para la que haya disponible una JVM puede
implementar RMI
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
8
¿Qué ofrece Java para aplicaciones Cliente/Servidor?

Estructura similar a Corba:
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
9
Corba us Java Sockets

Sockets:
– Requieren del conocimiento por parte del cliente de la máquina y
puerto donde está el servidor.
– La comunicación cliente/servidor debe implementar un protocolo
tratado en tiempo de programación
– Para un servicio concreto, la comunicación es n clientes a 1
servidor (Sobrecarga del servidor)
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
10
Corba us Java Sockets

CORBA:
– La localidad de los servicios es transparente al programador, solo
hay que conocer el nombre que se ha dado al servicio para poder
llamarlo
– No hace falta protocolo. Se emplean llamadas a métodos de
objetos
– Si n clientes solicitan un mismo servicio, se pueden hospedar n
servidores en n máquinas. Balanceo de carga.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
11
Corba us RMI
Basados en la misma idea
 RMI:

– Solo se puede usar con aplicaciones 100% Java
– Hace falta conocer el nombre del servicio y la máquina que lo
hospeda
– Al estar implementado sobre la JVM, es lento
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
12
CORBA us RMI

CORBA
– Se puede implementar en muchos lenguajes, incluso
combinaciones de ellos.
– Basta con conocer el nombre del servicio. La localidad es
transparente.
– Es más rápido que RMI.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
13
RMI + JINI
JINI es otro entorno para Java que complementa a RMI
 Es como un servidor de nombres para objetos Java
 Con JINI, RMI adquiere la transparencia de localidad. Ya no
hace falta conocer el nombre de la máquina donde está el
servicio. Se lo podemos preguntar a JINI.

CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
14
¿Qué le falta a Corba y a RMI?
Hace falta separar el código cliente del código servidor. A
veces es difícil diferenciarlos.
 No aportan un espacio de memoria compartida distribuida.
No se puden distribuir Threads.
 Sobrecarga de trabajo en tiempo de implementación para el
programador.

– Publicar los servicios
– Adquirir los servicios

Necesita de herramientas especiales
– Compiladores, etc...
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
15
¿Qué nos depara el futuro?

Por ejemplo:
– Para Java:
• cJVM: JVM modificada para poder trabajar con threads distribuidos
(espacio de direcciones distribuido, ...)
• JavaParty: Proceso de precompilación para convertir una aplicación 100%
Java Puro en una aplicación distribuida bajo RMI. Proporciona también la
posibilidad de distribuir Threads -> Espacio de direcciones distribuido.
Solo son proyectos de investigación en una fase demasiado
atrasada como para poder aplicarse comercialmente.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
16
Bibliografía
http://java.sun.com
 http://www.omg.org
 http://wwwipd.ira.uka.de/JavaParty
 cJVM
 Internet, ...

CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
17