• Nenhum resultado encontrado

Estudo Comparativo de Comunicação em Aplicações Java 3D

N/A
N/A
Protected

Academic year: 2021

Share "Estudo Comparativo de Comunicação em Aplicações Java 3D"

Copied!
6
0
0

Texto

(1)

Estudo Comparativo de Comunicação em Aplicações Java 3D

Marcelo de Paiva Guimarães 1 Marcelo K. Zuffo {paiva@lsi.usp.br} {mkzuffo@lsi.usp.br}

Av. Prof. Luciano Gualberto, 158 – Travessa 3 – Butantã CEP: 05508-900 – São Paulo – SP – Brazil

Laboratory of Integrated Systems – Polytechnic School – USP Tel: (+55 11) 3818-5254 – Fax: (+55 11) 3818-5665 Resumo

Este trabalho faz o estudo das opções de comunicações de rede oferecidas pela linguagem Java. Para isto, implementou-se um protótipo baseado no pacote SUN, outro utilizando o pacote Sockets e outro usando a Chamada Remota de Métodos. Este estudo formou uma base comparativa para a escolha do método de comunicação para o desenvolvimento de aplicações Java 3D .

Palavras chaves: Java 3D, Java, Sockets, RMI, Comunicação. Abstract:

This work makes the study of options offered by the Java language to network communications. It implemented a prototype that uses the SUN package, a that uses the Sockets package and another that uses the RMI (Remote Method Invocation) package. The study formed a comparative basis to choose the communication method to implement Java 3D application.

Keyword: Java 3D, Java, Socket, RMI, Communication. 1. Introdução

Para criar mundos virtuais em três dimensões com linguagens de programação, precisamos de um conjunto de rotinas que permitem a comunicação da aplicação com os dispositivos gráficos. Esse conjunto de rotinas está agrupado em pacotes como o Java 3D API (Application Program Interface) [BRU98, FER00].

Esta API é baseada em grafo de cena e na linguagem Java, que permite a criação de objetos e animações 3D interativos (ou não). Ela permite que uma aplicação seja executada em qualquer micro que possua o JDK (Java Development Kit) e a API [LAL97].

Dentre os diversos fins que esta API foi projetada, o desempenho foi um dos principais enfoques. Muitas decisões de projeto foram tomadas para que as implementações pudessem render o máximo aos usuários de aplicações. Em particular, na escolha de soluções de projeto, adotou-se a alternativa que beneficiava a execução em runtime. Algumas das finalidades importantes do pacote Java 3D são:

• Fornecer um conjunto de meios para a criação de mundos 3D, levando em conta a necessidade de se evitarem meios não essenciais ou não muito claros.

• Estabelecer um paradigma de programação orientada a objeto de nível alto que possibilite aos programadores o desenvolvimento rápido de aplicações e de

applets sofisticadas.

Dar suporte aos carregadores em runtime. Isto faz com que Java 3D possa acomodar uma grande variedade de formatos de arquivo, como formatos CAD específicos de fabricante, formatos de intercâmbio, VRML.

1

(2)

Entretanto, o sucesso dos mundos virtuais construídos utilizando Java 3D não depende apenas deste pacote, depende também dos pacotes que permitem a troca de dados entre as aplicações. Por isso, este trabalho visa analisar os meios de comunicações utilizados pelas aplicações Java. O principal enfoque será dado à latência de comunicação, que ocorre quando uma aplicação transmite um evento para outra aplicação, por intermédio de uma aplicação servidora. Esta transmissão de evento é realizada para manter o mundo virtual sincronizado.

A Figura 1 apresenta este processo de sincronização, nele o Cliente 1 executa o evento recebido do usuário, por exemplo, o método Gira(), que transfere o evento para o Servidor, o qual transmite o evento para a aplicação Cliente 2, utilizando o método Atualiza(). Desta maneira, o evento que foi executado no Cliente 1 também é executado no Cliente 2. Este método de sincronização não é suficiente para implementação de uma aplicação real, pois não garante que todos os clientes receberam a mensagem, entretanto, é suficiente para testar o desempenho dos meios de comunicação, que são o enfoque deste trabalho.

Figura 1 – Sincronização das aplicações

Neste contexto, este trabalho efetuou o estudo das tecnologias de comunicação disponíveis para a linguagem Java. Então, criou-se a mesma aplicação Java 3D utilizando diferentes tecnologias e realizou-se um estudo da transmissão de mensagens. As tecnologias testadas foram o pacote de rede da SUN, o pacote Sockets e o pacote RMI (Remote Method Invocation). Ao final do trabalho, são apresentados os resultados dos testes, comparando-se os aspectos representativos em seus desempenhos.

2. A aplicação Java 3D

A necessidade de obter um ambiente para a análise dos meios de comunicação, motivou o desenvolvimento de uma aplicação simples Java 3D. Esta aplicação é formada pela aplicação Servidora e pela aplicação Cliente.

A aplicação Servidora tem como objetivo receber as mensagens das aplicações Clientes e retransmiti-las para as outras aplicações Clie ntes, desta forma, ocorre à sincronização dos mundos virtuais. Independente do modelo de comunicação usado no protótipo, sempre foi mantida uma interface semelhante nas aplicações Servidora, mostrando apenas mensagens que indicam a conexão dos usuários.

A Figura 2 mostra a interface da aplicação Servidora que foi implementada utilizando a tecnologia de Sockets :

Cliente 1

Gira( )

Atualiza( )

(3)

Figura 2 – Interface do Servidor

Na forma de aplicação Java, as aplicações Clientes são executadas pelo interpretador Java. A interface é constituída por um cubo e por um botão.

Sempre que o botão na interface é acionado, um evento é criado. Este evento executa o método Gira(). Este método faz com que o cubo gire, e além disto, transmite o evento de acionamento do botão para a Aplicação Servidora, para que seja retransmitido para as outras aplicações Clientes.

A interface da aplicação Cliente é apresentada na Figura 3:

Figura 3 – Interface da aplicação Cliente 3. Os protótipos

Todos os protótipos implementados possuem a facilidade de retornar o tempo de envio e recebimento do evento para o acionamento que gira o cubo, ou seja, a latência do evento.

Devido às diferenças entre os modelos de comunicação usados nos protótipos, cabe ressaltar os pacotes utilizados em cada um deles.

•• Protótipo 1 : RMI

O primeiro protótipo foi construído utilizando o pacote para computação distribuída da linguagem Java, a Chamada Remota de Métodos (RMI-Remote Method Invocation), que é um conjunto de classes e interfaces que encapsula vários mecanismos de trocas de dados, simplificando a execução de chamadas a métodos remotamente localizados em espaços de endereçamentos diferentes. Incorporado à linguagem Java em sua versão 1.1, o RMI foi desenvolvido visando trazer para a linguagem Java os conceitos e facilidades encontrados no mecanismo amplamente difundido em sistemas distribuídos, a chamada remota de procedimento (RPC), somado com a utilização da orientação a objetos.

(4)

•• Protótipo 2: Socket

A comunicação entre as aplicações do segundo protótipo, baseou-se no pacote que implementa uma conexão bilateral entre um programa Java e um outro programa na rede, o java.net da linguagem Java, que fornece a classe Socket [GUI00, JAV99, ORF96].

A classe Socket fornece as facilidades necessárias para o estabelecimento de conexões na rede. Socket é um padrão adotado por uma grande variedade de ambientes de sistema operacional, incluindo MS-DOS, Windows, OS/2, UNIX, MAC OS e a maioria dos ambientes mainframe.

Esta forma de comunicação ocorre por intermédio de uma aplicação cliente e uma aplicação servidora. Normalmente, o servidor roda em um computador específico e tem um socket que é um limite para um número específico de porta. O servidor somente espera, escutando o socket para o cliente fazer a conexão requerida.

No lado do cliente, se a conexão é aceita, um socket é criado e o cliente o utiliza para se comunicar com o servidor.

•• Protótipo 3: SUN

Na terceira implementação, foi utilizado o pacote sun.*, apesar dele fazer parte do

Java 2 SDK, Standard Edition, a sua permanência não é garantida [FAQ00]. Além desta

desvantagem, este pacote pode mudar para cada plataforma (Solaris, Linux, Machintosh e outras) e pode mudar de uma versão para outra sem noticiar, fatos que não ocorrem com os outros pacotes padrões da linguagem Java. As aplicações que o utilizam, correm o risco de não serem portáveis e de não serem suportadas pelas versões futuras.

4. A latência de comunicação

Para a realização da análise da latência de comunicação, enviou-se 500 eventos em cada protótipo. Os três protótipos foram executados no mesmo horário em uma rede local (TCP/IP), com baixa carga computacional. As medidas foram obtidas executando duas aplicações clientes e uma aplicação servidora para cada protótipo. Utilizou-se PC Pentium || 450 MHz, 128MB para a execução dos experimentos.

A Figura 4 ilustra a latência média de comunicação obtida com os 500 eventos que foram enviados.

Figura 4 – Tempo de latência média de 500 mensagens. 0

50 100 150 200

SUN Socket RMI

Tecnologia

(5)

A Figura 5 mostra o desvio padrão obtido na transmissão dos 500 eventos. 30,9 31 31,1 31,2 31,3 31,4 31,5 31,6 31,7

SUN Socket RMI

Figura 5 – Desvio Padrão do tempo de latência de 500 mensagens. A Figura 6 mostra os piores tempos obtidos na transmissão 500 dos eventos.

Figura 6 – Piores tempos de latência de 500 mensagens.

Como pode ser observado, a menor latência foi obtida no protótipo que foi implementado utilizando o pacote Socket, tendo-se em segundo lugar o pacote RMI e, por último, o pacote SUN. Estes resultados já eram esperados, uma vez que:

