Esta plataforma foi lançada em 1996 como resultado de trabalhos desenvolvidos nos laboratórios da IBM do Japão. Os objetos móveis do Aglets podem visitar diferentes locais em uma rede de computadores. Uma vez executando em um computador, um Aglet pode parar sua execução repentinamente, ser despachado para um outro computador e retomar sua execução neste novo computador, pois o Aglet leva consigo seu código e seu estado. Os Aglets são executados dentro de um contexto-aglet; este é o espaço de trabalho dos Aglets e tem como responsabilidade gerenciar os agentes em execução. Recentemente a IBM disponibilizou o código fonte do sistema sob licença pública na página do Aglets, aprovada como uma iniciativa de código aberto.
O ambiente Aglets necessita de uma máquina virtual Java para rodar e para o desenvolvimento de agente também é necessário um kit de desenvolvimento Java:
http://java.sun.com/javase/downloads/index_jdk5.jspApós instalação, a pasta bin do JDK deve ser incluída no PATH do sistema operacional e o desenvolvimento dos agentes pode ser feito em qualquer editor.
1. Vá em Painel de Controle do Windows. 2. Acesse o ícone do Sistema. 3. Acesse a aba "Avançado". 4. Clique no botão Variáveis de ambiente. 5. Clique no botão Nova e acrescente: Nome: CLASSPATH Valor: .;JAVA_HOME 6. Clique no botão Nova e acrescente: Nome: JAVA_HOME Valor: C:\jdk1.5.0\ 7. Clique no botão Nova e acrescente: Nome: PATH Valor: %PATH%;C:\jdk1.5.0\bin; 8. Clique em OK e feche.
O próximo passo é ir na página do Aglets e fazer download dos arquivos para instalação, fontes e manual do usuário:
Descompactar o arquivo aglets-2.0.2.jar no diretório "c:\aglets" no caso do Windows ou no diretório "/home/meu_usuario/aglets/" no caso do linux. Neste ponto, será criada uma estrutura de arquivos e diretórios da seguinte forma:
bin | -> Scripts de instalação e execução |
cnf | -> Arquivos de configuração |
lib | -> Bibliotecas |
META-INF | . |
public | -> Onde irão ser armazenados os agentes desenvolvidos |
INSTALL.html | . |
LICENSE.html | . |
Pelo prompt de comando:
Para permitir que os agentes acessem arquivos e executem outras operações que não seriam permitidas normalmente, edite o arquivo cnf/aglets.props e descomente a linha:
aglets.secure=false
No windows, copie o arquivo .keystore para o diretório do usuário:
C:\aglets\bin>copy .keystore "\Documents and Settings\meu_usuario"
Novamente pelo prompt de comando:
Os agentes no Aglets são criados estendendo-se a classe Aglet. Alguns métodos dessa classe, que podem ser sobrescritos, são invocados pelo ambiente para indicar eventos.
void onCreation(Object init) void run() void onDisposing() boolean handleMessage(Message message)
Este método é chamado logo após o agente ter sido criado e o parâmetro init contém um possível argumento passado ao agente na hora da criação, ou null
Este método é chamado quando um agente é:
Este método é chamado quando o agente estiver prestes a ser destruído, devido a uma chamada ao método dispose.
Este método é chamado sempre que uma mensagem chega ao agente e seu parâmetro é um atributo kind que identifica o tipo da mensagem.
O método deve retornar false caso a mensagem recebida não seja suportada. Neste caso uma exceção ocorrerá em quem mandou a mensagem.
javac -cp aglets-2.0.2.jar MeuAgente.java
Observe que neste caso, o arquivo aglets-2.0.2.jar deve estar no mesmo diretório do arquivo MeuAgente.java
Os agentes podem ser criados pela interface gráfica Tahiti, via console ou via programação. Para criá-los pelo Tahiti, basta informar a classe (incluindo o nome do package). A opção "Add to List" adiciona o agente à lista de favoritos.
Para criar os agentes via console:
Para criar agente via programação, deve-se fazer da seguinte forma:
AgletProxy proxy = null; AgletContext context = getAgletContext(); try { proxy = context.createAglet(null, "pacote.MeuAgente",); } catch (Exception e) { e.printStackTrace(); }
É através de proxies que se interage com agentes. A classe AgletProxy oferece (entre outros) os seguintes métodos:
Object sendMessage(Message msg) //Envia uma mensagem, e espera void dispose() //Destrói o agente AgletProxy dispatch(URL address) //Manda o agente para o endereço passado como parâmetro
Para fazer com que um agente possa enviar mensagens a outro é preciso primeiramente obter o proxy dele.
Na hora da criação do agente, o proxy já é retornado, o que fica fácil reconhecer o agente. Porém, quando os agentes não tem uma relação de “parentesco”, pode-se guardar o proxy do agente no AgletContext, associando-o a uma String.
AgletContext context = getAgletContext(); context.setProperty("XPT0", getProxy());
Dessa forma, outros agentes podem recuperar este proxy apenas lendo a propriedade do AgletContext.
AgletContext context = getAgletContext(); AgletProxy p = (AgletProxy) context.getProperty("XPT0");
Para exemplificar a comunicação entre agentes, baixe, compile e execute o arquivo MinhaAplicacao.java. Lembrando que ambos devem estar rodando no ambiente do Aglets.
javac -cp aglets-2.0.2.jar MinhaAplicacao.java
[voltar]