BT

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

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

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.

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 menssagens dessa discussão
Comentários da comunidade

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

Receber menssagens dessa discussão

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

Receber menssagens dessa discussão

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-2013 C4Media Inc.
Política de privacidade
BT