Projeto da Disciplina MO809

TEMA: Uma Plataforma de Transaçães com Controle de Concorrência Aberto

Sumário

 

Descrição do Projeto

Ver esboço aqui

Obs: Instalar o OpenCOM a partir da versão disponível nesta página.

Voltar ao Sumário

Ferramentas Utilizadas

Linguagem de programação Java na plataforma J2SE [8]

A linguagem Java na plataforma J2SE foi adotada neste projeto por razões dentre as quais estão: (i) ser independente de sistema operacional permitindo, por exemplo, a execução de um mesmo programa em plataformas Linux e Windows; (ii) oferecer um grande conjunto de bibliotecas de alto nível que facilita o processo de desenvolvimento de programas; (iii) oferecer uma documentação detalhada do seu conjunto de bibliotecas; (iv) abundância de livros, apostilas e tutoriais disponíveis, inclusive, na internet.

Dentre o material disponível para estudo da linguagem Java está um tutorial [2] disponibilizado pela Sun e o livro distribuído pela internet  Thinking in Java [1]. A documentação das bibliotecas providas pela plataforma J2SE pode ser encontrada em [9].

Modelo de componentes OpenCOM(Java)

O OpenCOM é um modelo de componentes aberto que foi projetado para dar apoio à reflexão - capacidade que um sistema pode ter de conhecer a sua própria representação, o que lhe permite alterar sua própria estrutura e/ou comportamento. A partir do uso deste modelo de componentes, pode-se implementar sistemas com uma maior capacidade de configuração/reconfiguração. O OpenCOM, apesar de ser um modelo recente, tem sido usado em diversos projetos da chamada nova geração de middlewares - configuráveis em tempo de projeto e reconfiguráveis em tempo de execução. Dentre estes projetos está o OpenORB [10] [11] e o ReMMoC [12] [13].

Apesar de ter sido inicialmente implementado para linguagem de programação C++, já existe uma versão OpenCOM disponível para a linguagem Java. Algumas das vantagens de se usar a versão Java do OpenCOM estão descritas em [7]. Uma visão geral do OpenCOM pode ser encontrada em [6]. Descrições mais detalhadas do OpenCOM podem ser encontradas em [15] [4] [5].

As transparências da aula sobre OpenCOM(Java) ministrada na disciplina MO809 podem ser encontradas em [16]. O pacote com sete exemplos do uso do OpenCOM(Java) indicados nessas transparências pode ser baixado aqui.

Interpretador de scripts Apache Ant

O Ant é uma ferramenta baseada em Java que pode ser usada para automatizar, dentre outras tarefas, o processo de compilação, organização e execução de sistemas escritos em Java. Além destas características, uma das vantagens do uso dessa ferramenta é que os scripts são escritos em XML tornando-se, assim como sistemas em Java, portáveis entre diversas plataformas. 

Inclusive, o processo de compilação e execução de exemplos do modelo de componentes OpenCOM(Java) foram disponibilizados pelos seus desenvolvedores  como scripts XML prontos para ser interpretados pelo Ant.

Manuais de uso da ferramenta Apache Ant podem ser encontrados em [3] [14].

Voltar ao Sumário

Configuração do Ambiente

Ambiente Linux

a. Instalação do J2SE Development Kit

 
a1. Baixe a última versão do J2SE Development Kit para Linux ( J2SE for Linux)

a2. Siga as instruções de instalação do J2SE no Linux ( Instalação do J2SE)
 
b. Instalação do Apache Ant
 
b1. Baixe a última versão da ferramenta Apache Ant (Apache Ant)

b2. Instale o Apache Ant (basta descompactá-lo)

Exemplo:
% unzip -d /usr/local/ apache-ant-1.6.5-bin.zip
 
c. Instalação do OpenCOMJ
 
c1. Baixe a última versão do OpenCOM(Java) ( OpenCOM for Java)
Obs: A versão 1.3.1 do OpenCOM(Java) possui um erro na classe que define um receptáculo múltiplo com contexto. Segundo os desenvolvedores, a correção deste erro será disponibilizado na próxima versão do OpenCOM(Java). Uma versão temporária "não oficial" do OpenCOM onde este erro já foi corrigido pode ser baixado em OpenCOMJ131b.  
c2. Instale o OpenCOMJ (basta descompactá-lo)
 
Exemplo:
% unzip -d /usr/local/ OpenCOMJ.zip
 
d. Configuração das Variáveis de Ambiente
 
d1. Assuma que:
  1. o diretório base do J2SE é  /usr/local/jdk1.5.0_06
  2. o diretório base do Ant é /usr/local/apache-ant-1.6.5 
  3. o diretório base do OpenCOMJ é /usr/local/OpenCOMJ

d2. Crie as variáveis de ambiente como a seguir:

# Variaveis do Ant:
export ANT_HOME=/usr/local/apache-ant-1.6.5
export JAVA_HOME=/usr/local/jdk1.5.0_06
export PATH=${PATH}:${JAVA_HOME}/bin:${ANT_HOME}/bin
 
# Variaveis do OpenCOM
export JRE=${JAVA_HOME}
export OpenCOM=/usr/local/OpenCOMJ
 

Dica: Para que estas variáveis sejam automaticamente reconfiguradas toda vez que o login do usuário for realizado, edite o arquivo oculto ~/.bashrc no seu ambiente de usuário e acrescente os comandos export listados acima. (Depois de realizada esta alteração, uma maneira de torná-la ativa é efetuar um novo login no Linux).

 

e. Checagem das Ferramentas Instaladas
 
e1. Verifique se a versão do J2SE corresponde à versão instalada
 
Exemplo:
% java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)

e2. Verifique se a versão do Ant corresponde à versão instalada

Exemplo:
% ant -version
Apache Ant version 1.6.5 compiled on June 2 2005

Se versão não for a mesma, provavelmente já existe uma versão anterior do Ant instalada. Uma possível solução é renomear o diretório do antigo ant (possivelmente /usr/share/ant) e criar um alias para o novo ant. Um alias pode ser criado adicionando-se "alias ant=/usr/local/apache-ant-1.6.5/bin/ant" ao arquivo ~/.bashrc no ambiente do usuário

e3.Dispare o processo de compilação do OpenCOMJ usando o Ant

A partir do diretório do OpenCOMJ (ex: /usr/local/OpenCOMJ), execute o Ant. O ant usará o arquivo de script build.xml contido neste diretório para realizar o processo de compilação do OpenCOMJ.

Exemplo:
% ant
Buildfile: build.xml
 
compile:
    [javac] Compiling 30 source files to /usr/local/bin/OpenCOMJ/classes

...

BUILD SUCCESSFUL
Total time: 4 seconds

Se esta operação não tiver sido realizada com sucesso, verifique:

i.  se as variáveis de ambiente foram criadas corretamente;
ii. se a versão do ant usada realmente é a mesma que acabou de ser instalada;
iii.se os passos da instalação foram executados corretamente;

 

f. Execução dos Testes Disponíveis no OpenCOMJ

f1. Adicione à variável de ambiente CLASSPATH o diretório das classes geradas pelo processo de compilação do OpenCOMJ. Estas classes ficam em ~/OpenCOMJ/classes/

Exemplo:
% export CLASSPATH=$CLASSPATH:/usr/local/OpenCOMJ/classes/

f2. A partir do diretório base OpenCOMJ, execute os seguintes testes demonstrativos disponibilizados pelo OpenCOMJ:

% ant demo
% ant visualdemo
% ant frameworkdemo
% ant visualframeworkdemo
% ant contractdemo
% ant sequentialreceptacledemo
% ant parallelreceptacledemo
% ant contextreceptacledemo

Ao executar estes comandos, o Ant  usa o build.xml disponível em ~/OpenCOMJ/ para executar automaticamente os programas demonstrativos implementados usando o modelo de componentes OpenCOM. O código fonte destes programas está em subdiretórios do diretório ~/OpenCOMJ/

Se os testes não forem realizados com sucesso, certifique-se que a variável de ambiente CLASSPATH está realmente  apontando para ~/OpenCOMJ/classes

Voltar ao Sumário

Ambiente Windows

a. Instalação do J2SE Development Kit
 
a1. Baixe a última versão do J2SE Development Kit para Windows ( J2SE for Windows)

a2. Siga as instruções de instalação do J2SE no Windows ( Instalação do J2SE)
 
b. Instalação do Apache Ant
 
b1. Baixe a última versão da ferramenta Apache Ant (Apache Ant)

b2. Instale o Apache Ant (basta descompactá-lo)

 
c. Instalação do OpenCOMJ
 
c1. Baixe a última versão do OpenCOM(Java) ( OpenCOM for Java)
Obs: A versão 1.3.1 do OpenCOM(Java) possui um erro na classe que define um receptáculo múltiplo com contexto. Segundo os desenvolvedores, a correção deste erro será disponibilizado na próxima versão do OpenCOM(Java). Uma versão temporária "não oficial" do OpenCOM onde este erro já foi corrigido pode ser baixado em OpenCOMJ131b.  
c2. Instale o OpenCOMJ (basta descompactá-lo)
 
d. Configuração das Variáveis de Ambiente
 
d1. Assuma que:
  1. o diretório base do J2SE é  c:\tools\jdk1.5.0_06
  2. o diretório base do Ant é c:\tools\apache-ant-1.6.5 
  3. o diretório base do OpenCOMJ é c:\tools\OpenCOMJ

d2. Crie as variáveis de ambiente como a seguir:

# Variaveis do Ant:
set ANT_HOME=
c:\tools\apache-ant-1.6.5 
set JAVA_HOME=c:\tools\jdk1.5.0_06
set PATH=%PATH%;%JAVA_HOME%\bin;%ANT_HOME%\bin
 
# Variaveis do OpenCOM
set JRE=%JAVA_HOME%
set OpenCOM=c:\tools\OpenCOMJ
 

Dica: Para que estas variáveis sejam automaticamente configuradas, coloque-as no gerenciador de variáveis de ambiente do Windows. Para isso acesse o Painel de Controle > Sistema > Avançado > Variáveis de Ambiente e crie as variáveis de ambiente listadas acima.

 

e. Checagem das Ferramentas Instaladas
 
e1. Verifique se o java está acessível a partir da linha de comando
 
Exemplo:
C:\> java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)

e2. Verifique se o ant está acessível a partir da linha de comando

Exemplo:
% ant -version
Apache Ant version 1.6.5 compiled on June 2 2005

e3.Dispare o processo de compilação do OpenCOMJ usando o Ant

A partir do diretório do OpenCOMJ (ex: c:\tools\OpenCOMJ), execute o Ant. O ant usará o arquivo de script build.xml contido neste diretório para realizar o processo de compilação do OpenCOMJ.

Exemplo:
c:\tools\OpenCOMJ\> ant
Buildfile: build.xml
 
compile:
    [javac] Compiling 30 source files to /usr/local/bin/OpenCOMJ/classes

...
BUILD SUCCESSFUL
Total time: 4 seconds

Se esta operação não tiver sido realizada com sucesso, verifique:

i.  se as variáveis de ambiente foram criadas corretamente;
ii. se a versão do ant usada realmente é a mesma que acabou de ser instalada;
iii.se os passos da instalação foram executados corretamente;

 
f. Execução dos Testes Disponíveis no OpenCOMJ

f1. Adicione à variável de ambiente CLASSPATH o diretório das classes geradas pelo processo de compilação do OpenCOMJ. Estas classes ficam em ~\OpenCOMJ\classes\

Exemplo:
% set CLASSPATH=%CLASSPATH%;c:\tools\OpenCOMJ\classes\

f2. A partir do diretório base OpenCOMJ, execute os seguintes testes demonstrativos disponibilizados pelo OpenCOMJ:

c:\tools\OpenCOMJ> ant demo
c:\tools\OpenCOMJ> ant visualdemo
c:\tools\OpenCOMJ> ant frameworkdemo
c:\tools\OpenCOMJ> ant visualframeworkdemo
c:\tools\OpenCOMJ> ant contractdemo
c:\tools\OpenCOMJ> ant sequentialreceptacledemo
c:\tools\OpenCOMJ> ant parallelreceptacledemo
c:\tools\OpenCOMJ> ant contextreceptacledemo

Ao executar estes comandos, o Ant  usa o build.xml disponível em ~\OpenCOMJ\ para executar automaticamente os programas demonstrativos implementados usando o modelo de componentes OpenCOM. O código fonte destes programas está em subdiretórios do diretório ~\OpenCOMJ\

Se os testes não forem realizados com sucesso, certifique-se que a variável de ambiente CLASSPATH está realmente  apontando para ~\OpenCOMJ\classes\

Voltar ao Sumário

Bibliografia

[1]  Eckel, B. "Thinking in Java", Third Edition, 2002.

[2]  Sun Microsystems, "The Java Tutorial - A practical guide for programmers", 2006.

[3]  Apache Software Foundation, "Apache Ant Manual", 2006.

[4]  Clarke, M., Coulson, G., Blair, G. and Parlavantzas., N. "An Efficient Component Model for the Construction of Adaptive Middleware", Middleware 2001.

[5]  Clarke, M., Parlavantzas., N., Coulson, G., and Blair, G. "The original OpenCOM API specification", Lancaster University, 2001.

[6]  Grace, P.  "Overview of OpenCOM", Lancaster University.

[7]  Next Generation Middleware Group. "OpenCOM: Java versus C++". Technical Report.

[8]  Sun Microsystems, "Java 2 Platform, Standard Edition (J2SE)", http://java.sun.com/j2se/, 2006.

[9]  Sun Microsystems, "J2SE Documentation", http://java.sun.com/docs/index.html, 2006.

[10]  Blair G. S., Coulson, G., et al. “The Design and Implementation of OpenORB Version 2”, In IEEE Distributed Journal, Vol 2, No. 6, 2001.

[11]  Blair, G. S., Coulson, G., Blair, L., Duran-Limon, H., Grace, P., Moreira, R., and Parlavantzas, N. “Reflection, self-awareness and self-healing in OpenORB”, In Proceedings of the First Workshop on Self-Healing Systems, ACM Press, Charleston, South Carolina, November, 2002.

[12] Grace, P., Blair, G.S., Samuel, S., “ReMMoC: A Reflective Middleware to Support Mobile Client Interoperability”, Proc. International Symposium of Distributed Objects and Applications (DOA'03), Catania, Italy, November 2003.

[13] Grace, P., Blair, G. S., and Samuel, S. “A reflective framework for discovery and interaction in heterogeneous mobile environments”, SIGMOBILE Mob. Comput. Commun. Rev. 9, 1, Jan, 2005.

[14]  Mills, A. "Ant Tutorial", 2005.

[15]  Coulson, G., Blair, G.S., Grace, P., Joolia, A., Lee, K., Ueyama, J., "OpenCOM v2: A Component Model for Building Systems Software", Proceedings of IASTED Software Engineering and Applications (SEA'04), Cambridge, MA, ESA, Nov 2004.

[16]  Rocha, T. "O Modelo de Componentes OpenCOM (Java)", Aula ministrada na disciplina MO908 - Instituto de Computação - UNICAMP , Brasil, Abril 2006.

 

Voltar ao Sumário

Dúvidas, Erros e Sugestões

Favor entrar em contato com Tarcisio

Voltar ao Sumário

 

Last modified: Apr 24 2006 by Tarcisio da Rocha