terça-feira, 23 de janeiro de 2007

Conhecendo o JEE - Part1

Um pouco de teoria

Hoje vou tentar explicar um pouco sobre o que é e como está organizada a plataforma JEE. Andei lendo um pouco a especificação da SUN sobre o JEE para não falar besteiras aqui, e claro, para aprender mais também. Caso alguem tenha vontade de ler a especificação, o link é o seguinte:

http://jcp.org/aboutJava/communityprocess/pr/jsr244/


Vou começar pela definição do próprio site da SUN:
Java Platform, Enterprise Edition (Java EE) is the industry standard for developing portable, robust, scalable and secure server-side Java applications. Building on the solid foundation of Java SE, Java EE provides web services, component model, management, and communications APIs that make it the industry standard for implementing enterprise class service-oriented architecture (SOA) and Web 2.0 applications. (Fonte: http://java.sun.com/javaee/ )


Como a Sun mesmo diz, o JEE é um "standard" ou seja, um padrão, uma especificação, uma "maneira de desenvolver", que deveria servir de modelo para o desenvolvimento de aplicações portáveis, robustas, escaláveis e seguras... (quanto ao "server-side" vou falar mais tarde).

O que seria esse padrão?
Todos ja devem ter ouvido falar dos "design patterns" e do "GoF" né? Se não ouviram, está na hora de estudar a respeito (veja links de referencia no final do post). Os Design Patterns são soluções para problemas cotidianos que foram elaboradas por "experts" em arquitetura de software e OO para serem o mais eficiente possíveis (des de que usadas corretamente), e assim poupar os demais desenvolvedores de "reinventar a roda" toda vez que se deparam com um problema.
Acredito que os "criadores" do JEE devem ter seguido uma linha de raciocínio semelhante. Com a demanda da criação de aplicações distribuidas, de grande porte e com necessidade de segurança/escalabilidade crescentes, cada grupo de empresas devia estar criando sua própria maneira de resolver esses problemas. Vendo isso, um grupo de desocupados (hehehe brincadeira) deve ter sentado e pensado nas situações mais relevantes nesse cenário coorporativo e criado "patterns" (soluções prontas) para resolve-los. Fizeram um documento por escrito, e bla bla bla até que surgiu a primeira especificação do JEE.

Não sei se foi assim mesmo, não fui pesquisar na história do Jee tão a fundo para saber quem teve a idéia de criar, ou como foi criado, mas não deve fugir muito dessa linha, o importante a ressaltar é que o JEE teve alguns problemas no inicio... era muito complicado (ou os caras que desenvolveram o JEE era muito inteligentes, ou o restante da comunidade java era muito burra ou preguiçosa para aprender JEE e usa-lo). Com o tempo a especificação veio mudando, mudando e hoje ela já se tornou bem "lightweight" (hehehe cansei de ler isso na internet, resolvi usar tambem).

Vem ai mais um trecho direto da fonte:

Características de uma aplicação JEE 5 segundo a especificação da JCP

•Highly available, to meet the needs of today’s global business environment.
•Secure, to protect the privacy of users and the integrity of the enterprise.
•Reliable and scalable, to ensure that business transactions are accurately and promptly processed. ( Fonte: JSR-000244 - Review: 8 August 2005 )

As características que essa versão da especificação prega são as citadas acima:

  • Alta Disponibilidade: Aplicações para missões criticas, aplicações que não podem parar, serviços que tem que estar funcionando 24h/7dias por semana
  • Segurança: Os dados devem estar muito bem protegidos, tanto em relação a privacidade dos usuarios quanto a segurança das informações do "negocio".
  • Confiável: Confiável se enquadra no principio de ser SEGURA e DISPONIVEL, ou seja, uma aplicações que você pode confiar (pois ela sempre vai funcionar quando voce precisa e suas informações estarão seguras com ela)
  • Escalável: Uma aplicação que cresce seguindo a demanda do seu negocio. Isso quer dizer que: teoricamente, você poderia começar com uma aplicação "pequena" e conforma a necessidade fosse surgindo, bastaria você adicionar mais "maquinas/recursos" para suportar a demanda.
Bonito né? imagina uma aplicação assim... seria algo perto do ideal... eu ainda estou muito longe de conseguir desenvolver algo do tipo, mas, um dia eu chego lá...


Não quero me demorar muito no post porque post grande ninguem lê, e se lê acaba ficando cansado. Vou só postar o diagrama da arquitetura JEE aqui para que voces possam dar uma olhada nas tecnologias envolvidas, e no próximo post eu explico um pouco sobre cada "camada" do JEE mostrada no diagrama.


(Diagrama tirado da especificação jsr-000244)


Se vocês clicaram na figura, verão uma coisa interessante, que confunde muita gente: JavaEE roda em cima de JSE. Ou seja, jEE não é uma tecnologia nova, e sim uma especificação de uso da já existente JSE. "This is the point!" Java Enterprise Edition é uma maneira de se utilizar a Java Standard Edition. E outra coisa, a respeito do "Server-Side"... esse diagrama me deixa confuso... também entra no diagrama camadas que rodam do lado do "cliente", como applets e o chamado "Application Client Container". Li na especificação que eles tem a intenção de, num futuro próximo, criar alguns "padrões" para desenvolver aplicações que rodam do lado do cliente, mas por enquanto isso não é enfatizado, mas já está em planos, por isso deixo essa característica do JEE (ser uma aplicação do lado do servidor) um pouco de lado.

É isso, jEE é uma tecnologia nova dentro do mundo Java, está começando a ser difundida e logo acredito que vai "virar padrão para todo mundo"... até lá, vamos estudando para não ficar para traz!!

Abraços! Até a próxima.


Referências

Sun - http://java.sun.com/javaee/
JCP (Java Community Process) - http://jcp.org/aboutJava/communityprocess/pr/jsr244/

Links sobre Design Patterns

Wikipedia - http://en.wikipedia.org/wiki/Design_pattern_(computer_science), http://en.wikipedia.org/wiki/Design_Patterns

1 comentários:

Iara Maria Gonçalves Salvador disse...

Olá Giu rs!!!
Muito bom teu post, principalmente na citação que se refere a comparativo não, a tradução do que realmente é o JEE, uma maneira padronizada de se fazer uso do JSE.

Ajudou muito no estudo de um projeto que estou fazendo...