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.
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.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:
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() }
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:
...
para denotar uma
lista de parâmetros de tamanho variável, sem a necessidade de se usar
explicitamente uma coleção para agrupá-los.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".
java.util.concurrent
, java.util.concurrent.atomic
e java.util.concurrent.locks
.-Xlint
para aviso sobre construções válidas, porém
suspeitas e freqüentemente problemáticas.© 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.