Your SlideShare is downloading. ×
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Groovy para javeiros - Migração Painless

564

Published on

Apresentação de 10 minutos sobre migração de java para groovy.

Apresentação de 10 minutos sobre migração de java para groovy.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
564
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • WCJ IT – Soluções em TI Cuidamos dos valores que fazem sentido para o seu negócio
  • Transcript

    • 1. shutterstock_3248515.jpg Groovy para Javeiros – Migração Painless WCJ IT – Soluções em TI http://www.sp.senac.br/imagens/x1.gif http://www.sp.senac.br/imagens/x1.gif Cuidamos dos valores que fazem sentido para o seu negócio . http://wcj-it.com
    • 2. O que é Groovy?
      • Linguagem dinâmica para JVM
      • 3. Ruby / Phyton
      • 4. Recursos
        • Closures
        • 5. Duck typing
        • 6. Tipagem estática e dinâmica
        • 7. Interoperabilidade com Java
        • 8. Sintaxe flexível
        • 9. Etc...
    • 10. Por que Groovy? public static void lerLinhaALinha(InputStream stream) { InputStreamReader reader = null ; BufferedReader buffer = null ; try { reader = new InputStreamReader(stream); buffer = new BufferedReader(reader); String linha = "" ; while (linha != null ) { linha = buffer.readLine(); if (linha != null ) { //CODIGO DE NEGOCIO } } } catch (FileNotFoundException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } finally { if (reader != null ) { try { reader.close(); } catch (IOException e) { LOG .error( "erro carregando arquivo" , e); } } if (buffer != null ) { try { buffer.close(); } catch (IOException e) { LOG .error( "erro carregando arquivo" , e); } } } } public static void lerLinhaALinha (InputStream is) { is. eachLine ( "utf-8" , { linha -> //CODIGO DE NEGOCIO }); } JAVA Groovy
    • 11. Barreiras para aprendizado
      • Por que é difícil desenvolver em uma nova linguagem?
        • Curva de aprendizado
        • 12. Mundança de paradigma
        • 13. Nova linguagem sempre vem acompanhada de um novo ecosistema
        • 14. Risco para o projeto
        • 15. Prazos
    • 16. Solução para Javeiros
      • Groovy!
      • 17. Curva de aprendizado quase zero
      • 18. Aceita 100% da sintaxe Java
      • 19. Utilize seus frameworks favoritos
      • 20. O mesmo arquivo pode ter código java e groovy
      • 21. Possibilita o uso da melhor ferramenta para o problema em questão.
    • 22. Setup
      • Inclusão de jar nas dependências
      • 23. Configuração do compilador
      • 24. Menos de um dia pra configurar com o Maven
    • 25. Exemplos – Busca de gestores public class Funcionarios { def funcionarios = [ new Funcionario(nome: &quot;Rafael&quot; , salario = 200 , gestor = true ), new Funcionario(nome: &quot;Wilson&quot; , salario = 300 , gestor = true ), new Funcionario(nome: &quot;Renan&quot; , salario = 20 , gestor = false ) ] def buscarGestoresGroovy () { funcionarios . findAll { funcionario -> funcionario.isGestor(); } } public List<Funcionario> buscarGestoresJava () { List<Funcionario> gestores = new ArrayList<Funcionario>(); for (Funcionario funcionario : funcionarios ) { if (funcionario. isGestor ()) { gestores.add(funcionario); } } return gestores; } } public class Funcionario { private String nome ; private double salario ; private boolean gestor ; }
    • 26. Exemplos – Stubs / interfaces public interface ActionListener { public void actionPerformed(); } def actionListener = { println &quot;action executada!&quot; } as ActionListener public interface MouseListener { public void mouseMoved(); public void mouseClicked(); } def mouseMoved = [ MouseMoved: { println &quot;Mouse Movido!!&quot; }, MouseClicked: { println &quot;Clicou!!&quot; } ] as MouseListener
    • 27. Conclusão
      • Custo de configuração muito baixo
      • 28. Custo de aprendizado baixo
      • 29. Ganho de produtividade, Objetividade e expressividade de código
      • 30. Não vale a pena tentar?
    • 31. Dúvidas?

    ×