Prepare-se para o Tigre - A nova versão de Java

M�rcio d'�vila, 12 de julho de 2004. Revis�o 3, 29 de agosto de 2005.
Categoria: Programa��o: Java

A nova vers�o da linguagem Java e suas APIs b�sicas est�o muito pr�ximas de serem oficialmente lan�adas, no quinto release do SDK padr�o de Java, o J2SE 5 (anteriormente 1.5), codinome "Tiger" (Tigre). O J2SE 5.0 Beta 2 est� dispon�vel desde junho de 2004.

Esta ser� provavelmente a mais rica e importante atualiza��o da linguagem Java desde o J2SE 1.2, que coincidiu com a segunda gera��o da plataforma Java (o "Java 2" que foi dividido em J2SE, J2EE e J2ME). Um indicativo da import�ncia da nova vers�o agora � que a Sun passou a denomin�-la J2SE 5.0, ao inv�s de 1.5 se seguisse o formato de numera��o usado at� a vers�o 1.4. O J2SE release 5 inclui 15 Java Specification Requests (JSRs) componentes, gerenciados pelo Java Community Process (JCP), mecanismo oficial de participa��o e debate da comunidade na evolu��o da Plataforma Java.

V�rios recursos foram criados para facilitar a programa��o Java e trazer maior poder de express�o, de forma a tornar a escrita de c�digo Java ao mesmo tempo mais flex�vel e mais simples. Isso n�o s� traz um c�digo conciso e preciso como tamb�m reduz a chance de erros introduzidos em tarefas repetitivas e ma�antes.

Generics (Gen�ricos)
Permite especificar uma classe ou hierarquia que limita o tipo dos objetos que podem estar contidos em uma cole��o. A verifica��o de tipo � feita em tempo de compila��o e dispensa o uso de cast na atribui��o e obten��o de elementos, garantindo maior precis�o e simplicidade. O recurso � similar (mas n�o igual) aos Templates de C++.
Autoboxing (Env�lucro autom�tico de tipos primitivos como objetos)
"Boxing" � o env�lucro de um tipo primitivo como objeto. Autoboxing � portanto a convers�o autom�tica entre um tipo primitivo e um objeto da sua classe-casca (wrapper) correspondente — como o tipo int e a classe Integer — quando necess�rio. Facilita o uso de tipos primitivos em situa��es onde s�o esperados objetos (tipicamente em elementos de cole��o) e vice-versa.
Comando for para itera��es
O comando for foi melhorado para suportar a seguinte sintaxe simplificada para itera��o de elementos de um array ou cole��o: for (ClasseElemento elem : lista). Esta nova sintaxe costuma ser denominada for-melhorado (enhanced-for) ou para-cada (for-each).

Um exemplo do tipo antes-e-depois esclare facilmente a forma e as vantagens do uso destes recursos:

Antes:
List lista = new ArrayList();  // n�o restringe tipo dos elementos
lista.add(new Integer(25));  // boxing: converter int 25 em objeto Integer
lista.add(new Integer(33));  // boxing: converter 33 em Integer
int total = 0;
for (Iterator it = lista.iterator(); it.hasNext();) {  // criar e percorrer iterador
	Integer elem = (Integer)it.next();  // itera��o next() e cast expl�cito (Integer)
	total += elem.intValue();  // unboxing: intValue()
}
Depois:
List<Integer> lista = new ArrayList<Integer>();  // generics: define tipo do elemento Integer
lista.add(25);  // autoboxing
lista.add(33);  // autoboxing
int total = 0;
for (Integer elem : lista) {  // for() melhorado: itera��o impl�cita, dispensa cast
	total += elem;  // autoboxing: unboxing impl�cito
}

Outros novos recursos da linguagem deixar�o mais confort�veis e aliviados os programadores que migraram de C/C++ para Java:

Varargs (N�mero vari�vel de argumentos)
Similar ao existente em C/C++, Java passa a suportar na defini��o de par�metros de um m�todo a sintaxe ... para denotar uma lista de par�metros de tamanho vari�vel, sem a necessidade de se usar explicitamente uma cole��o para agrup�-los.
Entrada e Sa�da Formatada
Com a introdu��o de varargs, os recursos de entrada e sa�da formatadas, existentes em C com as fun��es scanf e printf (aus�ncias sempre reclamadas pelos programadores advindos de C/C++), puderam ser implementados em Java pelas classes Scanner e Formatter do pacote java.util, incluindo — claro — o m�todo printf(), com melhorias em rela��o ao C como suporte ao tipo Date e a mudan�a de linha multi-plataforma %n.

Al�m da facilidade de desenvolvimento, existem tamb�m novidades e melhorias visando escalabilidade e desempenho, monitoramento e gerenciabilidade. O desenvolvimento de interface gr�fica desktop tamb�m foi agraciado com os temas de apar�ncia e comportamento gr�fico (look-and-feel) GTK/Linux e Windows XP. Foram introduzidas tamb�m outras evolu��es diversas, como o suporte aos padr�es XML mais atuais e a introdu��o dos poderosos RowSets em JDBC. As refer�ncias deste texto apresentam links recomendados para o aprofundamento nos detalhes e novidades da nova vers�o J2SE 5 "Tiger".

Refer�ncias

Refer�ncias sobre Generics


Creative Commons License

© 2003-2020, Márcio d'Ávila, mhavila.com.br, direitos reservados. O texto e c�digo-fonte apresentados podem ser referenciados, distribu�dos e utilizados, desde que expressamente citada esta fonte e o cr�dito do(s) autor(es). A informa��o aqui apresentada, apesar de todo o esfor�o para garantir sua precis�o e corre��o, � oferecida "como est�", sem quaisquer garantias expl�citas ou impl�citas decorrentes de sua utiliza��o ou suas conseq��ncias diretas e indiretas.