BT

Lançamento do Java 7 em 07/07: muitas mudanças e um evento internacional

por Wellington Pinheiro em 04 Jul 2011 |

No próximo dia 7 de julho acontecerá o lançamento oficial do Java 7 que, depois de uma longa espera (quase cinco anos), trará várias mudanças importantes para a plataforma. De forma resumida, as alterações ocorrerão nos seguintes itens e especificações (JSRs): Máquina Virtual (JSR 292 e JSR 202), Linguagem (JSR 334), Class Loader, Concorrência, I18n, I/O (JSR 203), JDBC, Swing, Web (relacionadas às especificações JSR 206, JSR 222 e JSR 224) e JavaDoc.

Para celebrar o lançamento, acontecerão três eventos simultâneos, em São Francisco, São Paulo e Londres, nos quais serão apresentadas as novidades da nova versão e também os caminhos futuros da plataforma. Em São Paulo, o lançamento será coordenado pelo SouJava como parte da trilha de Java do The Developer's Conference (TDC 2011). Os interessados em participar deverão se inscrever na conferência em qualquer uma das trilhas disponíveis no dia 7 de julho. Quem não puder estar presente pessoalmente, poderá acompanhar as atividades de lançamento via web.

A seguir são descritas as principais mudanças no Java 7, agrupadas por JSR.

A JSR 203 ("APIs de New I/O adicionais para a plataforma Java, ou 'NIO.2' ") traz diversas melhorias em funcionalidades de I/O da plataforma. A mudança central proposta nessa JSR é a criação da classe java.nio.file.Path, que deverá ser a sucessora da classe java.io.File. Apesar de estar sendo utilizada nos últimos 10 anos (nos quais sofreu algumas atualizações), a classe File possui limitações importantes:

  • A maioria dos métodos devolve um valor booleano; quando a operação executada pelo método falha, somente é retornado um false, não sendo fornecida informação alguma sobre a falha;
  • A classe não funciona bem com links simbólicos (na verdade, essa é uma característica do pacote java.io inteiro);
  • Há limitações e lentidão para acesso às propriedades de arquivos e diretórios;
  • Não permite acessar alguns tipos de sistemas de arquivos, como sistema de arquivos em memória;
  • Ausência de métodos para copiar ou mover arquivos.

Essas limitações são resolvidas através da JSR 203. Serão também disponibilizadas novas funcionalidades de I/O, como o acesso assíncrono para sockets e arquivos, o suporte a multitarefa com sockets, assim como mudanças nas APIs de buffers de I/O.

Através da JSR 223 ("Scripting para a Plataforma Java") foi incluído no Java 6 o suporte a linguagens de script, tais como PHP, Python, Ruby, JavaScript, Groovy, entre outras. Um tópico não tratado nessa JSR, no entanto, é a chamada de métodos sem informação de tipos, muito comum em linguagens de script. No caso, a limitação reside nas instruções do bytecode, que esperam a informação completa dos tipos de parâmetros e do retorno dos métodos. Até o Java 6, esse problema tinha que ser resolvido de alguma forma pelos implementadores das linguagens de script.

A JSR 292 ("Suporte a Linguagens Dinamicamente Tipadas na Plataforma Java") resolve esse problema e complementa a JSR de Scripting, através da introdução da nova instrução de bytecode, invokeDynamic. A instrução invokeDynamic trata de forma diferente a chamada dos métodos, sendo capaz de fazer a resolução da chamada com informações obtidas somente em tempo de execução. Com essa modificação, o bytecode fica mais adequado para o trabalho com linguagens de tipagem dinâmica (como linguagens de scripting), permitindo o aumento de desempenho e ampliando ainda mais as possibilidades de implementação de novas linguagens que rodam na JVM.

Outras mudanças que certamente agradarão aos desenvolvedores foram feitas pelo projeto Coin (um subprojeto do OpenJDK), através da JSR 334 ("Pequenos Aperfeiçoamentos na Linguagem Java") que implementa uma série de pequenas alterações, com destaque para:

  • Suporte ao uso de strings em condições do switch;
  • Inferência na criação de objetos com tipos genéricos;
  • Simplificação na invocação de métodos com parâmetros varargs e tipos genéricos;
  • Gerenciamento automático de recursos, tais como conexões a bancos de dados, I/O, entre outros;
  • Possibilidade de tratar diversas exceções em um mesmo catch (Multicatch).

Essas alterações (que já foram exploradas em detalhes em um artigo no InfoQ Brasil) certamente ajudarão a diminuir a verbosidade da linguagem Java, além da quantidade de erros gerados no tratamento de exceções.

Mais informações sobre o Java 7 podem ser obtidas nos seguintes links:

A trilha de Java no TDC 2011 ainda está com inscrições abertas. O evento internacional de lançamento transmitido ao vivo será realizado entre 13:00 e 14:00.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Continuidade by Fernando Ribeiro

Por mais que o lançamento tenha demorado, parece ter valido a pena, e que venha o Java 8!

Comprometimento by Eder Magalhaes

Além de preparar a casa para o Java 8, o que é mto bom, esse lançamento tem outro ponto positivo: a Oracle cumpriu com o que foi planejado. Prova o interesse da Oracle no Java.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

2 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT