Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Groovy para javeiros - Migração Painless

758 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Groovy para javeiros - Migração Painless

  1. 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. 2. O que é Groovy? <ul><li>Linguagem dinâmica para JVM
  3. 3. Ruby / Phyton
  4. 4. Recursos </li><ul><li>Closures
  5. 5. Duck typing
  6. 6. Tipagem estática e dinâmica
  7. 7. Interoperabilidade com Java
  8. 8. Sintaxe flexível
  9. 9. Etc... </li></ul></ul>
  10. 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 = &quot;&quot; ; 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( &quot;erro carregando arquivo&quot; , e); } } if (buffer != null ) { try { buffer.close(); } catch (IOException e) { LOG .error( &quot;erro carregando arquivo&quot; , e); } } } } public static void lerLinhaALinha (InputStream is) { is. eachLine ( &quot;utf-8&quot; , { linha -> //CODIGO DE NEGOCIO }); } JAVA Groovy
  11. 11. Barreiras para aprendizado <ul><li>Por que é difícil desenvolver em uma nova linguagem? </li><ul><li>Curva de aprendizado
  12. 12. Mundança de paradigma
  13. 13. Nova linguagem sempre vem acompanhada de um novo ecosistema
  14. 14. Risco para o projeto
  15. 15. Prazos </li></ul></ul>
  16. 16. Solução para Javeiros <ul><li>Groovy!
  17. 17. Curva de aprendizado quase zero
  18. 18. Aceita 100% da sintaxe Java
  19. 19. Utilize seus frameworks favoritos
  20. 20. O mesmo arquivo pode ter código java e groovy
  21. 21. Possibilita o uso da melhor ferramenta para o problema em questão. </li></ul>
  22. 22. Setup <ul><li>Inclusão de jar nas dependências
  23. 23. Configuração do compilador
  24. 24. Menos de um dia pra configurar com o Maven </li></ul>
  25. 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. 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. 27. Conclusão <ul><li>Custo de configuração muito baixo
  28. 28. Custo de aprendizado baixo
  29. 29. Ganho de produtividade, Objetividade e expressividade de código
  30. 30. Não vale a pena tentar? </li></ul>
  31. 31. Dúvidas?

×