UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA...

8
II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação Tecnológica João Pessoa - PB - 2007 UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB Fellipe Araújo ALEIXO (1); Ivanilson França VIEIRA Júnior (2); Eder Carlos de Oliveira NOGUEIRA (3); Wanderson CÂMARA dos Santos (4); Thyago Barbosa RODRIGUES (5) (1) CEFET-RN, Av. Sen. Salgado Filho, 1559, Tirol, Natal-RN – CEP: 59015-000, telefone: (84) 4005 2637, e-mail: [email protected] (2) CEFET-RN, e-mail: [email protected] (3) CEFET-RN, e-mail: [email protected] (4) CEFET-RN, e-mail: [email protected] (5) CEFET-RN, e-mail: [email protected] RESUMO Ao passo que as tecnologias relacionadas com o desenvolvimento de sistemas evoluem, aumenta a complexidade dos sistemas que se deseja desenvolver. O aumento da complexidade dos sistemas a serem desenvolvidos, e o fato desse desenvolvimento necessitar acontecer em menos tempo (por uma questão de competitividade), tem levado ao desenvolvimento de mecanismos de middleware. Um middleware visa oferecer uma série de serviços prontos para serem utilizados pelos desenvolvedores de aplicações. O nome de aplicações corporativas foi associado a tais aplicações que por sua complexidade, fazem uso de serviços de middleware para acelerar o seu desenvolvimento, concentrando esforços na lógica do negócio. Uma das plataformas para o desenvolvimento de sistemas corporativos foi desenvolvida pela Sun Microsystems, e é chamada de Java Enterprise Edition, atualmente na sua versão 5, o JEE 5. Com o objetivo de otimizar ainda mais o desenvolvimento de aplicações corporativas JEE 5, voltadas para a Web, foi desenvolvido o framework JBoss Seam. O objetivo deste trabalho é realizar uma compilação de bibliografia sobre o JBoss Seam, além de explorar seus aspectos práticos no desenvolvimento de um estudo de caso. O estudo de caso em questão trata-se do desenvolvimento de uma aplicação completa utilizando este framework. A seguinte metodologia será utilizada para o desenvolvimento do trabalho: realizar uma revisão bibliográfica sobre o tema; levantar os requisitos e especificar o sistema a ser desenvolvido; definir a arquitetura do sistema a ser desenvolvido com base no framework escolhido para o desenvolvimento; e apresentar aspectos relativos a fase de implementação e testes. Será adotado para o desenvolvimento do sistema proposto uma customização do processo unificado. Palavras-chave: Java Enterprise Edition, Jboss Seam, Aplicações Corporativas.

description

Artigo submetido no II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação Tecnológica.

Transcript of UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA...

Page 1: UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB

II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação TecnológicaJoão Pessoa - PB - 2007

UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB

Fellipe Araújo ALEIXO (1); Ivanilson França VIEIRA Júnior (2); Eder Carlos de Oliveira NOGUEIRA (3); Wanderson CÂMARA dos Santos (4); Thyago Barbosa RODRIGUES (5)

(1) CEFET-RN, Av. Sen. Salgado Filho, 1559, Tirol, Natal-RN – CEP: 59015-000, telefone: (84) 4005 2637, e-mail: [email protected]

(2) CEFET-RN, e-mail: [email protected](3) CEFET-RN, e-mail: [email protected]

(4) CEFET-RN, e-mail: [email protected](5) CEFET-RN, e-mail: [email protected]

RESUMO

Ao passo que as tecnologias relacionadas com o desenvolvimento de sistemas evoluem, aumenta a complexidade dos sistemas que se deseja desenvolver. O aumento da complexidade dos sistemas a serem desenvolvidos, e o fato desse desenvolvimento necessitar acontecer em menos tempo (por uma questão de competitividade), tem levado ao desenvolvimento de mecanismos de middleware. Um middleware visa oferecer uma série de serviços prontos para serem utilizados pelos desenvolvedores de aplicações. O nome de aplicações corporativas foi associado a tais aplicações que por sua complexidade, fazem uso de serviços de middleware para acelerar o seu desenvolvimento, concentrando esforços na lógica do negócio. Uma das plataformas para o desenvolvimento de sistemas corporativos foi desenvolvida pela Sun Microsystems, e é chamada de Java Enterprise Edition, atualmente na sua versão 5, o JEE 5. Com o objetivo de otimizar ainda mais o desenvolvimento de aplicações corporativas JEE 5, voltadas para a Web, foi desenvolvido o framework JBoss Seam. O objetivo deste trabalho é realizar uma compilação de bibliografia sobre o JBoss Seam, além de explorar seus aspectos práticos no desenvolvimento de um estudo de caso. O estudo de caso em questão trata-se do desenvolvimento de uma aplicação completa utilizando este framework. A seguinte metodologia será utilizada para o desenvolvimento do trabalho: realizar uma revisão bibliográfica sobre o tema; levantar os requisitos e especificar o sistema a ser desenvolvido; definir a arquitetura do sistema a ser desenvolvido com base no framework escolhido para o desenvolvimento; e apresentar aspectos relativos a fase de implementação e testes. Será adotado para o desenvolvimento do sistema proposto uma customização do processo unificado.

Palavras-chave: Java Enterprise Edition, Jboss Seam, Aplicações Corporativas.

Page 2: UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB

II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação TecnológicaJoão Pessoa - PB - 2007

1. INTRODUÇÃO

Ao passo que as tecnologias relacionadas com o desenvolvimento de sistemas evoluem, aumenta a complexidade dos sistemas que se deseja desenvolver. O aumento da complexidade dos sistemas a serem desenvolvidos, e o fato desse desenvolvimento necessitar acontecer em menos tempo (por uma questão de competitividade), tem levado ao desenvolvimento de mecanismos de middleware.

Um middleware visa oferecer uma série de serviços prontos para serem utilizados pelos desenvolvedores de aplicações. O nome de aplicações corporativas foi associado a tais aplicações que por sua complexidade, fazem uso de serviços de middleware para acelerar o seu desenvolvimento, concentrando esforços na lógica do negócio. Uma das plataformas para o desenvolvimento de sistemas corporativos foi desenvolvida pela Sun Microsystems, e é chamada de Java Enterprise Edition, atualmente na sua versão 5, o JEE 5.

Com o objetivo de otimizar ainda mais o desenvolvimento de aplicações corporativas JEE 5, voltadas para a Web, foi desenvolvido o framework JBoss Seam. O objetivo deste trabalho é realizar uma compilação de bibliografia sobre o JBoss Seam, além de explorar seus aspectos práticos no desenvolvimento de um estudo de caso. O estudo de caso em questão trata-se do desenvolvimento de uma aplicação completa utilizando este framework.

A necessidade de códigos mais limpos e menos complexos vem tornando a utilização de ferramentas de desenvolvimentos cada vez mais recentes por parte dos programadores e uma dessas ferramentas é o framework JBOSS SEAM criado por Gavin King o mesmo criador do Hibernate. A utilização do framework visa facilitar a manipulação do código integrando JSF e EJB3 deixando a cargo do programador somente a definição do Negocio da Aplicação.

2. APLICAÇÕES DISTRIBUÍDAS

A segunda metade do século vinte foi o palco de uma enorme inovação tecnológica. Os computadores começaram a dominar diversos setores, e é claro que as empresas não ficaram de fora desta revolução. Cada vez mais as necessidades comerciais foram sendo delegadas aos computadores, que passaram a dominar desde as frentes de loja até os pisos de fábrica, passando por estoques, departamentos financeiros, setores de direção e etc. Para realizar tarefas tão complexas, softwares igualmente complexos são necessários. Tais softwares precisam encarar desafios como integrar diversos setores de uma mesma companhia (ERM), conectar empresas geograficamente separadas, realizar verificações inteligentes na base de dados (Business Inteligence), além das tarefas que se esperam de qualquer software empresarial, ou seja, tarefas que compensem o investimento, promovendo lucros e benefícios. Tais programas são conhecidos como Aplicações Corporativas, justamente por tratarem de problemas com um complexidade de níveis empresariais.

Aplicações Corporativas englobam uma grande quantidade de sub-sistemas, e apresentam um grande número de requisitos de alta complexidade. Um portal de compras na Internet, por exemplo, precisa estar sempre online, garantir segurança para o cliente, suportar milhares de requisições por segundo, entre outras coisas. Para implementar sistemas de tamanha capacidade, faz-se necessário utilizar uma linguagem confiável, uma plataforma robusta. Java foi a escolha mais óbvia, principalmente por se tratar de uma linguagem livre de código aberto.

Java é uma plataforma de desenvolvimento criada pela Sun Microsystems. Em verdade, existem quatro plataformas: Java SE, para programas Desktop; Java EE, para aplicações corporativas; Java ME, para aplicações de aparelhos móveis, como celulares e PDAs; e Java Card Technology, para smart cards e outros equipamentos de memória e processamento extremamente limitados. Embora o Java EE (Enterprise Edition) seja focado em aplicações corporativas, tais aplicações podem vir a utilizar todas as quatro plataformas de desenvolvimento, dependendo, obviamente, das suas necessidades. Neste artigo, apenas as plataformas Java EE e Java SE serão utilizadas (posto que a Java EE é naturalmente utilizada em conjunto com as classes de núcleo do Java, que estão no Java SE).

Do site da Sun: "Java Platform, Enterprise Edition (Java EE) é o padrão da indústria para o desenvolvimento de aplicações java do lado do servidor portáveis, robustas, escaláveis e seguras. Construída sobre a fundação sólida do Java Platform, Standard Edition (Java SE), Java EE provê APIs para web services, modelo de componentes, gerenciamento e comunicação, que a tornam o padrão da indústria para a implementação da arquitetura orientada a serviços (SOA) de classe corporativa e aplicações web da próxima geração".

Page 3: UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB

II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação TecnológicaJoão Pessoa - PB - 2007

Devido ao tamanho e à complexidade das aplicações em questão, torna-se bastante complicado o desenvolvimento de todos os aspectos necessários para o programa, entre requisitos funcionais e não-funcionais. E estes são alguns dos motivos que levaram a comunidade de desenvolvimento a criar programas de apoio para tais aplicações, os chamados Servidores de Aplicação. Estes, por sua vez, são middlewares para aplicações corporativas e/ou distribuídas que facilitam bastante a sua implementação e manutenção.

3. MIDDLEWARE PARA APLICAÇÕES CORPORATIVAS

As aplicações distribuídas possuem diversas necessidades - algumas das quais já foram ilustradas neste trabalho - e muitas delas mostram-se redundantes de uma aplicação para outra. Funcionalidades tais como balanceamento de carga, métodos de autenticação e segurança, controle de transações, serviço interno de nomes, abstração dos protocolos de comunicação via rede, etc., são utilizados em muitas aplicações corporativas distribuídas. Muito embora estes serviços sejam fundamentais para a maioria das aplicações, eles não se referem diretamente à lógica de negócio das aplicações, e constituem assim um interesse paralelo. E é a fim de prover tais funcionalidades que existem os middlewares.

Segundo a Internet2, Um Middleware é uma camada de software localizada entre a rede e as aplicações. Esse software provê serviços tais como identificação, autenticação, autorização, diretórios e segurança. Ou seja, um midleware é um software que provê abstração de serviços para outros softwares, permitindo que estes softwares utilizem diversas funcionalidades de maneira simples ou transparente. A principal vantagem dos middlewares é retirar das mãos da equipe de desenvolvimento o fardo de ter que programar todas estas funcionalidades, o que provocaria re-escrita de um código que provavelmente já existe em diversos outros programas.

Utilizar um middleware ajuda ainda a comunidade de desenvolvimento como um todo, posto que torna-se possível estabelecer padrões. Seria muito difícil, por exemplo, desenvolver um sistema de agentes de software que se comunicasse com diversos serviços se o protocolo de comunicação de cada serviço fosse diferente. Ao utilizar um serviço comum - aquele provido pelo middleware - estas dificuldades são eliminadas. No entanto, para que as empresas aceitem ficar tão dependentes de um software, é preciso que ele tenha consistência no mercado. Seria ingenuidade acreditar que as empresas iriam aceitar qualquer middleware unicamente pelas suas funcionalidades; é preciso saber, por exemplo, que a empresa por trás da criação do middleware é séria, que o projeto tem sustentação - em outras palavras, que eles não estão pegando um barco destinado a afundar. Alguns middlewares de suporte para aplicações distribuídas em Java já conseguiram o seus lugares no mercado. Dentre os mais conhecidos, destacam-se o JBoss (Red Hat), Sun Java System (Sun), Oracle (Oracle), WebSphere (IBM), Geronimo (Apache) e WebLogic (BEA). Todos têm em comum o fato de receberem suporte de grandes empresas de renome no mercado.

Umas das mais novas e solicitadas funções dos middlewares modernos para Java é a de prover serviços Web (ou Web services, como será chamado neste trabalho à partir deste ponto). Web services nada mais são do que, como o próprio nome diz, serviços que são disponibilizados através da Web. Os Web services são uma implementação da Arquitetura Orientada a Serviços, ou SOA (Service Oriented Architecture) (BELL, 2006), tão comentada hoje em dia. Mas a concorrência entre os middlewares os levam a fazer mais do que simplesmente oferecer a opção de disponibilizar os Web services. Middlewares de alta capacidade trazem todo um modelo automatizado de deployment de Web services (ou seja, de preparação para disponibilização do serviço). O JBoss, por exemplo, apresenta uma integração com o JAX-WS 2.0 (tecnologia Java para criação simples de Web services) (HANSEN, 2007) que permite que o serviço seja criado completamente à partir de apenas uma classe Java relativamente simples, criando automaticamente arquivos de configuração e disponibilizando o serviço na web.

4. FRAMEWORK JBOSS SEAM

O Seam é um framework para JEE 5, e é inspirado nos seguintes princípios:

Integração EJB 3.0 com JSF;

AJAX integrado;

Integrar o processo de negocio na declaração das classes;

Declaração gerenciável do estado.

Page 4: UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB

II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação TecnológicaJoão Pessoa - PB - 2007

A seguir é apresentado um trecho de código-fonte de um componente Seam, onde fica evidenciado que a sua diferença para uma classe Java comum são as anotações específicas do JBoss Seam.

Para um componente Seam é preciso ser definido um nome, e isso é feito pela anotação @Name, este nome precisa ser único dentro da aplicação Seam. Sempre que um componente Seam é instanciado há uma ligação com uma variável de contexto com o contexto padrão do componente. O contexto padrão é especificado usando a anotação @Scope. Um construtor vazio é requerido pelo EJB 3 e pelo Seam. As anotações @NotNull e @Length são parte do framework de validação do Hibernate, o Seam integra o validador do Hibernate e permite que você utilize-o para validação, mesmo se você não estiver usando Hibernate para persistência.

5. CONCLUSÃO

A utilização do framewok JBoss Seam para o desenvolvimento de aplicações corporativas para a Web leva a utilização de uma arquitetura mais simplificada. Ao utilizarmos o Seam não temos a necessidade de duplicar código entre camadas. O fato de poder construir um componente Seam como um EJB 3 que pode ser acessado a partir da camada de apresentação como um backingbean, evita a criação de código duplicado e permite que o desenvolvedor se concentre na lógica da aplicação

A criação de componentes Seam realmente aumenta a produtividade no desenvolvimento, dado que além de evitar a construção de código duplicado entre camadas, permite a criação de componentes Seam apenas com a adição de anotações específicas no código-fonte dos componentes.

As vantagens de utilização do JBoss Seam só contrastam com a curva de aprendizado necessária para a utilização efetiva do framework. Embora de criação bastante simples, a utilização do framework necessita que usuário compreenda uma série de conceitos importantes relativos ao desenvolvimento de aplicações

@Entity@Name("user")@Scope(SESSION)@Table(name="users")public class User implements Serializable{ private String username; private String password; private String name; public User(String name, String password, String username) { this.name = name; this.password = password; this.username = username; } public User() {} @NotNull @Length(min=5, max=15) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @NotNull public String getName() { return name; } public void setName(String name) { this.name = name; } @Id @NotNull @Length(min=5, max=15) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}

Quadro 1 - Exemplo de Código-fonte de um Componente Seam

Page 5: UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕES CORPORATIVAS PARA WEB

II Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação TecnológicaJoão Pessoa - PB - 2007

corporativas e mais especificamente conceitos relativos a plataforma JEE 5. Embora com esta ressalva, a utilização do framework deve ser considerado como uma alternativa para otimizar o desenvolvimento de aplicações corporativas.

REFERÊNCIAS

DEITEL, Harvey M. Java – Como Programar. Prentice Hall Brasil, 2007.

LEWIS John; CHASE, Joe; DEPASQUALE, Peter. Java Foundations. Addison Wesley, 2007.

SAVITCH, Walter; MOCK, Kenrick. Absolute Java. Addison Wesley, 2007.

SAMPAIO, Cleuton. Guia do Java Enterprise Edition 5. Brasport, 2007.

MCLAUGHLIN, Brett. Building Java Enterprise Applications. O'Reilly & Associates, 2002.

CRAWFORD, William; FARLEY, Jim. Java Enterprise in a Nutshell. O'Reilly & Associates, 2005.

ECKSTEIN, Robert. Java Enterprise Best Practices. O'Reilly & Associates, 2002.

MARK, Grand. Java Enterprise Design Patterns. John Wiley Consumer, 2001.

SULLINS, Benjamin G.; WHIPPLE, Mark B. EJB – Livro de Receitas. Ciência Moderna, 2004.

GONÇALVES, Edson; Desenvolvendo Aplicações Web com JSP e Servlets. Ciência Moderna, 2007.

ANSELMO, Fernando. Tudo Sobre a JSP. Visual Books, 2005.

SCHALK, Chris. Java Server Faces – The Complete Reference. MCGRAW-HILL Professional, 2006.

KEITH, Michael; HALEY, Jason; SCHINCARIOL, Merrick. PRO EJB 3 – Java Persistence API. Apress, 2006.

BELL, Michael; MARKS, Eric A. Service-Oriented Architecture – SOA. John Wiley Trade, 2006.

WOODS, Dan. Enterprise SOA. O'Reilly & Associates, 2006.

HANSEN, Mark. D. SOA Using Java Web Services. Prentice Hall, 2007.