terça-feira, 23 de janeiro de 2007

Conhecendo o JEE – Part2

Como prometido, o post de hoje será a respeito do diagrama estrutural do JEE mostrado no tópico anterior.

Segue ele aqui para refrescar a memória:


(clique na imagem para ve-la maior)

A especificação JEE define quatro tipos de “containers” ou “plataformas” ou simplesmente “componentes” ( como é citado na especificação ) que um produto JEE deve suportar.


Application Cliente


São programas, desenvolvidos em java, que rodam diretamente na máquina do usuário. Podem ser desenvolvidos com o SWING, AWT ou outra tecnologia desktop. Esses programas tem por característica proporcionar uma “user experience” semelhante a dos programas nativos da plataforma utilizada pelo usuário, mas com acesso a todas as facilidades da camada intermediária do JEE.



Applet


Applets, para quem não sabe, são pequenos aplicativos java que rodam, normalmente, dentro do brownser (existem outras aplicações, que não brownsers, que também dão suporte a applets). Eu fiquei um bom tempo sem ouvir falar de Applets. Sinceramente, é uma tecnologia que eu não costumo ouvir falar muito, no entanto, dizem por ai (a especificação JEE fala) que eles podem proporcionar uma interface com o usuário muito rica, muito mais rica que as páginas HTML convencionais. Particularmente, com o surgimento do Ajax, do DHTML e com o uso do FLASH, eu negaria essa afirmação. Tudo bem que com um Applet você consegue ter acesso as funcionalidades da linguagem java, utilizar objetos do JEE e tudo mais, mas eu não concordo com a parte da “interface rica”.



Web Container (Web Server)


É um servidor que fornece suporte as tecnologias JSP, Servlets, que utiliza conceitos como “filters” e web event listeners (como interceptors, etc), recursos esses chamados de “web components”.
Um servidor web, ou melhor, um Container Web bem conhecido é o Tomcat da Apache.org (http://tomcat.apache.org) que é um servidor “lightweight” (leve) com a maioria das funcionalidades que um dia você possa precisar.
Resumindo, um Web Container tem que ser capaz de aceitar requisições HTTP de um cliente web (pode ser um brownser ou qualquer outro cliente) interpretar essa requisição, fazer chamada aos “web components” configurados no container, e gerar uma resposta para o client web. Essa resposta pode ser uma pagina HTML ou até mesmo um WebService.



Enterprise Java Beans


Enterprise Java Beans, ou EJB como são mais conhecidos, são executados em um ambiente controlado (container EJB) e normalmente concentram a “lógica de negocio” de uma aplicação JEE. Esses objetos por si só, fornecem acesso a suas funcionalidades atravéz de WebService, utilizando o padrão SOA ou HTTP requests mesmo. EJB talvez seja a coisa mais útil e mais chata de se trabalhar quando falamos de JEE. Vou dedicar, logo logo, um tópico todo apenas para falar de EJB. Por enquanto, basta sabermos que eles são objetos que fornecem serviços e são auto-contidos. Com "auto-contidos" quero dizer que um EJB funciona independente de outros EJBs, fornecendo um serviço específico, como por exemplo: Envio de e-mails, consulta a um banco de “clientes”, geração de pedidos, etc. Também é interessante percebermos que todas as outras camadas do JEE podem fazer uso dos EJBs. Você pode ter uma aplicação desktop que instancie um EJB para gerar pedidos, ou ter uma aplicação web que utilize de um EJB para enviar e-mails de notificação aos administradores do site, etc.

Ainda no diagrama, vemos que existem setas apontando de um componente para outro. Essas setas indicam as chamadas que um componente faz ao outro. Por exemplo, no caso do “Client Application", ele pode utilizar (fazer chamadas) tanto a um Web Container, como a um EJB Container. Mas se você reparar, o EJB Container é o único que funciona independente de outros componentes. O EJB não utiliza nenhuma outra camada, ou componente JEE para funcionar, (no diagrama ele acessa apenas o Banco de Dados), ele é “auto-contido” como eu citei acima. Devido a essa independência, muitos autores dizem que EJB é a base de qualquer aplicação JEE.

Eu não concordo 100% com essa afirmação ( de que EJB é a base ), mas vou deixar isso para discutir logo logo.








Por enquanto é isso, espero ter dado uma visão geral dos quatro componentes básicos utilizados pelo jEE, volto logo com informações mais específicas sobre cada um deles.

Até Breve!


0 comentários: