InfoQ

InfoQ

Notícias

Meus Favoritos

Faça oLogin ou Cadastre-se para ativar o recurso de favoritos por tempo ilimitado.

O conteúdo foi adicionado aos favoritos!

Houve um erro ao adicionar aos favoritos! Por favor, tente novamente.

JDK 7 milestone 5 inclui Atualizações de Concorrência e Performance, mas ainda não está Completo

Postado por Charles Humble , traduzido por Rafael Riberto em 07 Dez 2009

Seções
Desenvolvimento,
Arquitetura Corporativa,
Arquitetura e Design
Tópicos
Java ,
Design de Linguagens ,
Programação ,
Plataformas ,
Linguagem
Tags
Java SE ,
JVM ,
JDK 7

O time de Java SE da Sun recentemente lançou o JDK 7 milestone 5. O M5 inclui quase metade das características do Project Coin, atualizações no pacote java.util.concurrent feita por Doug Lea e uma série de outras melhorias.

As novidades da linguagem no Project Coin são:

  1. Melhoras na forma de assumir tipos em criação de instancias genéricas (diamond) na qual prove tipos limitados para criação de instancias de classe, de forma onde o tipo do parâmetro precisa ser explicitamente declarado pelo construtor, mas pode ser verificado pelo contexto, eles podem ser trocado por um conjunto vazio de tipos de parâmetros. Então ao invés de escrever:
    Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
    Você pode escrever:
    Map<String, List<String>> anagrams = new HashMap<>();
  2. 1.Suporte para literais binários e separadores underline em números para ajudar a leitura – por exemplo long creditCardNumber = 1234_5678_9012_3456L.
  3. Suporte para Strings em declarações Switch.

TAs atualizações no pacote java.util.concurrent incluem suporte à Phasers, TransferQueues e ao framework fork/join. Alex Miller forneceu um excelente resumo aqui, das novidades inclusas e aquelas que como a Fences API e ParallelArray ainda não chegaram.

Somadas a estas mudanças Swing recebe um novo componente, JLayer, para composição decorativas e interceptação de eventos de subcomponentes e a Sun também estendeu a implementação da elliptic curve cryptography para cobrir todas as plataformas que proveem um JRE (isto anteriormente estava disponível para o Solaris). O Milestone 5 também inclui uma quantidade de melhorias relativas a performance, como um novo algoritmo de ordenação e merge mais rápido, no qual Josh Bloch adaptou do Python “TimSort”. Na VM, ambos “escape analyses” e ponteiros de compressão de 64-bit para adaptar-se em 32 bits, agora estão habilitados por default na HotSpot VM, ajudando tanto a reduzir consumo de memória quanto aumentar a performance.

Existe uma grande quantidade de outras mudanças, uma lista completa pode ser encontrada aqui.

Milestone 5 era esperada como a primeira versão do Java 7 com uma feature completa. A tabela abaixo mostra as principais features inclusas na versão M5.

vm Compressed 64-bit object pointers
Garbage-First GC (G1)
JSR 292: VM support for non-Java languages (InvokeDynamic)
lang JSR 308: Annotations on Java types
core Upgrade class-loader architecture
Method to close a URLClassLoader
Unicode 5.1
JSR 166y: Concurrency and collections updates
JSR 203: More new I/O APIs for the Java platform (NIO.2)
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
Elliptic-curve cryptography (ECC)
client Forward-port 6u10 deployment features
New platform APIs for 6u10 graphics features
Nimbus look-and-feel for Swing

Principais features ainda a serem terminadas incluem:

  • Modularização (projeto Jigsaw) e o suporte na VM para programação modular (JSR 294).
  • Uma parte do Project Coin incluindo Automatic Resource Management, collection literals, suporte no nível de linguagem para JSR-292 e invocação de métodos varargs simplificados.
  • Atualização no stack XML originalmente programadas para a versão M4.
  • O XRender pipeline para Java 2D.
  • Implementação dual-pivot quisort

Alguns destes estão bem próximos. O código do quicksort dual-pivot, por exemplo, é quase certo de estar no primeiro build do milestone 6, build 77, em 3 de dezembro de 2009. Outros, contudo, estarão fora. O projeto Jigsaw está progredindo, mas atualmente possui disponível para download com qualidade alpha apenas binários do M5 para Linux. Igualmente o JSR294 parece estar no caminho para o término e no mailing do expert group Alex Buckley sugere que o propósito do Simple Modulo não deve ser perseguido:

Desde que ambos Jigsas e OSGi são definidos na primeira instancia fora do JCP, não parece que a JSR294 é bem posicionada para definir um módulo do sistema que unifique-os. Ela poderia ser um design de denominador comum com compromissos bem intencionados, mas frustrantes. Não houve um suporte claro no EG para o propósito do Simple Module System e não gostaria de levá-lo a diante.

Dado isto, ainda há um longo caminho a seguir no JDK7. A Sun decidiu incluir mais 3 milestones para agendar e deslocar a feature completa para o milestone 8 (3 de Junho 2010). Isto deve permiti-los incluir algumas outras características como multi-catch e, previamente dito, closures para o release do JDK 7, mas empurra a data final cerca de 6 meses, para Setembro de 2010.

Conteúdo Educacional

Formando equipes de alto desempenho, parte 1: Início e fases de evolução

Nesta primeira parte de uma série sobre equipes de alto desempenho e gerenciamento Agile, veja uma introdução geral e uma apresentação dos estágios de formação das equipes.

Business Model Canvas, passo a passo

O Business Model Canvas é uma ferramenta estratégica para a construção visual de novos produtos ou serviços. Conheça cada um dos seus elementos e como preencher o Canvas, passo a passo.

Google Apps Script, Parte 2: Google Docs, triggers e envio de emails

Nessa segunda e última parte de uma série sobre o Google Apps Script, conheça como funciona o envio de emails, a conversão de documentos e como criar menus e triggers.

Serviços de cloud computing PaaS: um guia para desenvolvedores Java

Este artigo avalia seis dos mais importantes fornecedores de serviços de cloud computing PaaS para desenvolvedores Java, analisando critérios como desempenho, escalabilidade e tecnologias suportadas.

Canvas de Modelo de Negócios: uma contribuição para o sucesso de Startups

O Canvas de Modelo de Negócios é um novo modo de comunicar e suportar a validação iterativa, incremental e empírica de modelos de negócio de startups e novos produtos substituindo o plano de negócios.

Entrevista com Rebecca Parsons Parte 2: Agile Distribuído, Arquitetura vs. Design e SOA

Nesta segunda e última parte de uma entrevista exclusiva para InfoQ Brasil, Rebecca Parsons, CTO da ThoughtWorks, fala sobre o Agile Distribuído e técnicas para definição de arquiteturas.

Entrevista com Rebecca Parsons Parte 1: Agile nas Empresas e Arquitetura Evolucionária

Nessa primeira parte de uma entrevista com a CTO da ThoughtWorks, veja recomendações sobre formas de construir e arquitetar sistemas para obter o máximo de flexibilidade e responsividade a mudanças.

Agile das equipes à organização: o papel do gerente, estratégias e dicas para a adoção

Os gerentes de projetos podem assumir o papel crítico de liderar a introdução do Agile. Vejas conceitos, dicas e técnicas para apoiar esse processo de mudanças.