BT

Mark Reinhold sobre Closures para Java

por Charles Humble , traduzido por Rodrigo Branas em 02 Dez 2009 |

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.

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