[ Flerry ] Adobe AIR 2 conversando com Java local em AMF via NativeProcess

quarta-feira, 21/07/2010 2:40 am  

Flerry


Para minha sorte, quem sabe para sua também, garimpando os resultados das buscas no Google encontrei um projeto chamado de Flerry [ site projeto ] o que se propõe a nos possibilitar utilizar uma aplicação em Java sendo chamada pelo NativeProcess no Adobe AIR 2.

Este projeto foi criado por: Piotr Walczyszyn, polonês, funcionário da Adobe e evangelista da plataforma. [ Site: RiaSpace | twitter: @pwalczyszyn ]


Vamos a uma visão geral :

Agora uma visão mais detalhada de como fica a estrutura da aplicação:

Onde o Flerry API [ Flerry.jar], utiliza as libs do BlazeDS para efetuar a serialização e deserialização dos objetos, segue o nome das libs do BlazeDS utilizadas:

- flex-messaging-core.jar

- flex-messaging-common.jar

O restante o fluxo e funcionamento é exatamente similar ao que temos quando utilizamos o BlazeDS no Java, com uma diferença, não há a necessidade de nenhuma configuração na aplicação Java para mapear a classe do serviço, isto é feito diretamente no MXML.

Na página inicial do projeto Flerry, possui exemplo de código de como funciona. Observe a tag, fx:Declarations. A estrutura segue a idéia da tag RemoteObject.


Mas como bem sabemos nem tudo são flores nessa vida…

O projeto está na versão 1.1.1 e caso você baixe diretamente lá do site do projeto como eu fiz, irá observar que o código do projeto está um tanto confuso, mesclado o Java com o código AIR.

Então resolvi arrumar a casa e acertar o projeto, facilitando o uso e estudo do código… e neste processo me deparei com um bug de uma funcionalidade descrita neste post a qual é a mesma idéia do poolling que temos no BlazeDS. Mas não se preocupe com o bug, pois já achei a correção e no código que segue já está corrigido.


Download:

- flerry 1.1.1

- código fonte e a aplicação de exemplo de uso

- este já está organizado e separado em projetos, caso tenha curiosidade baixe o projeto do site oficial e compare

- correção do bug da funcionalidade similar ao poolling do BlazeDS

- a lib para uso no Adobe AIR foi adicionado o namespace, algo que não tem no oficial ainda

- flerry 1.1.1 libs

para facilitar sua vida e a minha, quando for criar um novo projeto, deixei separado as libs para serem utilizadas em um novo projeto Adobe AIR que irá se comunicar com java.


Atenção: (editado 20100722 1040)

- A respectiva versão disponibilizada neste post é uma versão adaptada e atualizada do projeto Flerry, onde os projetos estão unidos, neste caso separei os projetos para uma melhor manutenção e entendimento do código.

- Alteração da classe original: JavaStartupInfoProvider da Lib Flex, para localizar o Java no Windows, onde segundo o verificado, o Java a partir da versão 1.6 alterou a sua respectiva instalação no Windows, incluindo os arquivos: [ java.exe / javaw.exe / javaws.exe ] no diretório: c:/windows/system32, com isto não há mais a necessidade de configurar a variável de ambiente JAVA_HOME no Windows. Isto explica o motivo do comando java -version executar na janela de comando do windows [cmd.exe]. Então alterei a classe citada, apontando para o arquivo: c:/windows/system32/javaw.exe


Possível problema conhecido na versão atual:

Caso você for executar sua aplicação Adobe AIR + Flerry em um Windows Vista e/ou XP em Português, provável que a lib não localize o local onde está o executável do java.


O que tenho em mente para fazer ainda quando ao código desse projeto?

- Revisar o algoritmo de localização do executável java

- Adicionar a possibilidade de repassar para a lib o JAVA_HOME

- Criar um novo componente avançado para possibilitar mais configurações do processo java

- Implementar um algoritmo mais inteligente de load dos jars


Bom por enquanto é isso. o/

Página: 1 2

, , , , , ,

Este post foi escrito por:

- que escreveu 499 post(s).


Entre em contato