Apresentação Tdc2015 - Trilha Java

224 visualizações

Publicada em

Apresentação sobre a palestra: Tirando o máximo da Metaprogramação com a API Reflection.
Trilha Java TDC 2015

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
224
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação Tdc2015 - Trilha Java

  1. 1. – Open4education Trilha – JAVA Tirando o máximo da Metaprogramação com a API Reflection Cristiano Agosti Java Developer
  2. 2. – Open4education Apresentação • Mestre em Ciência da Computação • Sócio proprietário da Camtwo Sistemas (camtwo.com.br) • Professor na Universidade do Oeste de Santa Catarina - Unoesc (unoesc.edu.br) • A mais de 10 anos trabalhando com Java e web
  3. 3. – Open4education Agenda • Metaprogramação • Reflexão, Vantagens e Desvantagens • API Reflection • Exemplos • Conclusões
  4. 4. – Open4education Metaprogramação • Consiste na criação de programação com a capacidade de manipular a estrutura ou dados de outros programas ou a sim mesmo
  5. 5. – Open4education Algumas Perguntas • Como invocar um método apenas usando seu nome em uma String? • Como faço para listar os atributos de uma Classe dinamicamente? • Como saber via programação quais são os Construtores e Métodos da classe?
  6. 6. – Open4education Reflexão
  7. 7. – Open4education Vantagens • Descoberta de informações de uma classe em tempo de execução • Facilidade na manutenção • Minimização de Erros • Ganho de Produtividade • Padronização • Extensibilidade
  8. 8. – Open4education Desvantagens • Redução de desempenho se requerido com frequência • Problemas por restrição de segurança caso executado em um ambiente com regras específicas • Exposição de estrutura interna dos objetos
  9. 9. – Open4education Quando Usar • DSL (Linguagem de Domínio Específico) • Compilador • Descobrir detalhes de classes
  10. 10. – Open4education
  11. 11. – Open4education Ponto de Partida Class<T> • java.lang.Class<T> • Classes definem o comportamento de objetos • Metaclasse definem o comportamento de classes
  12. 12. – Open4education Classe Pessoa
  13. 13. – Open4education Referência da Class • Pela Classe – Class<?> c1 = Pessoa.classe; • Pelo Nome da Classe – Class<?> c2 = Class.forName(“br.tdc.Pessoa”); • Pela Instância – Pessoa p = new Pessoa(); – Class c3 = p.getClass();
  14. 14. – Open4education O que é metadata • são dados sobre outros dados • Um item de um metadado pode dizer do que se trata aquele dado • Facilitam o entendimento dos relacionamentos e a utilidade das informações dos dados http://pt.wikipedia.org/wiki/Metadados
  15. 15. – Open4education Principais Métodos
  16. 16. – Open4education Principais Métodos
  17. 17. – Open4education Metadata para primitivos
  18. 18. – Open4education Metadata para Arrays
  19. 19. – Open4education Metadata para Arrays B para byte C para char D para double F para float I para int J para long Lpacote+classe para classe[] S para short Z para boolean [ para a dimensão do array
  20. 20. – Open4education Constructor Classe responsável por recuperar as informações dos Construtores da Classe
  21. 21. – Open4education Constructor
  22. 22. – Open4education Fields • Representa os atributos de classe • Através dessa classe podemos obter as informações que queremos sobre os atributos
  23. 23. – Open4education Fields
  24. 24. – Open4education Exemplo para Fields
  25. 25. – Open4education Method Classe responsável pela recuperação de dados sobre métodos de uma classe
  26. 26. – Open4education Invocação (invoke) • Forma dinâmica de chamar métodos • Método da Classe Method Object invoke(Object obj, Object... args)
  27. 27. – Open4education invoke() • Métodos da Classe Pessoa
  28. 28. – Open4education invoke() • Métodos da Classe String
  29. 29. – Open4education Anotações • A interface AnnotatedElement oferece funcionalidades para obtermos informações de anotações existentes em classes • Devem ser herança de ActiveObject como Field e Method
  30. 30. – Open4education Anotações • Devem ser herança de ActiveObject como Field e Method • Exemplo: criar uma anotação para Validar um atributo(field) obrigatório
  31. 31. – Open4education Mãos a Obra
  32. 32. – Open4education Roteiro de Exemplos • Pessoa • Listar Construtores (construtor) • Criar instancia a partir do construtor vazio • Criar instancia a partir do construtor de atributos • Listar Atributos (fields) • Listar Métodos (method) • Invocar método mensagem • Anotações (atributo obrigatório) • Validar instancia com atributo preenchido • Validar instancia com atributo nulo
  33. 33. – Open4education Exemplo Constructor
  34. 34. – Open4education Exemplo Fields
  35. 35. – Open4education Exemplo Method
  36. 36. – Open4education Exemplo Anotações
  37. 37. – Open4education Exemplo Anotações
  38. 38. – Open4education Exemplo Anotações
  39. 39. – Open4education Lombok
  40. 40. – Open4education Proxy • Criar implementação de Interfaces em tempo de execução • Forma de interceptar métodos de interfaces
  41. 41. – Open4education Proxy
  42. 42. – Open4education Proxy
  43. 43. – Open4education Proxy
  44. 44. – Open4education Conclusões Descoberta de informações sobre classes Usar com cautela Extensibilidade Usado por muitos frameworks Intuitivo
  45. 45. – Open4education Perguntas
  46. 46. – Open4education Referências http://wwwusers.di.uniroma1.it/~parisi/Risorse/java- reflection-explained-simply-manual-8up.pdf http://tutorials.jenkov.com/java-reflection/dynamic- proxies.html http://rodrigosasaki.com/ https://projectlombok.org
  47. 47. – Open4education Contato • skype: cristiano.agosti • twitter: @agosti • cristiano.agosti@camtwo.com.br • facebook.com/cristiano.agosti • agosti.blog.br

×