A comunicação utilizando o pacote RMI, deve realizar o marshalling de parâmetro, que é um processo de codificação dos parâmetros em um formato apropriado para transportá-los através da rede;

• A comunicação utilizando o pacote Socket, é realizada por intermédio de uma conexão direta, ou seja, sem nenhum processo de empacotamento como é realizada pelas comunicações RMI; e

• A comunicação utilizando o pacote SUN, é realizada por intermédio de classes (Networkclient e NetworkServer), que usam a subclasses de sockets para a comunicação entre as aplicações clientes e aplicações servidores [MOR00].

5.Conclusões e perspectivas

Este trabalho apresentou os esforços realizados na avaliação dos meios de comunicação disponíveis na linguagem Java. Estes esforços culminaram com a implementação de três protótipos. 0 50 100 150 200 250

SUN Socket RMI

Tecnologia

(6)

O protótipo que usou os recursos de comunicação em rede de baixo nível, o Sockets, apresenta melhores resultados, pois envia mensagens de forma assíncrona para a aplicação remota, não bloqueando o emissor. Além disto, permite a instanciação explícita de threads (linhas de execução para multiprocessamento) individuais para o tratamento de cada instância cliente conectada a um servidor. A desvantagem desta forma de comunicação é a dificuldade de implementação.

O RMI trouxe ao protótipo os conceitos e facilidades encontradas no mecanismo amplamente difundido em sistemas distribuídos, a Chamada Remota de Procedimento, somado com a utilização da orientação a objetos, mas o desempenho comparando-se com sockets é menor.

O protótipo que utilizou o pacote SUN, reforçou a idéia que não é viável utilizar este pacote, pois além de oferecer um desempenho baixo, ocorre o risco de desaparecer das próximas versões da linguagem Java.

Assim, podemos concluir que a escolha do meio de comunicação para aplicações de realidade virtual deve ser planejada em detalhes. Caso contrário, o sucesso da aplicação poderá ser comprometido.

6.Referências Bibliográficas

[BRU98]BRUTZMAN, D. The Virtual Reality Modeling Language and Java.

Communications of the ACM, vol 41, nº6, June 1998,pp. 57- 64.

[FAQ00]FAQ- Sun Packages. Why Developers Should not Write Programs That Call ‘sun’ Packages. http://java.sun.com/products/jdk/faq/faq-sun-packages.html. Consultado em 11/01/2002.

[FER00]FERNANDES, T.C. Aspectos de Comunicação em uma Aplicação Distribuída de Realidade Virtual Utilizando Java e VRML. Workshop de Realidade Virtual 2000. Blumenau. SC. Outurbro de 2000.

[GUI00]GUIMARÃES, M. P. Projeto e Implementação de Suporte para Trabalho Cooperativo na Plataforma JAMP. Dissertação de Mestrado. Departamento de Pós-Graduação em Ciência da Computação. Universidade Federal de São Carlos. Janeiro.2000.

[JAV99]JAVA Plataforma 1.2 API Specification - Package java.rmi http://www.javasoft.com/docs/jdk1.2/docs/api/java/rmi. Consultado em 20/06/99.

[LAL97]LALANI, S. Java: biblioteca do programador. São Paulo. Makron Books.1997.

[MOR00]MORGAN, B. Object-Oriented Programming with Java. http://sunsite.iisc.ernet.in/collection/virlib/java/morgan/ch3.html. Consultado em 02/02/2002.

[ORF96]ORFALI,R. Cliente/Servidor: Guia essencial de sobrevivência. Rio de Janeiro. Infobook.1996.

Referências

Documentos relacionados

!  A percepção de uma situação moral é relativa, mas os valores morais envolvidos na situação são absolutos... Comportamentos

NOVO MINDSET, NOVOS VALORES, NOVA ESTÉTICA, NOVO PROTOCOLO, NOVOS MODELOS DE NEGÓCIOS, NOVAS POSSIBILIDADES.. ESTE

prioridade para as mulheres depois dos 40 anos (50 milhões). prioridade para as mulheres depois dos 40 anos

Assim, mesmo tendo à disposição no mercado agrotóxicos de alta tecnologia para controle químico de pragas que atingem suas lavouras, os produtores de hortaliças não

O diretor da Agência Nacional de Energia Elétrica (Aneel), Edvaldo Santana, disse ontem que o atual cenário de turbulências no setor elétrico “está caminhando para

O software AT-Report também ajuda os médicos para uma revisão mais rápida e precisa e uma interpretação com dados de apoio e resumo dos resultados dos diagnósticos centrais

Por isso, o objetivo desta comunicação foi mostrar que a inserção dos dois “caminhos para pensar” num contexto predicativo não só não é legitimada pelo texto, como

De fato, a aplicação das propriedades da regra variável aos estudos lingüísticos além da fonologia não constitui assunto tranqüilo, seja porque a variável passa a ser