Por que eu devo ler este artigo:A EL é uma linguagem de expressões utilizada na criação de páginas web dinâmicas na plataforma Java EE. A versão recém-lançada (3.0) introduziu diversas melhorias e funcionalidades que tornam a linguagem mais poderosa e produtiva. Entre as principais novidades estão o suporte a expressões lambda, operações para manipulação de coleções e a API standalone, a qual leva toda a capacidade da EL também para fora do container web. O artigo aborda com detalhes esses e outros assuntos e apresenta exemplos de código que mostram o uso de cada funcionalidade.

O tema é útil para desenvolvedores Java que utilizam a Expression Language no dia a dia para construir páginas web dinâmicas utilizando puramente JSPs e/ou frameworks web como o JSF. Também pode ser útil para aqueles que enxergavam potencial na EL, mas nunca puderam utilizá-la dentro do código Java.

No último mês de junho foi lançada a Java EE 7 trazendo uma série de novidades para a plataforma enterprise. Dentro desse pacote está a nova versão 3.0 da Expression Language (ou simplesmente EL).

A EL 3.0 foi especificada pela JSR-341 e teve Kin-man Chung como líder do Expert Group. Esta é a primeira vez que a EL é tratada por uma JSR (Java Specification Request) independente. Nas versões anteriores ela fazia parte da JSR do JSTL e, mais recentemente, do JSP. Na última versão a EL já havia começado a dar sinais de uma iminente separação quando foi publicada em uma especificação apartada, porém ainda dentro da mesma JSR do JSP.

Essa mudança reflete a visão do Expert Group de que a EL é útil por si só e mostra o quanto ela se tornou importante dentro da Java EE, inclusive sendo integrada a outras tecnologias fora do contexto web, como Bean Validation e CDI.

A nova versão da EL contempla adições significativas na linguagem de expressões, principalmente por conta do suporte a expressões lambda e das funcionalidades para manipulação de coleções inspiradas no modelo de programação funcional que está sendo incorporado à Java SE 8, cujo lançamento está previsto para 2014.

A partir de agora os desenvolvedores poderão ordenar, filtrar e transformar coleções de forma bastante simplificada utilizando a EL e expressões lambda.

Outro ponto bastante importante é que a EL 3.0 desacopla a linguagem de expressões das tecnologias web (JSP e JSF) e cria um grande potencial ao trazer suas funcionalidades para fora do container Java EE através da API standalone. Com essa nova API os desenvolvedores poderão escrever e resolver expressões EL dentro do bom e velho código Java.

Além dessas principais mudanças, a EL 3.0 traz outros recursos e melhorias à linguagem de expressões a fim de atender pedidos antigos da comunidade e maximizar a produtividade dos desenvolvedores. Entre essas melhorias estão a introdução de novos operadores (incluindo um para concatenação de Strings) e o acesso a construtores e membros estáticos de classes Java.

Este artigo é mais um da série que a Java Magazine está publicando para levar ao leitor as novidades da Java EE 7. Nele veremos um pouco do histórico e da importância da linguagem de expressões no contexto do desenvolvimento web e em seguida mergulharemos nas novas features incorporadas na EL 3.0.

O código completo dos exemplos apresentados neste artigo está disponível no GitHub (veja a seção Links).

Para executar os exemplos e testar as features por conta própria, baixe e instale o servidor GlassFish 4 e também uma IDE de sua preferência que ofereça suporte à Java EE 7. O NetBeans é uma das IDEs que já oferecem suporte e, além disso, traz alguns exemplos de uso da EL 3.0 e de outras tecnologias da Java EE 7. Estando tudo preparado, mãos à obra!

Motivação e histórico

Quem já trabalhou com desenvolvimento de aplicações web em Java, seja utilizando puramente Servlets + JSPs ou mesmo com frameworks MVC server-side, como Struts, Spring MVC, VRaptor, JSF, entre outros, muito provavelmente já utilizou a Expression Language da Java EE para produzir páginas web dinâmicas.

A Expression Language é uma linguagem de programação simples que contém operadores, uma sintaxe própria e palavras reservadas. Ela nasceu como parte da versão 1.0 da JSTL (JavaServer Pages Standard Tag Library) e posteriormente foi adotada e expandida pela especificação JSP 2.0. Seu objetivo era fornecer uma maneira fácil de construir páginas dinâmicas, acessando e manipulando objetos Java, sem que para isso fosse necessário escrever scriptlets.

Para quem não se lembra (melhor nem lembrar mesmo!), scriptlets são aqueles trechos de código Java criados dentro das páginas JSPs entre tags <%...%> para gerar HTML dinamicamente e que tornavam as aplicações muito difíceis de entender e de manter, principalmente para designers de front-end que não conheciam código Java. Por isso os scriptlets são considerados uma má prática há bastante tempo. Para efeitos de comparação, a Listagem 1 ...

Quer ler esse conteúdo completo? Tenha acesso completo