Slides

Por um Java mais funcional

Description
1. Por um Java mais funcionalChristian Reichel@chrisreichel 2. Motivaçãoã Maioria dos projetos são problemas de gerenciamento de informaçõesã Expressividadeã…
Categories
Published
of 16
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  • 1. Por um Java mais funcionalChristian Reichel@chrisreichel
  • 2. Motivação• Maioria dos projetos são problemas de gerenciamento de informações• Expressividade• Concorrência * http://mail.openjdk.java.net/pipermail/lambda-dev/2011-August/003877.html
  • 3. Princípios• Imutabilidade• Recursão• Lazy evaluation• Closures e funções como objetos de primeiro nível
  • 4. Imutabilidade
  • 5. Imutabilidade
  • 6. Recursão• Não há estados mutáveis• Em Java é ruim (cada chamada gera um overhead grande)• forEach: sem estados mutáveis e sem recursão
  • 7. Lazy Evaluation• Evitar computar um resultado até o ponto em que ele realmente seja necessário• Permite definir estruturas infinitas: ex conjunto dos números inteiros
  • 8. Funções e Closures• Classes anônimas podem ser consideradas funções anônimas• Wrapper de Função• Bibliotecas funcionais em Java funcionam assim: Guava, Functional Java ...
  • 9. Closures no Java 8 * http://blog.caelum.com.br/trabalhando-com-closures-no-java-8/ * http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-3.html
  • 10. Combinators• Operações básicas para lidar com coleções • filter • map• Listas são as estruturas de dados centrais• A combinação do map e do reduce inspiraram a abordagem MapReduce do Hadoop
  • 11. filterCria uma nova coleção mantendo somente os elementos que foram filtrados
  • 12. mapCria uma nova coleção onde cada elemento passa por uma transformação * O google guava chama o map de transform...
  • 13. Estruturas de dados persistentes• Coleções imutáveis• Modificações geram cópias• Custoso para grandes estruturas
  • 14. Estruturas de dados persistentes• Compartilhamento de estrutura• Implementação baseada em Árvores• Interface pode ser uma List, Map, ...
  • 15. • Google Guava: http://code.google.com/p/guava-libraries/• Functional Java: http://code.google.com/p/functionaljava//• Totallylazy: http://code.google.com/p/totallylazy/• Lambdaj: http://code.google.com/p/lambdaj/• Apache Commons Functor: http://commons.apache.org/sandbox/functor/
  • 16. Obrigado• Google Guava: http://code.google.com/p/guava-libraries/• Functional Java: http://code.google.com/p/functionaljava//• Totallylazy: http://code.google.com/p/totallylazy/• Lambdaj: http://code.google.com/p/lambdaj/• Apache Commons Functor: http://commons.apache.org/sandbox/functor/
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks