BT

A sua opinião é importante! Por favor preencha a pesquisa do InfoQ!

Mark Reinhold sobre Closures para Java

| por Charles Humble Seguir 287 Seguidores , traduzido por Rodrigo Branas Seguir 0 Seguidores em 02 dez 2009. Tempo estimado de leitura: 2 minutos |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

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

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

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT