Caros,Esse ano comecei uma nova aventura. Mesmo sem me distanciar totalmente do Java, onde continuo com minhas aulas na Season, iniciei um caminho atraves do mundo Microsoft, em particular com o ERP chamado Dynamics AX.O Dynamics AX e o ERP da Microsoft, vem pra concorrer com o SAP e e um sistema completo e flexivel. Completo pois abrange praticamente todas as areas de uma empresa e flexivel pois, quando parametrizacoes nao sao suficientes, a parte que ele nao abrange pode ser customizada facilmente por um desenvolvedor. Para aqueles que nunca o viram, segue um link do youtube com uma demonstracao: http://www.youtube.com/watch?v=CPOKH906FT0Irei aos poucos colocando conteudo sobre ele aqui no blog no que eu for descobrindo.Abracos! Ha algum tempo li como sera a implementacao de Closures no Java 8. Basicamente, sera um sintax sugar para nao precisar criar uma anonymous inner class, implementando alguma interface que possui apenas um metodo.Java ja possui varios frameworks que se utilizam desse pseudo-closure e a vinda do Java 8 vai realmente facilitar a escrita do codigo.Eu fiquei pensando em como ja utilizar esse tipo de sintaxe, utilizando Scala, nos frameworks java ja existentes. Vou dar um exemplo. Queria transformar um codigo:interface TesteListener { void execute (String message);}public class RecebedorDeListener { TesteListener listener; public RecebedorDeListener(TesteListener listener){ this.listener = listener; }}//Para criar um objeto dessa classe:new RecebedorDeListener(new TesteListener() { @Override public void execute(String message) { System.out.println(message); } });Em: new RecebedorDeListener((x:String) => {println(x)} );Ja tinha visto implementacoes utilizando heranca (por exemplo, criando uma classe filha de RecebedorDeListener) adicionando metodos e construtores que recebiam os closures. Mas eu queria algo mais direto.Em Scala existem os implicits. O compilador procura os erros de compilacao do codigo e verifica se ele pode utilizar algum conversor implicito que corrija o mesmo. Para o codigo acima, e necessario um conversor implicito que converta uma closure do tipo (String) => Unit (leia-se: uma funcao que recebe um parametro String e nao retorna nada, ou void, ou, no caso do Scala, Unit) para um objeto da interface TesteListener onde o metodo void execute(String message) execute a funcao passada. Para isso: implicit def closure2TesteListener(x: (String)=>Unit): TesteListener = new TesteListener(){ override def execute (s: String) = {x(s)} };Esse conversor implicito permite o compilador converter a funcao x, passada como parametro, em um objeto do tipo TesteListener. Com ele e possivel executar o codigo esperado e, de quebra, se houver algum metodo que tambem espere um objeto do tipo TesteListener, pode ser utilizada a sintaxe de closure.Conclusao: Scala e uma linguagem muito poderosa. Implicits e um recurso da linguagem que pode ajudar bastante para esses casos de ajuste de algum framework Java para uma sintaxe mais Scala-like mas, como todo poder, deve ser usado com parcimonia. Muitas pessoas novas entram no Twitter todos os dias e tem dificuldade em entender essa nova "linguagem" que e utilizada no microblogging. Outras, como eu, postam no facebook o que escrevem no twitter automaticamente, deixando o pessoal que usa somente o facebook confuso. RT, Respostas, DMs, by @, etc. fazem parte dessa nova forma rapida de se comunicar.HashtagO twitter e muito bom com buscas