Desenvolvimento de Software


Web Services e o J2EE

Se você quiser construir sistemas baseados em web services, existem mais requisitos que os seus olhos podem ver. Seus web services deverão ser confiáveis, ter alta disponibilidade, tolerante a falhas e escaláveis. Essas necessidades nao são diferentes das mesmas existentes em outras aplicações corporativas.

J2EE e .NET são evoluções das tecnologias de servidor de aplicação existentes para o desenvolvimento de sistemas corporativos baseados em web services.

A visão comum entre essas duas tecnologias, é a inacreditável quantidade de artefatos que compõem a base para os web services, como a interoperabilidade com XML, segurança, balanceamento de carga, e transações. Ao invés de codificar os programas para prover essas funcionalidades, você passa a escrever aplicações que são executadas em um compartimento ou container que provê todos esses complexos serviços.

Esse paradigma permite uma especialização nas regras do negócio ao invés de ficar re-escrevendo códigos complexos e difíceis. A partir deste conceito, você passa a entender apenas o problema do seu negócio e deixar que o web service se encaixe no container do servidor de aplicação e passe a integrar os requisitos vistos anteriormente.

Tendo em vista o que foi dito até agora, vamos analisar um pouco dos detalhes na visão J2EE.

J2EE

A plataforma Java 2, Enterprise Edition (J2EE) foi concebida para simplificar problemas complexos no desenvolvimento, disponibilização e gerenciamento de soluções multi-camadas. J2EE é uma especificação padrão, e é o resultado de uma grande iniciativa liderada pela Sun Microsystems.

É importante esclarecer que J2EE não é um produto. Você não poderá efetuar um download para o seu computador e executar como se fosse um programa convencional.

O objetivo das especificações J2EE é oferecer aos clientes a chance de escolha de um fornecedor de produtos e ferramentas, encorajando a competição entre esses fornecedores por oferecer produtos de alta qualidade.

Para garantir a qualidade das soluções, a Sun colabora com outros fornecedores de plataformas e-Bussiness, como a BEA, IBM, e Oracle, na definição J2EE. Além disso, também iniciou a Java Community Process (JCP) que solicita novas idéias para aperfeiçoar as especificações J2EE ao longo do tempo. O motivo destas iniciativas pela Sun é simples: atingir o sucesso - a melhor maneira de garantir a venda de uma idéia é envolver outros na definição da idéia.

JAVA: A base do J2EE

A arquitetura J2EE é baseada na linguagem de programação JAVA. O diferencial desta linguagem é a possibilidade de escrever o código uma única vez e disponibilizá-lo em qualquer plataforma, como por exemplo, Windows, Linux, etc. Vamos entender o processo:

  1. Desenvolvedores escrevem o código Java.
  2. O código Java é compilado em bytecode, um código intermediário entre o código fonte e a linguagem de máquina.
  3. Quando o código está pronto para rodar, uma máquina virtual Java (JRE - Java Runtime Environment) interpreta esse bytecode e executa a aplicação.

Seus componentes J2EE são transformados em bytecode e executados pela JRE. Os containers descritos anteriormente são tipicamente escritos em Java.

J2EE e Web Services

Já é conhecido que o J2EE foi concebido para arquitetura baseada do lado do servidor pela linguagem de programação Java. Pode ser utilizado para construção de tradicionais web sites à componentes de software. O J2EE foi estendido para suportar a construção de web services baseados em XML. Esses web services podem possuir interoperabilidade com outros web services que podem ou não ter sido escritos com o padrão J2EE.

Vamos entender o modelo Web Service J2EE na figura abaixo:

Arquitetura Webservice J2EE

Resumindo o conteúdo da figura,

Uma aplicação J2EE é hospedada em um container, o qual provê serviços necessários para aplicações corporativas, como transações, segurança, e serviços de persistência.

A camada de negócio age como um processador dos dados de negócio. Em aplicações de larga escala, é utilizada a tecnologia de componentes Enterprise Java Beans (EJB). Essa camada conecta as bases de dados através do Java Database Connectivity (JDBC) ou SQL/J, ou alguma arquitetura que utilize a arquitetura Java Connector Architecture (JCA). Podemos pensar também na conexão a sistemas de parceiros utilizando as tecnologias de web services (SOAP, UDDI, WSDL, ebXML) através das APIs JAVA para XML (JAX APIs).

Parceiros de negócio podem conectar com aplicações J2EE através das tecnologias web services. Um servlet, responsável pelo request/response dos objetos Java, pode aceitar requisições de um web service de um parceiro. O servlet utiliza as APIs JAX para realizar as operações.

Tradicionais clientes como applets ou aplicações, se conectam diretamente a camada EJB através do protocolo Internet Inter-ORB (IIOP) assim como os web services, desde que geralmente os clientes sejam escritos pela mesma organização que produziu as aplicações J2EE, e por isso não existe a necessidade de fazer uma colaboração baseada em XML entre os web services.

Navegadores web e dispositivos wireless conectam a partir das páginas JSP (JavaServer Pages) que renderizam as interfaces do usuário em HTML, XHTML, ou WML.

Implementação Referência

Adicionalmente as especificações, a Sun disponibiliza uma implementação referência para o J2EE. Desenvolvedores escrevem as aplicações baseadas nesta referência, a fim de garantir portabilidade dos seus componentes. Está implementação referência não deverá ser utilizada em ambientes de produção, apenas para testes.

Serviços Adicionais

Todos os fornecedores que fabricam plataformas baseadas no J2EE oferecem funcionalidades adicionais, não encontradas no modelo padrão. Algumas destas funcionalidades impactam diretamente na portabilidade, como por exemplo, alguns componentes para e-Commerce, ou avançadas integrações B2B. Outras funcionalidades, como gerenciamento de carga (load-balancing) e caching, não afetam a portabilidade do código da aplicação, por que eles são serviços implícitos providos “atrás dos bastidores” pelo container.

No próximo artigo iremos ver um pouco da arquitetura .NET.

Obrigado leitor e Até lá!

Cesar Cardoso - Consultor e Analista de Sistemas Cesar Cardoso é um profissional certificado MCP (Microsoft Certified Professional) e analista de Sistemas de uma multinacional.
cesar@internativa.com.br