mai 29
Digg
Stumbleupon
Technorati
Delicious

Artigo “Interfaces de qualidade com Flex” na Java Magazine

Java Magazine 68.

Já está nas bancas meu artigo sobre Java e Flex na revista Java Magazine!

O nome do artigo é Interfaces de qualidade com Adobe Flex. Ele é voltado para quem não conhece nada, ou está começando à aprender Flex e conhece um pouco de Java.

No artigo Faço uma analogia entre a Linguagem ActionScript 3.0 e Java 5, apresento algumas formas de consumir dados e também como fazer que um código feito para executar na Web com o Flash Player, possa ser executado no Desktop sem alterar uma linha de código funcional.

Estou por finalizar um próximo artigo, nesse o foco está em apresentar como utilizar o Flex em aplicações corporativas, integrando com SpringFramework e EJBs utilizando o JBoss.

Sem mais, por favor deixe o seu feedback!

Abraços.

\o/


Author: Rodrigo Pereira Fraga
jan 13
Digg
Stumbleupon
Technorati
Delicious

Flex: Um chat simples em menos de 20 linhas.

Uma coisas mais excepcionais que o design do framework do Adobe Flex traz, é a facilidade de trabalhar com os serviços de mensageria. Toda a complexidade que existe nas soluções de mensageria como a do JMS do Java, no Flex, basicamente foi resumido ao <mx:Producer/> e <mx:Consumer/> (ver a documentação).

Assim como os outros meios de comunicação do Flex ( HttpService, WebService, RemoteObject ) o Consumer e Producer precisam de uma funcionalidade no back-end, em específico o DataService que está usando. Como por exemplo, no Java o DataService mais comum que contém essa funcionalidade é o Live Cycle Data Services e o BlazeDS, este OpenSource. No PHP, tem o WebOrb for PHP.

Como o título deste tópico informa, para provar que é muito simples trabalhar com mensageria no Flex, vamos criar um chat com nem 20 linhas (um total de linhas programadas e não de configuração) no Flex. Para tal façanha, primeiro escolha qual linguagem e DataService que irá utilizar no back-end. Eu estarei utilizando Java + BlazeDS.

Partindo do princípio que o BlazeDS já está integrado ao Java e com as configurações básicas:

  1. O primeiro passo é criar um canal de comunicação para trafegar as mensagens. Para isso, no arquivo services-config.xml do BlazeDS, adicione o seguinte canal:
    XML:
    1. <channel-definition id="streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
    2. <endpoint url="http://localhost:8080/NOME_DA_APP/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
    3. </channel-definition>

    Esse é um canal de Streaming, e só irá funcionar se for executado em Http 1.1. Outra forma de utilizar os serviços de menssageria, é criar um canal AMF normal (AMFChannel) e ativar o polling, como no exemplo abaixo:

    XML:
    1. <channel-definition id="polling-amf" class="mx.messaging.channels.AMFChannel">
    2. <endpoint url="http://localhost:8080/NOME_DA_APP/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
    3. <properties>
    4. <polling-enabled>true</polling-enabled>
    5. </properties>
    6. </channel-definition>

  2. Criado o canal, vamos criar o destination na qual irá utilizar o canal. Para isso, crie se não existir um arquivo no mesmo diretório do services-config.xml com o nome de messaging-config.xml, nele coloque o seguinte conteúdo:
  3. XML:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <service id="message-service" class="flex.messaging.services.MessageService">
    3. <adapters>
    4. <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" />
    5. </adapters>
    6. <default-channels>
    7. <channel ref="streaming-amf"/>
    8. </default-channels>
    9.  
    10. <destination id="chatMessage"/>
    11. </service>

    Com o messaging-config.xml criado, é preciso informar ao services-config.xml que existem destinations de mensageria. Para isso adicione as linhas abaixo no services-config.xml:

    XML:
    1. <services-config>
    2. <services>
    3. <service-include file-path="remoting-config.xml" />
    4. <service-include file-path="messaging-config.xml" />
    5. ...
    6. </services>
    7. ...

  4. Adicionado o destination (chatMessage), a configuração já está completa. Vamos agora criar a Interface do Chat junto com o Producer e Consumer (menos de 20 linhas):
    XML:
    1. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="consumer.subscribe()">
    2.  
    3. <mx:Consumer id="consumer" destination="chatMessage"
    4. message="txtArea.htmlText += event.message.body as String"/>
    5. <mx:Producer id="producer" destination="chatMessage"/>
    6.  
    7. <mx:TextArea id="txtArea" width="100%" height="100%" editable="false"/>
    8. <mx:RichTextEditor id="inputDsMessage" width="100%" height="100%"/>
    9. <mx:Button label="Enviar" click="producer.send( new AsyncMessage(inputDsMessage.htmlText) ); inputDsMessage.text='' "/>
    10.  
    11. <mx:Script>
    12. <![CDATA[
    13. import mx.messaging.messages.AsyncMessage;
    14. ]]>
    15. </mx:Script>
    16. </mx:Application>

Pronto! agora basta startar seu Container Web (no meu caso o TomCat) e abrir 2 browsers distintos e enviar as menssagens.
Atenção com o Firefox, pois ele armazena a mesma session para abas diferentes, e por default, o BlazeDS suporta uma conexão por cliente.

Para todo e qualquer erro, verifique sempre o console do Tomcat, ele sempre traz informações úteis para identificar os erros.

[Download do Fonte]

ChatApp


Author: Rodrigo Pereira Fraga
abr 13
Digg
Stumbleupon
Technorati
Delicious

Porquê Flex? / Why Flex?

Baseado no post do Ebertom, resolvi postar uma série de videos engraçados e interessantes sobre... Porquê Flex? AIR?

Why Flex

Read more


Author: Rodrigo Pereira Fraga
mar 16
Digg
Stumbleupon
Technorati
Delicious

Manifesto Flex Brasil

[Saiba o que é o Manifesto Flex Brasil]

Minhas principais contribuições para a comunidade:

Post: Configurando Ambiente com Flex 2 e HelloWorld.
Por que ele é relevante: Aprenda a montar um ambiente de desenvolvimento com Flex 2 e um HelloWorld.
A quem ele se destina: Desenvolvedores inexperientes com Flex.

Post: Simples Leitor de RSS
Por que ele é relevante: Veja como em poucas linhas de código é possível fazer um leitor de RSS com Flex usando HttpService.
A quem ele se destina: Desenvolvedores Flex em geral.

Post: Adobe Flex - Brincando com Efeitos
Por que ele é relevante: Veja como é fácil adicionar efeitos aos componentes Flex.
A quem ele se destina: Desenvolvedores Flex em geral.

Post: Trocando objetos entre Flex e PHP
Por que ele é relevante: Faça uso de uma boa prática trocando objetos do tipo VO/DTO/TO entre Flex e PHP via RemoteObject.
A quem ele se destina: Desenvolvedores Flex que usam PHP no back-end.

Post: Censo Adobe Flex Developer
Por que ele é relevante: Um pequena aplicação em Flex que armazena dados de desenvolvedores Flex.
A quem ele se destina: Desenvolvedores Flex em geral.

Post: Trabalhando com CSS no FlexBuilder 3
Por que ele é relevante: Aprenda como criar estilos no Flex através de .css usando o FlexBuilder 3.
A quem ele se destina: Desenvolvedores Flex que tem foco em design.

Post: Proposta de Arquitetura com Adobe Flex e PHP usando Zend Framework
Por que ele é relevante: Disponibilizo a comunidade uma proposta de desenvolvimento com Flex e PHP, para que possa padronizar, arquitetar o código usando boas práticas.
A quem ele se destina: Desenvolvedores Flex que usam PHP no back-end.

Post: Fórum FlexBrasil
Por que ele é relevante: Uma alternativa a listas Flex-Brasil e FlexDev, e armazenamento de tópicos com intenção de ajudar novos desenvolvedores Flex.
A quem ele se destina:
Desenvolvedores Flex em geral.

Post: Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate. [Parte1]  [Parte2]
Por que ele é relevante: Mostro com detalhes como integrar frameworks de mercado mais famosos no mundo Java com Flex usando RemoteObjects.
A quem ele se destina: Desenvolvedores Flex que usam Java no back-end.

E agora eu passo a bola para o Eberton Consolim...


Author: Rodrigo Pereira Fraga
jan 27
Digg
Stumbleupon
Technorati
Delicious

Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para Sistemas Web. (Parte 2 - Final)

Olá Pessoal!

Primeiro lugar, quero agradecer a todos pelo feedback do post anterior, isto é motivante e me dá ânimo em concluir este, e outros que virão.

Hoje o foco deste artigo é que você termine ele sabendo:

Configurar os Beans do Spring através de annotations;

Integrar o esquema de Beans do Spring com os services do Flex através de uma Factory;

Configurar o Spring para usar o Hibernate para abstrair nosso banco de dados;

Para isso vamos a uma breve introdução a estes poderosos frameworks

Breve Introdução ao Spring

spring

Como não sou fã de ficar re-escrevendo a roda, vou tentar dar a você leigo em Spring, um caminho para estudar.

Primeiro de tudo, leia este artigo feito pelo Phillip Calçado (Shoes)
apostila-spring.pdf 
Valeu
Ebertom pela hospedagem! =)

Uma Introdução ao que o  SpringFramework pode oferecer:
http://blog.fragmental.com.br/2005/08/31/spring-em-acao/
http://www.ime.usp.br/~reverbel/SMA/Slides/seminarios/spring.pdf
http://imasters.uol.com.br/artigo/4497/java/spring_framework_introducao/

Outros Tutoriais
http://www.javafree.org/content/view.jf?idContent=46

http://www.devmedia.com.br/articles/viewcomp.asp?comp=6627
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6628
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6653

Spring Annotations
http://blog.interface21.com/main/2006/11/28/a-java-configuration-option-for-spring/
http://weblogs.java.net/blog/seemarich/archive/2007/11/annotation_base_1.html

Exemplos de códigos
http://paulojeronimo.com/arquivos/tutoriais/tutorial-spring-framework.zip
http://www.java2s.com/Code/Java/Spring/CatalogSpring.htm

Documentação
The Spring Framework - Reference Documentation

Bom acredito que se você que está afim de conhecer o SpringFramewok, com esses Link's já é possível entender quase tudo o que ele pode oferecer a sua arquitetura. Lembrando que não é recomendável seguir com este artigo, sem antes entender como funciona  IoC, AOP, DAO, com o SpringFramework.

*Nota A abordagem aqui é sobre o SpringFramework, (Framework de Negócio) e não sobre o SpringMVC, uma vez que o Flex pode se trocar objetos através do protocolo AMF3, é totalmente dispensável o uso de Frameworks MVC's.

Breve Introdução ao Hibernate

Como eu já disse, uma vez que já existe um bom conteúdo sobre Hibernate na Internet, não há a necessidade de re-escrever, por isso vou lhe dar a você leigo em Hibernate uma sequência de Link que irá te ajudar a entender este poderoso Framework.

Uma Introdução ao que o  Hibernate pode oferecer:
http://www.students.ic.unicamp.br/~ra007271/docs/white-papers/hibernate-uma_introducao_dirigida.pdf
http://www.guj.com.br/java.tutorial.artigo.125.1.guj
http://www.jeebrasil.com.br/mostrar/4
http://www.devmedia.com.br/articles/viewcomp.asp?comp=4149

Outros Tutoriais
http://simundi.blogspot.com/2007/09/criar-uma-aplicao-com-hibernate.html
http://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html
http://www.hibernate.org/hib_docs/tools/reference/en/html/plugins.html
http://www.guj.com.br/posts/list/7249.java

Pacotão de PDF's
http://br.groups.yahoo.com/group/java-br/files/Hibernate/

Exemplos de código
http://www.java2s.com/Code/Java/Hibernate/CatalogHibernate.htm

Documentação
http://www.hibernate.org/hib_docs/v3/reference/en/html/

Ok, partindo do princípio que você já entendeu como funciona o Hibernate, e o Spring, vamos ao código! +)

Read more


Author: Rodrigo Pereira Fraga