Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Atenção: esse artigo tem uma palestra complementar. Clique e assista!

De que se trata o artigo:

Examinamos a versão 6.8 do NetBeans IDE, cujos principais destaques são o suporte à recém-lançada plataforma Java EE 6 (inclusive o application Server Glassfish V3), e o suporte inicial a desenvolvimento RAD para JavaFX com o plugin JavaFX Composer.


Para que serve:

O NetBeans é um dos mais poderosos IDEs para Java, sendo tradicionalmente pioneiro no suporte a novas versões da plataforma Java EE; e mais recentemente, também à nova plataforma JavaFX. A versão 6.8 traz novidades importantes em ambas as áreas, que convidamos o leitor a conhecer.


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

O artigo é estruturado principalmente como dois tutoriais separados, o primeiro mostrando algumas novidades da Java EE 6 e do Glassfish V3, e o segundo mostrando a criação de uma GUI em JavaFX com estruturação multi-estado e transições de animação (tudo sem escrever praticamente nenhum código). Assim, o artigo será útil para interessados tanto no NetBeans, quanto no Java EE 6, quanto na JavaFX; os leitores que se interessem por apenas alguns desses temas poderão pular sem prejuízo as demais seções.

Este artigo chegará ao leitor apenas meio ano após nossa cobertura do NetBeans 6.7, em “Releases da JavaOne”, Edição 71. Portanto, a versão 6.8 veio bem mais rápido que o normal, e considerando a parcimônia de novidades do 6.7 (exceto pelo suporte ao Kenai – que não é um item de amplo interesse), poderíamos esperar uma atualização ainda menos interessante. Longe disso, porém, o NetBeans 6.8 é um update significativo, merecedor de um artigo mais longo.

O principal destaque é o suporte à plataforma Java EE 6 (JSR-316) e sua implementação no Glassfish V3, lançados junto com o IDE em 10/12/2009. Na verdade a Sun já vinha implementando suporte a ambos de forma incremental; o NetBeans 6.7 já trazia esse suporte para o Glassfish V3 Preview, mas na Edição 71 preferi não cobrir esta funcionalidade ainda muito preliminar. Para compensar, agora faremos uma revisão completa desse item. Outro destaque do último release é o suporte à JavaFX 1.2, com o novo JavaFX Composer.

Como já escrevi vários artigos sobre IDEs, procurei renovar o formato dessa vez: ao invés de um texto estruturado rigidamente com seções e subseções de acordo com os destaques do release, a maior parte do artigo foi elaborada em torno de um minitutorial que explora uma área de funcionalidade, e no qual iremos “tropeçando” em cada recurso e novidade importante do IDE. Espero assim ter conseguido um resultado mais prático e interessante.

Para melhor proveito, o leitor deve começar com uma instalação completa do NetBeans 6.8, inclusive o Glassfish V3 (ou outro container Java EE 6 suportado). Recomendo rodar tudo sobre o JDK 1.6 Update 18 ou superior.

Conheça as novidades do JDK 1.6 Update 18 na apresentação elaborada por Osvaldo como conteúdo exclusivo da revista digital.

Java EE 6 e Glassfish V3

A versão 6 da plataforma Java EE foi muito esperada, pois aprofunda as tendências positivas inauguradas pela versão 5: notavelmente, facilidade de uso (técnicas como injeção de dependência, anotações e outras medidas antiburocráticas, e racionalização de funcionalidades como EJB) e flexibilidade (com destaque, na versão 6, para o Web Profile). Em termos de implementação, o Glassfish V3 também é um release inovador, inaugurando uma arquitetura totalmente renovada com componentização OSGi, suporte a novos frameworks e linguagens, entre outras melhorias.

Vamos examinar tudo isso, então, na prática. Acione Novo Projeto>Java Web>Aplicação Web; avance até a página Servidor e configurações. Na seleção Versão do Java EE, veremos uma opção Java EE 6 Web (Figura 1). Isso é uma novidade; as outras opções são as tradicionais Java EE 5 e J2EE 1.4. Na nova opção, o Web tem a ver com o Java EE Web Profile, que é uma inovação da especificação Java EE 6: esta suporta “perfis” que são subsets oficiais da plataforma completa. No Java EE 6 o único profile especificado é o Web, criado para containers mais simples, orientados a aplicações web mas sem funcionalidades de back-end avançadas como JMS, EJBs remotos ou web services SOAP. É verdade que sempre tivemos estes containers mais simples (como o Tomcat e Jetty), mas estes não eram certificados, e não era possível criar uma aplicação Java Web tendo certeza que qualquer container web teria todas as APIs e serviços necessários.

Figura 1. Configuração de projeto Java EE 6 Web.

