BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Mark Reinhold sobre Closures para Java

Mark Reinhold sobre Closures para Java

Favoritos

Seguindo o surpreendente anúncio da semana passada na Devoxx de que a Sun adicionaria closures no Java, Mark Reinhold publicou em seu blog mais detalhes sobre essa decisão.

Uma das principais utilidades para as closures em Java são para a programação paralelas. Reinhold argumenta que usar ferramentas como arrays paralelas requer muito código repetido, e com as closures na linguagem seria possível eliminar repetições de código como essas. Ele vai além:

Nos últimos anos, três propostas sérias de adicionar closures para o Java foram apresentadas: BGGA, CICE e FCM. Essas propostas abrangem uma ampla gama em termos de complexidade e força. No meu ponto de vista, após ter estudado todas as propostas, é de que cada uma contém boas ideias ainda que nenhuma seja completamente apropriada.

 

Para suportar as principais utilidades da programação paralela nós só precisamos realmente de duas funcionalidades:

  • Sintaxe literal, para escrever closures.
  • Tipos funcionais, de modo que as closures sejam tipadas.

Para integrar closures com o resto da linguagem e da plataforma nós precisamos de duas funcionalidades adicionais:

  • Conversão de closures, de modo que uma closure de um tipo apropriado possa ser utilizado onde um objeto de um método de uma interface ou classe abstrata é requerido.
  • Métodos de extensão, de modo que métodos orientados pela closure possam ser adaptados a bibliotecas existentes e particularmente o framework Collections, sem quebrar a compatibilidade.

Java é frequentemente criticado pela lentidão de sua evolução. Embora o argumento seja exagerado (Java passou por 4 revisões desde a última atualização do C++) todo incentivo a experimentação da linguagem Java é positivo, desde que não impacte a diretamente na compatibilidade da linguagem. Em um artigo anterior, eu explorei três técnicas alternativas que permitem isso - DSLs, o processador de anotação de Java 6, e movendo o local padrão para suavizar a linguagem para a IDE - mas ao mesmo tempo que cada uma dessas técnicas são úteis, descobrimos que cada uma tinha suas limitações ao tentar fornecer suporte a closures. A solução da Sun é utilizar o projeto JDK 7 para fazer a experimentação antes de decidir tornar a funcionalidade padrão para o Java SE. Como Reinhold colocou:

A Sun vai iniciar o design e a implementação das funcionalidades simples de closures, conforme descrito acima, e adicioná-la ao JDK 7 de modo a permitir uma ampla experimentação. Se tudo correr bem, então nós vamos apresentar uma alteração para a linguagem JSR que por sua vez seria proposto como um componente da eventual Java SE 7 JSR.

A Sun está empenhada, assim como "todos os que participaram da conversas anteriores sobre closures - bem como qualquer outra pessoa com uma opinião formada" e uma proposta inicial está sendo esperada em breve.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT