sábado, 4 de julho de 2009

Adobe AIR e Java: Comunicação via Socket

Há um tempo atrás, comecei uma busca por uma forma de desenvolver uma aplicação desktop que me permitisse reaproveitar meus conhecimentos no desenvolvimento de aplicações web. Foi aí que me deparei com o Adobe AIR, alvo do exemplo deste post, onde vou deixar para fazer um post mais introdutório depois.

Neste post, estarei abordando o desenvolvimento de uma simples aplicação front-end em Adobe Air Java Script/HTML que integrará com um código Java, através de Socket.

A utilização de Socket com Adobe AIR é bem recomendado quando você precisar integrar suas aplicações Adobe AIR com linguagens, até o momento, não suportada diretamente pelo Adobe AIR.

Por se tratar de uma aplicação para demonstrar os conceitos básicos do desenvolvimento Adobe AIR JS/HTML, iremos partir de algo bem simples.

A aplicação front-end terá apenas um campo texto de entrada e um botão de ação (Veja o código abaixo).

Repare que todo o código é escrito em HTML e Java Script, apenas.


Nota: Como podemos ver, importei uma biblioteca Java Script: AIRAliases.js. Esta biblioteca visa simplificar o desenvolvimento AIR atribuindo "aliases" mais simples para referenciarmos os objetos da AIR API. Por exemplo, ao invés de digitar:

var desktop = window.runtime.flash.filesystem.File.desktopDirectory;

Você digitará apenas:

var desktop = air.File.desktopDirectory;

Para trabalhar com Socket no Adobe AIR, utilizaremos a classe Socket na própria AIR API.

Para o envio e recebimento de mensagens com o Socket AIR, precisamos registrar dois eventos: air.Event.CONNECT e air.ProgressEvent.SOCKET_DATA, respectivamente.

O evento air.Event.CONNECT nos informa quando a conexão com o servidor Socket é iniciada e possível. E quando isto acontecer, a engine AIR irá acionar a função onSocketConnectionOpen, definida no Java Script.

O evento air.ProgressEvent.SOCKET_DATA, nos informa quando um dado é retornado pelo servidor Socket.

Neste exemplo, a engine AIR irá acionar a função onSocketDataReceiver.

No código abaixo, temos um exemplo da classe Java que desempenhará o papel de um servidor Socket, que escutará as solicitações na porta 9999.


Por fim, segue abaixo o descritor da nossa aplicação de exemplo.


Dica: Para simplicar a execução das aplicações Adobe AIR via prompt-console, acrescente o diretório ...\AdobeAIRSDK\bin na variável de ambiente PATH do seus sistema operacional.

Para executar a aplicação, entre com o seguinte comando:

> adl AirSocketClient-app.xml

Agora, execute a classe que representa o servidor Socket. Neste exemplo, eu estou usando o Eclipse.

Na interface da aplicação Adobe AIR, entre com qualquer texto e logo após clique no botão Enviar.
Após isso, no console Java, você irá ver seu texto impresso pela classe Java (servidor Socket).

Espero ter consigo passar um pouco a idéia. Em breve voltarei com mais novidades sobre o Adobe AIR.