Introdução ao Eclipse 3.1 e ao J2SE 5.0

O Eclipse 3.1 inclui suporte completo para os novos recursos do J2SE 5.0 (nome de código "Tiger"). Uma das conseqüências mais importantes desse suporte é que você pode não notá-lo de maneira nenhuma, tudo o que você espera que funcione para o J2SE 1.4, incluindo edição, compilação, depuração, correções rápidas, recriação, ações de origem, procura, etc., funcionará de maneira transparente com os novos tipos e sintaxe do J2SE 5.0. Neste documento, apresentaremos alguns dos recursos mais interessantes que os usuários do Eclipse encontrarão ao trabalhar com o J2SE 5.0.

Pré-requisitos

Para desenvolver código compatível com o J2SE 5.0, será necessário um J2SE 5.0 JRE (Java Runtime Environment). Se você iniciar o Eclipse pela primeira vez utilizando um J2SE 5.0 JRE, ele será utilizado por padrão. Caso contrário, será necessário utilizar a caixa de diálogo JREs Instalados (Windows > Preferências > Java > JREs Instalados) para registrá-lo no Eclipse.

Este documento apresenta alguns dos novos recursos de idioma no J2SE 5.0 muito brevemente, mas ele não é um tutorial apropriado para esses recursos.

Nível de Compatibilidade com o Compilador

Para utilizar os novos recursos do J2SE 5.0, você deve estar trabalhando em um projeto que tenha um nível de conformidade 5.0 ativado. Novos projetos podem ser marcados facilmente como compatíveis com o 5.0 na primeira página do assistente Novo > Projeto:

Assistente de Novo Projeto

Para converter um projeto J2SE 1.4 em J2SE 5.0, você pode simplesmente:
  1. Verificar se você tem um JRE do J2SE 5.0 instalado.
  2. Começar a utilizar recursos do 5.0 no código.
  3. Quando um erro do compilador for sinalizado, utilize a Correção Rápida para atualizar o nível de conformidade do projeto:

    Correção Rápida para Ativar o J2SE 5.0

Para obter mais controle de ajuste fino, o nível de conformidade do compilador pode ser configurado globalmente para um espaço de trabalho (Windows > Preferências > Java > Compilador) ou individualmente para cada projeto (a partir do menu de contexto do projeto, escolha Propriedades > Compilador Java). Projetos com níveis diferentes de conformidade podem coexistir no espaço de trabalho e depender um do outro. Também é possível fazer um ajuste fino dos avisos e erros do compilador produzidos para cada projeto, utilizando Propriedades > Compilador Java > Erros/Avisos > Opções do J2SE 5.0

Tipos Genéricos

Tipos genéricos permitem que os objetos da mesma classe operem de maneira segura em objetos de diferentes tipos. Por exemplo, eles permitem garantias de tempo de compilação de que um List<String> sempre contém Strings, e um List<Integer> sempre contém Integers.

Em qualquer lugar onde o Eclipse manipula um tipo não genérico, ele pode manipular um tipo genérico.

Além disso, uma nova recriação foi incluída: Inferir Argumentos de Tipo Genérico pode inferir parâmetros de tipo para cada referência de tipo em uma classe, pacote ou em um projeto inteiro.

Chamando Inferir Argumentos de Tipo Genérico

Chamando os produtos de recriação:

Inferir Argumentos de Tipo Genérico Chamado

O Eclipse 3.1 fornece novas opções ao procurar por referências a tipos genéricos. Considere este exemplo:

Exemplo com quatro instanciações parametrizadas diferentes da Lista

A seleção da referência a List<Integer> e o uso de Procurar > Referências > Projeto realçará os tipos de lista em todas as quatro linhas:

Procurar Sem Filtros

Utilizando o menu Visualização de Procura, os resultados podem ser filtrados:

Incompatível com Filtro deixa apenas referências a tipos que são compatíveis por designação com o tipo selecionado:

Incompatível com Filtro

Filtro Inexato deixa apenas as referências a tipos com a mesma assinatura exata:

Filtro Inexato

Anotações

Metadados de conexão de anotações sobre como tipos e métodos Java são utilizados e documentados para a origem Java e podem afetar a compilação ou ser consultados em tempo de execução. Por exemplo, @Override disparará um aviso do compilador se o método anotado não substituir um método em uma superclasse:

Anotação de Substituição

Tudo o que pode ser feito com um tipo Java, é possível fazer com uma anotação:

Uma anotação muito útil com suporte total no Eclipse é @SuppressWarnings. Por exemplo, considere um método privado que não é utilizado atualmente mas que você prefere não excluir:

Aviso: Método Privado Não Utilizado

Chamando a correção rápida nas propostas de aviso, incluindo uma anotação @SuppressWarnings:

SuppressWarnings Proposta

A seleção da correção rápida inclui a anotação. O compilador do Eclipse respeita a anotação removendo o aviso no foo:

SuppressWarnings Inserida

Enumerações

Enumerações são tipos que são instanciados em tempo de execução por um conjunto de objetos finito e conhecido:

enum type

Novamente, tudo o que pode ser feito para uma classe Java pode ser feito para uma enumeração:

Autoboxing

Autoboxing e auto unboxing permitem sintaxe elegante quando tipos primitivos são designados ou recuperados de referências a Objetos:

autoboxing Realçado

Os recursos de manipulação da origem do Eclipse manipulam autoboxing de maneira transparente, fornecendo os tipos corretos para novas variáveis locais e assistentes de código corretos. Para entendimento do código, também é possível sinalizar instâncias de autoboxing ou autounboxing como avisos de compilação (Janela > Preferências > Java > Compilador > Erros/Avisos > Opções do J2SE 5.0 > Conversões de boxing e unboxing) ou realçá-las utilizando coloração de sintaxe (Janela > Preferências > Java > Editor > Coloração de Sintaxe > Java > Expressões Auto(un)boxed):

Ativando Realce para autoboxing

Avançado para Loop

Para o caso comum de operação em cada elemento de uma matriz ou coleta em turno, o J2SE 5.0 permite uma nova sintaxe de limpeza. O Eclipse 3.1 fornece um gabarito de código "foreach" que pode adivinhar automaticamente a coleta a ser repetida:

Gabarito foreach Proposto

Escolhendo os produtos do gabarito:

Gabarito foreach inserido

O Eclipse 3.1 também fornece uma assistência rápida "Converter em Avançado para Loop" para fazer o upgrade o estilo 1.4 for loops quando possível.

Outro

Todos os outros recursos do J2SE 5.0 são manipulados de maneira flexível pelas ferramentas de edição, procura e código do Eclipse:

Boa codificação!