• Save
Por um Java mais funcional
Upcoming SlideShare
Loading in...5
×
 

Por um Java mais funcional

on

  • 1,231 views

Minha lightning talk no QCON São Paulo de 2011.

Minha lightning talk no QCON São Paulo de 2011.

Statistics

Views

Total Views
1,231
Views on SlideShare
1,143
Embed Views
88

Actions

Likes
1
Downloads
0
Comments
0

2 Embeds 88

http://blog.reichel.it 87
http://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Por um Java mais funcional Por um Java mais funcional Presentation Transcript

  • Por um Java mais funcionalChristian Reichel@chrisreichel
  • 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
  • Princípios• Imutabilidade• Recursão• Lazy evaluation• Closures e funções como objetos de primeiro nível
  • Imutabilidade
  • Imutabilidade
  • 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
  • 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
  • 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 ...
  • 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
  • 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
  • filterCria uma nova coleção mantendo somente os elementos que foram filtrados
  • mapCria uma nova coleção onde cada elemento passa por uma transformação * O google guava chama o map de transform...
  • Estruturas de dados persistentes• Coleções imutáveis• Modificações geram cópias• Custoso para grandes estruturas
  • Estruturas de dados persistentes• Compartilhamento de estrutura• Implementação baseada em Árvores• Interface pode ser uma List, Map, ...
  • • 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/
  • 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/