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

De que se trata o artigo:

O artigo trata das novidades do Java 7, nova versão da plataforma e linguagem de programação, agora sob o comando da Oracle. Em particular, o artigo aborda informações trazidas durante o evento de lançamento promovido pela Oracle no dia 7 de julho e apresenta as melhorias na linguagem trazidas pelo projeto Coin, o framework Fork/Join para processamento paralelo, a nova API para manipulação de arquivos NIO.2 e o suporte a linguagens dinâmicas na máquina virtual Java.


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

O tema é útil para qualquer profissional de TI que trabalha com a plataforma Java, pois trata da nova versão a ser lançada em breve e que provavelmente será adotada a médio ou longo prazo por empresas e demais organizações de desenvolvimento de software que utilizam Java em seus projetos. O artigo provê uma visão geral das novidades, facilitando a atualização de conhecimentos para desenvolvedores Java.

Resumo DevMan:

Após cinco anos sem uma nova versão, a Oracle, após a aquisição da Sun, lança o Java 7 em um evento realizado em três cidades e transmitido via Web para todo o mundo (Figura 1). Apesar de não se tratar de uma versão revolucionária, como era de se esperar após tanto tempo, o Java 7 traz uma série de novidades, dentre as quais são destaques neste artigo: pequenas melhorias de linguagem propostas pelo projeto Coin / JSR 334 para melhorar a legibilidade e confiabilidade de código escrito em Java (Listagens 1 a 8); um framework para programação paralela que utiliza a estratégia de divisão e conquista para ocupar todas as unidades de processamento disponíveis em computadores modernos hoje – o Fork/Join / JSR 166 (Listagens 9 a 11); a NIO.2 / JSR 203 – uma nova API para manipulação de arquivos e sistemas de arquivo, mais completa, consistente e extensível (Listagens 12 a 14); e, finalmente, a adição da nova instrução bytecode invokedynamic à JVM para melhorar o suporte a linguagens de programação dinâmica / JSR 292.

Recentemente a Oracle lançou a tão esperada nova versão da plataforma Java SE – ou seja, máquina virtual, linguagem de programação e API – o Java 7. Com novas funcionalidades que vão de evoluções na máquina virtual (para suporte a linguagens dinâmicas) a melhorias nos MBeans, a nova versão traz diversas novidades, porém menos do que eram esperadas pelos desenvolvedores nos últimos anos. No início de julho foi disponibilizada uma versão Developer Preview e, finalmente, no dia 28/07 a versão final do Java 7 estava disponível para download no endereço que se encontra na seção Links.

Em um evento de lançamento, a Oracle reuniu seus desenvolvedores, membros da comunidade Java e empresas parceiras para promover não só a nova versão como a plataforma Java em geral. O evento contou com quatro sessões técnicas que se aprofundaram nos detalhes das novidades mais relevantes do Java 7: o projeto Coin, o framework Fork/Join, a nova API para manipulação do sistema de arquivos e a evolução da máquina virtual para suporte a múltiplas linguagens de programação.

No final de julho, porém, desenvolvedores do projeto Apache Lucene identificaram uma falha na versão inicial do Java 7, devido a uma otimização feita pelo compilador HotSpot em alguns casos específicos. Um dos desenvolvedores detalhou a história em seu blog (veja Links). O bug não deve afetar a maioria dos desenvolvedores, porém se você utiliza os frameworks Apache Lucene/Solr, o upgrade ao Java 7 não é aconselhável. A Oracle se pronunciou, prometendo uma solução no próximo release do Java 7 (Update 2). Enquanto a correção não sai, é possível desabilitar a otimização que causa a falha utilizando a opção da JVM -XX:-UseLoopPredicate.

Mesmo com esta falha, a nova versão de Java traz uma série de benefícios: é mais eficiente, mais fácil de escrever e de ler e pode ser mais bem integrada com linguagens dinâmicas, muito utilizadas para aumentar a agilidade de equipes de desenvolvimento. Com o passar do tempo, surge a necessidade de criação de novas e melhores aplicações e, portanto, é fundamental que a plataforma Java, em todos os seus aspectos (linguagem, JVM, frameworks, etc.) acompanhem esta evolução. Neste sentido, o Java 7 é uma ótima notícia para empresas e desenvolvedores que utilizam sua tecnologia.

Além disso, a Oracle firma seu comprometimento em investir na evolução do Java, anunciando inclusive os planos para o Java 8, que incluem um padrão para modularização da plataforma, facilitando o gerenciamento das dependências de um projeto, inclusão de closures, operações em lotes, criação de um framework para aplicações Swing, facilitando o trabalho de quem desenvolve para o desktop, dentre outras novidades.

Este artigo primeiramente apresenta um resumo do que foi abordado durante o evento de lançamento do Java 7, dando uma visão geral desta nova versão da plataforma Java. Em seguida, serão apresentadas as quatro novidades principais da plataforma citadas acima.

O Evento de Lançamento

No dia 7/7, data escolhida propositalmente por motivos de marketing, a Oracle realizou um evento de lançamento do Java 7 chamado “Moving Java Forward” (Aperfeiçoando o Java). O evento foi conduzido em três locais diferentes: na sede da Oracle em Redwood Shores, Califórnia (EUA), em Londres (Inglaterra) e em São Paulo, além de ser transmitido ao vivo para o mundo todo via Internet (webcast). No Brasil, o evento foi comandado por Bruno Souza, presidente do SouJava, que recentemente foi eleito membro do comitê executivo do Java SE/EE no JCP. A Figura 1 mostra um dos momentos do evento em São Paulo e o vídeo completo do lançamento pode ser visto no site da Oracle (veja Links).

Figura 1. Bruno Souza e os coordenadores do SouJava no evento de lançamento em São Paulo (adaptação da foto de Loiane Groner, disponível sob a licença Creative Commons BY-SA 2.0).

O JCP – Java Community Process ou Processo da Comunidade Java – é o meio pelo qual a comunidade Java (empresas, organizações sem fins lucrativos e desenvolvedores) propõe, desenvolve e publica padrões para tecnologias relacionadas a Java. O comitê executivo, composto por 16 membros, é o órgão que seleciona os pedidos de especificação que serão desenvolvidos e posteriormente os aprova para revisão pública e para publicação final. Tais pedidos de especificação são conhecidos pela sigla JSR, que significa Java Specification Request (Pedido de Especificação Java).

Na abertura do evento, um vídeo mostra números interessantes sobre o alcance da plataforma Java para estabelecer o contexto do lançamento: Java executa em 97% dos computadores de mesa (desktop) corporativos e, segundo o Gartner (2010), em 1.1 bilhões de computadores no total; está presente em 3 bilhões de telefones celulares (com mais de 45 mil aplicativos desenvolvidos) e 5 bilhões de Java Cards. Java é a escolha número 1 para novos projetos open source de acordo com o índice TIOBE (veja Links), com mais de 9 milhões de programadores ao redor do mundo, segundo o Evans Data Corp.

Outras informações interessantes sobre o contexto geral do lançamento foram apresentadas ao longo do evento:

  • A última atualização da plataforma Java, o Java 6, aconteceu 5 anos atrás, fazendo desta versão a mais esperada da história do Java. A compra da Sun pela Oracle certamente contribuiu para esta demora;
  • No momento do lançamento, Java encontrava-se sob o comando da Oracle há 18 meses. Atualmente o time de desenvolvimento do Java é o maior da história da plataforma, mostrando o comprometimento da Oracle com a tecnologia (foi citado que a companhia possui bilhões de dólares em negócios envolvendo o Java);
  • Outra demonstração do comprometimento da Oracle com o Java foi a divulgação de eventos promovidos pela empresa, como o JavaOne em São Francisco de 2 a 6 de Outubro deste ano (veja Links), e do lançamento de uma revista bimestral gratuita que se chama Java Magazine (assim como a revista brasileira). A revista é enviada por e-mail bimestralmente a quem se cadastrar pelo seu site (veja Links);
  • A versão 7 foi a primeira feita inteiramente sobre a OpenJDK, ou seja, em código aberto. Isso promoveu uma série de contribuições open source externas, como o framework Fork/Join (por Doug Lea e seus colegas), o motor de rasterização gráfica 2D baseado no XRender (por Clemens Eisserer e Dmitri Trembovetski), o sintetizador de som Gervill (por Karl Helgason, que substituiu a solução proprietária anterior com uma aberta e de melhor desempenho), etc.;
  • Também pela primeira vez na história do Java uma nova instrução bytecode foi adicionada à JVM (invokedynamic). A JVM começa então a ganhar novas funcionalidades, independentemente da linguagem e do compilador Java, com base no que outras linguagens que serão executadas sobre a JVM precisam. No futuro, isso poderá facilitar trazer funcionalidades destas outras linguagens para a linguagem Java;
  • Casos de uso da plataforma Java foram apresentados por grandes empresas como o Royal Bank of Scotland (clusters com 15 mil CPUs e capacidade de memória medidas em TeraBytes rodando Java), Travelex (que recentemente foi adquirida pela Western Union) e Riot Games (criadora do League of Legends, jogo multi-player com a maior base de usuários do mundo, utiliza Java em seus servidores). Grandes empresas de TI, como Accenture, IBM e HP, também deram seu suporte à plataforma Java durante o evento. A Eclipse Foundation também marcou presença com um vídeo no qual anunciou suporte ao Java 7 por meio de um plug-in.
  • ...
    Quer ler esse conteúdo completo? Tenha acesso completo