A versão do Glassfish que vem embutida no NetBeans é a completa – funcionaria do mesmo jeito com aplicações web, mas queremos dar uma olhadinha nas novidades, não? Se for do seu interesse, ou se você nunca usou o Glassfish, puxe o freio de mão por uns minutos e leia o quadro “Instalando o Glassfish e testando o Web profile”.

Instalando o Glassfish e testando o Web Profile

O Glassfish V3 Web Profile pode ser obtido como parte do Java EE 6 SDK / Sun Glassfish Enterprise Server (SGES), em java.sun.com/javaee/downloads. Se você já tem a distribuição completa, baixe apenas o Independent Component Downloads>Sun GlassFish Enterprise Server v3 Web Profile, que exclui javadocs, exemplos e tutorial. Outra opção é a distribuição de glassfish.dev.java.net/downloads/v3-final.html. Ambas são quase idênticas, e podem ser usadas gratuitamente inclusive para fins comerciais. O SGES é a distribuição “profissional” com opções de suporte e outros serviços comerciais, e o Glassfish é a distribuição livre “pura” com suporte da comunidade.

O Web Profile para Windows tem 32Mb, o que é pequeno se compararmos com os 50Mb da distribuição completa. Se você não conseguir executar os instaladores específicos para sua plataforma – no meu laptop Windows 7 o instalador para Windows não deu jeito de funcionar – basta pegar a distribuição ZIP em glassfish.dev.java.net.

Integrar o Glassfish Web Profile ao NetBeans é muito simples: Em Ferramentas>Servidores>Adicionar servidor, basta escolher o diretório de instalação. Se você instalou também o Glassfish incluído na distribuição do NetBeans 6.8, terá um servidor Domínio do Glassfish V3 já configurado. Na verdade, esses itens cadastrados como “servidores” são domínios, não necessariamente servidores independentes. Pode-se, assim, configurar de forma separada vários domínios de um mesmo setup do Glassfish (ou outro que seja suportado e possua conceito similar). Por default, cada servidor do Glassfish tem apenas um domínio chamado domain1.

Para testar a instalação, em Serviços>Servidores, selecione o servidor configurado e comande Iniciar. O NetBeans iniciará automaticamente o JavaDB. No meu sistema, o servidor normal (Java EE 6 completo) inicializa em 10 segundos, mas o Web Profile levantou em menos de metade desse tempo:


  07/01/2010 23:16:40 com.sun.enterprise.admin.launcher.GFLauncherLogger info
  …
  [#|2010-01-07T23:16:44.357-0200|INFO|glassfishv3.0|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=22;_ThreadName=Thread-1;|Started bundle: file:/C:/Java/GlassfishWeb/glassfish/modules/autostart/osgi-web-container.jar|#]

Além disso, o Web Profile consumiu 62Mb de memória ao ser iniciado, comparando com 75Mb do servidor completo. Esses testes são uma aproximação rudimentar do mundo real, pois são realizados sem nenhuma aplicação instalada nem qualquer recurso (data sources, filas etc.) configurado. Ainda assim, ilustram a vantagem do Web Profile de ser mais leve que um container tradicional.

Java EE 6 Web Profile versus Servidores Web tradicionais

Eu poderia citar também que, na mesma máquina, o Tomcat 6 inicia em 2 segundos e consome só 28Mb, também sem nada implantado. (Essa preocupação pode parecer desnecessária numa era de gigabytes, mas está voltando à moda devido à crescente adoção de virtualização, eficiência energética e cloud computing: traduzindo, rodar o maior número possível de containers independentes no mesmo servidor físico.)

Os containers web tradicionais (compatíveis com JavaEE <= 5) são menores e mais leves, mas a diferença de funcionalidade é enorme. O Java EE 6 Web profile suporta várias APIs/tecnologias adicionais, como EJB 3.1 Lite (sem invocações remotas), JPA 2.0, e web services REST (JAX-RS). Os containers web mais simples também não possuem outras características não exigidas pelo padrão Java EE, mas disponíveis no Glassfish e outros containers modernos, tais como modularização OSGi, ou recursos avançados de administração e monitoração. É claro, você pode acrescentar a maioria desses e outros recursos ao seu servidorzinho – por exemplo, instalando o EclipseLink ou Hibernate Entity Manager para ter JPA, etc. – mas ao fazer isso (e implantar aplicações que usem estes recursos), a vantagem de “leveza” vai sendo rapidamente reduzida.

No final, o Java EE 6 Web Profile leva vantagem por ter uma arquitetura mais robusta, e por unificar todas as APIs que a grande maioria das aplicações web precisam num pacote padronizado. A padronização é importante, pois permite que estes containers sejam certificados como compatíveis com o padrão Java EE 6, e esta certificação é uma garantia importante de portabilidade – e até de qualidade, pois a certificação exige passar numa enorme suite de testes (o Java EE 6 TCK).

...

Quer ler esse conteúdo completo? Tenha acesso completo