• Nenhum resultado encontrado

novos operadores

No documento Java 122 (páginas 31-33)

A Expression Language possui a maioria dos operadores básicos do Java, além de outros específicos de sua própria linguagem. Basicamente estão divididos em quatro grandes grupos: aritmé- ticos (+, -, /, *, div, %, mod, --), relacionais (<, >, <=, >=, lt, gt, le,

ge, ==, !=, eq, ne), lógicos (&&, ||, and, or, !, not) e miscelânea/

outros (?:, [], . (ponto), empty). Mesmo com tantos operadores disponíveis na linguagem, até a versão anterior ainda não era possível, por exemplo, concatenar strings dentro de expressões EL. Isso mudou! A EL 3.0 introduziu três novos operadores (além do operador lambda “->”) que trazem mais capacidade e flexibilidade à linguagem de expressões.

O operador “=” pode ser utilizado para fazer a atribuição de va- lores, e até mesmo de expressões lambdas, para variáveis definidas dentro de expressões EL ou para objetos implícitos das JSPs (page-

Scope, requestScope, param, etc.). Inclusive fizemos isso em alguns

exemplos no início do artigo. A Listagem 10 traz alguns exemplos de atribuição usando o novo operador. Observe que a sintaxe é idêntica ao Java. É importante ter em mente que a expressão do lado esquerdo do operador “

=

” deve resultar em uma propriedade que permita a escrita de valor, caso contrário será lançado uma

PropertyNotWritableException. Caso a variável/bean não exista,

um novo objeto é gerado dinamicamente e o valor atribuído.

O operador “

;

” (ponto-e-vírgula) serve para separar múltiplas expressões (ou instruções) dentro de uma expressão EL composta. Nesse caso, apenas o valor da última expressão é retornado como resultado do processamento de toda a linha. Veja que no exemplo a seguir temos três diferentes segmentos separados por ponto- e-vírgula dentro da mesma expressão EL. Nos dois primeiros definimos duas variáveis e no terceiro atribuímos o retorno da invocação da função anônima para a variável resultado. Apenas o valor resultante do último trecho, ou seja, o conteúdo da variável

resultado, é de fato retornado ou renderizado. Observe o código:

${num1 = 10; num2 = 30; resultado = ((x, y) -> x + y)(num1, num2)} // imprime ‘40’

Por fim, mas não menos importante, temos o operador de conca- tenação de Strings. Embora existam formas de se atingir o mesmo objetivo nas versões anteriores, um operador para concatenação às vezes faz falta. Para cobrir esse gap, foi introduzido o operador “+=” que, apesar de não ser idêntico ao seu respectivo no Java, possui a mesma lógica. Veja o exemplo:

${“Olá “ += pessoa.nome += “ “ += pessoa.sobrenome += “, seja bem vindo!”}

Conclusão

Neste artigo conhecemos os novos recursos da Expression Lan- guage 3.0, que faz parte da recém-lançada Java EE 7. Vimos que importantes funcionalidades foram adicionadas à linguagem de expressão, tornando-a mais poderosa e flexível, mas sem perder sua simplicidade característica.

A EL deu um passo à frente da própria linguagem Java ao ofe- recer suporte a expressões lambda e operações avançadas para coleções. Funcionalidades semelhantes só estarão disponíveis na linguagem no ano que vem quando a Java SE 8 for lançada. O fato de o Expert Group da Expression Language ter se preocupado em disponibilizar esse novo recurso de forma aderente à sintaxe que será utilizada no Java 8 é bastante positivo. Isso será importante

para garantir a interoperabilidade entre ambos no futuro. Vimos também que features menores, e até baseadas em pedi- dos antigos da comunidade Java, foram implementadas nessa nova versão.

Entre tantas novidades, a que mais chama a atenção é a API standalone. Finalmente os desenvolvedores terão a possibilidade de levar a EL para fora do container web e usá-la no código Java. Inclusive, outras especificações da própria Java EE já estão fazendo isso, como é o caso da Bean Validation 1.1.

Mas, como poucos meses se passaram desde que a versão final foi lançada, ainda existe relativamente pouca documentação detalhada e atualizada sobre o assunto. Várias coisas mudaram desde que o Expert Group iniciou os trabalhos de elaboração da especificação. Por esse motivo, o leitor poderá encontrar na internet informações que não condizem com o que de fato foi publicado na versão final. Portanto, não deixe de consultar a especificação se tiver algum problema ou precisar esclarecer dúvidas. Se mesmo assim não for suficiente, procure o fórum no site do projeto GlassFish.

Listagem 10. Uso do operador de atribuição.

${requestScope.pessoa.nome = “João”} // atribuindo valor a um atributo do

request

${x = 2 + 3}

${soma = (x, y) -> x + y} // atribuindo uma expressão lambda

Marcelo a. Cenerino

marcelocenerine@gmail.com

É mestrando em Ciência da Computação e especialista pela Uni- versidade Federal de São Carlos. Trabalha com desenvolvimento de software na plataforma Java há cinco anos. É editor do site InfoQ Brasil e possui as certificações IBM SOA Associate, SCJA, SCJP, SCWCD, SCBCD, SCDJWS e SCEA.

autor

links:

Código-fonte dos exemplos demonstrados no artigo.

github.com/marcelocenerine/JavaMagazineEL

Página de download do GlassFish 4.

glassfish.java.net/download.html

Página de download do netBeans (a distribuição Java EE já contém o instalador do GlassFish 4).

netbeans.org/downloads/

Site oficial da JSR 341 – Expression language 3.0.

jcp.org/en/jsr/detail?id=341

Javadoc da aPi El 3.0.

javaee-spec.java.net/nonav/javadocs/javax/el/package-summary.html

Fórum e mailing list do projeto GlassFish.

glassfish.java.net/forum.html

Página do Projeto lambda no JDK.

openjdk.java.net/projects/lambda/

Dê seu voto em www.devmedia.com.br/javamagazine/feedback Ajude-nos a manter a qualidade da revista!

Porque este artigo é útil:

A versão 2.0 do JAX-RS adicionou uma porção de melhorias impor- tantes que simplificam o desenvolvimento e permitem a criação de aplicações mais robustas e sofisticadas. Neste artigo, um exemplo prático é utilizado para demonstrar como construir, a partir do zero, uma aplicação completa (cliente e servidor) empregando tal tecnolo- gia. O estudo realizado será útil em situações nas quais o leitor queira escrever aplicações para disponibilizar serviços baseados na arquite- tura REST e, também, caso o mesmo necessite consumir tais tipos de recursos. O exemplo discutido mostra como o framework JAX-RS 2.0 pode ser aplicado em situações corriqueiras no desenvolvimento de software, tais como, na criação de cadastros básicos (os bem conhe- cidos CRUDs) e na publicação e consumo de arquivos binários (por exemplo, fotos, imagens, relatórios PDF e etc.).

Resumo DevMan

Aprenda com um exemplo prático a desenvolver

No documento Java 122 (páginas 31-33)

Documentos relacionados