Avançar para o conteúdo principal

Closures em Java

Aqui há tempos, a trabalhar em Javascript (ECMAScript para os mais puristas) acabei por "descobrir" essa técnica engraçadíssima que são os "closures". Usei-os num "test-case" de algumas técnicas de Javascript num inacabado XML Tree Editor (se se derem ao trabalho de ir ver, são os pequenos ícones de gravar/abandonar que aparecem quando se edita um nó da árvore) e que em termos de código são apenas uma coisa do género
var editOk = new function(){
var i=document.createElement('img');
i.src="images/save.gif";
i.style.verticalAlign="top";
i.onclick=function(){
saveThis(this.previousSibling, name, pos);
}
return i;
}

o que a mim me parece quase magia, pois só com isto o raio dos ícones sabem onde estão, quem são e o que fazer... (a "magia" está, é claro, no "name" e "pos" que são definidos no método exterior).

Realmente, já há muitos anos que eu fazia coisas do género, sem saber que se chamava a isto "closures", em linguagens como dBase/Clipper e LotusScript. Mas que provavelmente eram "side-efects" e não "features"...

E agora parece que já está mais ou menos definido que as "closures" vão também "aparecer" no Java 7. O que abre concerteza mais um campo de batalha propícia a "flame-wars"... É que como não há fome que não dê em fartura, existem não uma, nem duas nem sequer três mas (para já) quatro propostas de implementação. Bom começo!

E está claro que ainda antes de discutir os méritos e a bondade de cada proposta, podia-se ainda discutir coisas como:
  • Mas será que as closures são realmente necessárias?
  • Mas será que as closures são realmente necessárias no Java?
  • Mas afinal as "anonymous inner-classes" não são a mesma coisa?
  • Tá bem, não são, mas não bastam para o que é preciso?
E por aí adiante, é quase "cada cabeça sua sentença"... Já agora dou os meus "dois cêntimos" (de Euro) ao assunto, respondendo às duas primeiras questões na minha perspectiva:
  • Mas será que as closures são realmente necessárias?
Claro, tudo o que se pareça com "magia" é bem-vinda à arte da programação, se não for a magia qualquer dia somos todos "engenheiros"... (oops!)
  • Mas será que as closures são realmente necessárias no Java?
Apesar de as closures virem de tão longe como do Lisp e do Smalltalk, acho muito discutível que as closures possam ser consideradas numa perspectiva de "pure object-oriented". Mas de qualquer modo, Java não é "pure object-oriented"... E sempre fará o pessoal do RoR ficar contente...

E pronto, como podem ver aqui, aqui e acolá, a discussão tem pano para mangas...

Comentários

Mensagens populares deste blogue

Conferência Europeia da Comunidade Alfresco

Já foi há quase quinze dias, mas julgo que ainda será relevante abordar a Conferência Europeia da Comunidade Alfresco, que decorreu em Barcelona no dia 22 de Abril. Com uma audiência de mais de 200 pessoas (a sala reservada estava cheia) vindas de vários pontos da Europa, este evento serviu para que muita gente desta comunidade se encontrasse pela primeira vez face a face. A Alfresco Inc. é uma empresa recente, que apostou em criar uma solução de gestão documental de topo de gama usando o modelo open-source . Considerando que a empresa, no seu terceiro ano de actividade, já atingiu o break-even , parece ter sido uma boa aposta. No arranque da conferência esteve John Powell, CEO da empresa, que falou um bocado sobre a excelente evolução da empresa e abordou a "guerra" entre o modelo de negócios proprietário e o modelo de código aberto. Exemplificou este conflito com o Microsoft SharePoint, que ele designou como "a morte da escolha", justificando o epíteto pelo facto

Backup automático de disco USB (pen drive)

Hoje em dia toda a gente tem uma pen drive para levar os seus ficheiros de um lado para o outro. E muitas vezes está lá trabalho importante. Mas impõe-se uma pergunta: o que acontece se se perde a pen drive ? Ou se esta se avaria? Quem é que faz backups regulares da pen drive ? Muito pouca gente! Pessoalmente tenho por hábito fazer um backup cerca de uma vez por semana. Quando o trabalho é muito, faço backup mais vezes. Mas já por duas vezes as avarias me fizeram perder as versões mais recentes. E isto chateia. Por isso aqui há uns dias decidi "coçar esta comichão" e resolver o problema de forma mais sistemática: arranjei maneira de fazer um backup automático cada vez que ligo a pen drive a um computador. (sim, eu sei que há software específico para isto, mas que querem, apeteceu-me fazer mais um) A receita é relativamente simples: um script (DOS batch file ) que faz o backup , um ficheiro de definição de autorun e já está. 1. O script de backup - Basta instalar, na roo

Horário de trabalho

A trabalhar há dois meses na Irlanda, ando para escrever alguns apontamentos daqui de Dublin, mas são tantos e tão diversos que há matéria aqui para escrever um blog inteiro (e talvez ainda o faca se a inspiração vier em meu auxílio). Há no entanto uma diferença que encontrei por aqui que é muito mais marcante do que eu poderia supor poder ser, e lembrei-me deste ponto que talvez se acomode bem neste blog e no tipo de posts que por aqui há. Falo do horário de trabalho . O horário que por aqui se pratica, e que suponho generalizado, é de entrar as 9h e sair as 17h, com meia-hora de almoço. Ou seja, 7 horas e meia. Ou seja, meia-hora de diferença para o horário "normal" de Portugal. E que diferença que essa diferença faz... Os irlandeses não são muito "fanáticos" com o trabalho e os horários, não se trata de regimes "autoritários" como parece ser em Inglaterra ou na Alemanha - a propósito, sabem que os alemães dizem que na Alemanha a taxa de criminalidade é