De que se trata o artigo:

O artigo relata as principais alterações do JBoss AS 6 e uma introdução ao JBoss AS 7, que deverá ser lançado na metade deste ano. Dentre as novidades do JBoss AS 6, destacamos as melhorias em performance, como ele implementa a especificação Java EE 6 e as alterações em algumas features como Mensageria e Cache distribuído. Em relação ao JBoss AS 7, sem sombra de dúvidas a inovação de sua nova arquitetura é o foco neste tópico, bem como a facilidade de uso que é promessa de sua nova interface administrativa.


Para que serve:

O artigo serve para mostrar as principais novidades do JBoss AS 6, que teve sua versão final lançada em dezembro de 2010 e resumir o que podemos esperar do JBoss AS 7, principalmente em relação a sua arquitetura, trazendo serviços que podem ser iniciados on demand e a facilidade de uso.


Em que situação o tema é útil:

O artigo atualiza o leitor em relação a novas características do JBoss Application Server 6 e 7, demonstrando algumas diferenças entre as versões anteriores e exemplos, além de ressaltar as principais inovações de ambas as versões.

Resumo DevMan:

Em dezembro de 2010 foi lançada uma nova versão do JBoss Application Server visando prover compatibilidade com a especificação Java EE 6 além de diversas melhorias de performance e evolução de seus serviços. Em paralelo ao lançamento, o time de desenvolvedores do JBoss AS já vem trabalhando na próxima versão que está totalmente refatorada e melhorada em diversos sentidos, principalmente em facilidade de utilização e configuração.

Dentre as principais novidades do JBoss AS 6, podemos destacar a certificação no profile web da especificação Java EE 6, compatibilidade com as demais JSRs que fazem parte desta especificação e a substituição do serviço de cache e mensageria por Infinispan e HornetQ, respectivamente. Para o JBoss AS 7, destacamos a melhoria visível de performance, a inicialização on demand de serviços, os modos Standalone e Domain, e a nova interface gráfica administrativa.

Muitas empresas sempre tiveram o desejo de prover serviços robustos, de alta qualidade, com o menor tempo de resposta possível, cada vez com menor custo, seguros para seus clientes e de alta disponibilidade, afinal, qual usuário gosta de receber a famosa mensagem: “Infelizmente o Serviço não está disponível, tente mais tarde”. A especificação Java EE 6, por sua vez, sempre teve como objetivo disponibilizar uma estrutura que permitisse o desenvolvimento de aplicações corporativas que atendessem os requisitos não funcionais deste tipo de mercado sério e exigente.

Há mais de 10 anos o JBoss AS acompanha a especificação Java Enterprise Edition, atendendo e suportando os mais diversos cenários de clientes de extrema importância não apenas no Brasil, como no mundo inteiro. Além disso, oferece à maior comunidade de usuários de servidores de aplicações uma solução extensível e customizável, com seus fontes abertos para que sejam estudados e evoluídos.

A maioria dos programadores ao começar a aprender Java realizaram o download do JBoss AS, fizeram sua instalação e executaram alguns exemplos. Já para grandes corporações, podemos dizer que existe grande confiança em disponibilizar soluções rodando em JBoss, bem como grandes casos de sucesso em diversas aplicações de missão crítica em âmbito nacional e internacional. Com casos de utilização em aplicações no Brasil que chegam a mais de 170.000 usuários simultâneos.

Dentre as melhorias das versões 6 e 7, podemos destacar o esforço que o time de engenharia vem realizando principalmente em relação à performance. Cada vez mais possuímos a necessidade de atender maiores demandas, e a performance é sempre uma preocupação para qualquer aplicação que pretende estar entre as melhores em um mercado tão concorrido.

Este artigo está dividido em três partes, a primeira tem como objetivo descrever as principais novidades da especificação Java EE 6 e como elas estão sendo implementadas pelo JBoss AS 6, focando principalmente na especificação Web Profile, na implementação de CDI utilizada, denominada Weld, em Bean Validation e RESTEasy. Na segunda parte descrevemos algumas das alterações e melhorias realizadas nesta versão, como VFS3, HornetQ, Infinispan e JBossWS – CXF. E por fim, a terceira parte faz uma prévia do que virá no JBoss AS 7, especialmente com a inicialização de serviços on demand e sua nova arquitetura, fazendo com que sua inicialização ocorra em um tempo de aproximadamente três segundos.

Java EE 6

Esta primeira parte do artigo traz uma introdução à especificação Java EE 6, apontando seus destaques bem como algumas das implementações de referência utilizadas no JBoss Application Server 6.

No Java EE 6 foi adicionado o conceito de Profiles, que são conjuntos de especificações focados em determinados tipos de aplicação. Este conceito não é tão novo assim, afinal, não é de hoje que discutimos a real necessidade de termos todas as especificações implementadas sempre. Existem aplicações que não precisam de determinadas especificações, como por exemplo, JMS ou EJB, pois suas características não requerem isso. Nestes casos, não faz sentido possuir o provider de mensageria ou o container EJB se não são utilizados. Se sua aplicação é tipicamente Web, utilize somente as especificações necessárias para ela.

O primeiro profile a ser disponibilizado é o Web, o qual é um subconjunto da Java EE 6 que obrigatoriamente precisa implementar CDI, Bean Validation, EJB 3.1 Lite e outras 12 especificações. Acesse o endereço da “Página Oficial da Especificação Java EE 6 e Java EE 6 Web Profile”, no quadro Links, para saber mais detalhes sobre as 15 especificações obrigatórias no profile Web.

Um profile é criado conforme as regras do Java Community Process (JCP), por meio de uma Java Specification Request (JSR), onde existe um processo bem definido com diversas etapas. Durante a definição, ocorrem várias discussões para chegar a um acordo sobre o que deverá conter nele. Após sua aprovação, a especificação será conduzida por um Expert Group desta JSR.

Com o Java EE 6 temos também extensibilidade, ou seja, maior facilidade de integração com outros frameworks. Desta forma, basta copiar o .jar necessário para o diretório WEB-INF/lib para disponibilizá-lo em sua aplicação web. Este JAR possuirá um descritor chamado web-fragment em seu diretório META-INF, contendo configurações mínimas para o seu funcionamento. Na maioria dos casos, era necessário inserir estas configurações no web.xml, incluindo mapeamentos de servlets ou filtros.

Na nova especificação muitos legados tornaram-se opcionais, como por exemplo, os pesados Entity Beans 2.x, JAX-RPC e JAXR, deixando a especificação mais leve.

Com o objetivo de simplificar o desenvolvimento e facilitar a utilização de JSF, foram criados os Managed Beans. Agora podemos utilizar a anotação @ManagedBean tornando o arquivo faces-config.xml totalmente opcional.

Também foi adicionada a especificação para injeção de dependências, nomeada Contexts and Dependency Injection (JSR-299, CDI), a qual já foi chamada no passado de Web Beans. Ela nada mais é do que uma forma de injeção de dependências para POJOs, servlets, EJBs e managed beans, definindo o ciclo de vida para seus objetos gerenciados através de escopos. O líder desta especificação é Gavin King, mesmo criador do Hibernate e do JBoss Seam, sendo que o CDI teve, em muitos casos, sua inspiração no próprio JBoss Seam. A implementação de referência é Weld, a qual já está disponível no JBoss AS 6.

A especificação de Bean Validation, liderada por Emmanuel Bernard, tem como objetivo padronizar a validação de Java Beans. Quem está habituado a usar o Hibernate Validator não irá achar estranho.

Para a camada web, uma das novidades mais interessantes é a integração com a especificação de Servlet 3.0 (JSR-315). Esta nova especificação disponibiliza anotações para os Servlets, Filtros e Listeners, deixando as configurações do arquivo web.xml totalmente opcionais. Para uma classe se tornar um servlet, basta adicionar a anotação @WebServlet (observe um exemplo na Listagem 1). Caso queira saber mais sobre esta especificação, vale a pena ler o artigo Servlets 3.0, publicado na Java Magazine Edição 81.

Além disso, esta especificação permite que servlets sejam assíncronos, evitando que requisições sejam bloqueadas e fazendo com que sua thread possa executar outras operações de forma independente de uma resposta do cliente.

...
Quer ler esse conteúdo completo? Tenha acesso completo