| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 09:07:44
|
Mark_Ameba
Forum Spammer
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.jpg)
Membro desde: 11/04/2007 18:18:20
Mensagens: 3312
Localização: São Paulo/SP
Offline
|
Alias.. cade a explicação do Thingol sobre Reflection?
|
Projeto Mark-Utils no Google Code!
Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.
Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
It's more useful to have a fun game with old graphics, than a boring game with good graphics.
Quer aprender a fazer jogos? : Créditos ao ViniGodoy
Each of their nuggets of wisdom contracted to a sound bite:
Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 12:05:04
|
victorwss
Forum Spammer
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2355
Localização: São Paulo - SP
Offline
|
Bem, não sei muito sobre como o reflection é implementado, mas sei um pouco. E já que o thingol não compareceu, vou tentar explicar.
O objeto Class contém referências aos objetos Method, Constructor, Field e Annotation, não muito diferente de como você criaria alguma estrutura de dados comum. A classe Class tem alguns métodos que permitem você pesquisar ou iterar estas estruturas de dados. Até aqui, nada além de java normal manipulando estruturas de dados simples.
As classes Class, Method, Constructor e Field também têm algumas estruturas de dados referentes a Annotations, que são instanciadas pela JVM quando a classe é carregada. O reflection para ler estas Annotations pode ser facilmente implementado baseado apenas em java simples (isso fica a critério dos implementadores da JVM).
Estas estruturas de dados são montadas pela JVM quando ela cria o objeto Class (ou dependendo da JVM de forma lazy), inclusive a instanciação das Annotations existentes.
O reflection da classe Field se baseia em uma implementação native. Essa implementação está dentro da JVM, que vai no endereço do atributo e lê ou escreve algum valor naquele endereço.
O reflection da classe Method também se baseia em native. Dentro da JVM, já no lado native, há um ponteiro para função que é invocado e então o método executa. O ponteiro "this" aparece como um parâmetro para este método (tal como empilhado pelo invokevirtual e pelo invokeinterface).
O reflection da classe Constructor funciona de forma semelhante ao de Method.
O Class.newInstance() delega para a classe Constructor.
Resumindo, as estruturas de dados poderiam ser montadas assim:
This message was edited 4 times. Last update was at 16/01/2009 12:16:50
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Mestrando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68%
Próximos: SCJD (encalhado com o projeto), SCBCD (estudando), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model). |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 12:07:37
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17442
Localização: SP
Offline
|
Obrigado, Victor; a explicação foi melhor que o que eu conseguiria dizer (normalmente eu ponho uma explicação complicada demais e muito bitolada para a implementação Sun da JVM).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 12:14:01
|
victorwss
Forum Spammer
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2355
Localização: São Paulo - SP
Offline
|
thingol wrote:Obrigado, Victor; a explicação foi melhor que o que eu conseguiria dizer (normalmente eu ponho uma explicação complicada demais e muito bitolada para a implementação Sun da JVM).
This message was edited 1 time. Last update was at 16/01/2009 12:14:17
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Mestrando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68%
Próximos: SCJD (encalhado com o projeto), SCBCD (estudando), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model). |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 12:24:30
|
Mark_Ameba
Forum Spammer
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.jpg)
Membro desde: 11/04/2007 18:18:20
Mensagens: 3312
Localização: São Paulo/SP
Offline
|
Gostei.
Mas vou procurar para ver como a JVM faz mais internamente.
|
Projeto Mark-Utils no Google Code!
Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.
Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
It's more useful to have a fun game with old graphics, than a boring game with good graphics.
Quer aprender a fazer jogos? : Créditos ao ViniGodoy
Each of their nuggets of wisdom contracted to a sound bite:
Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 14:50:40
|
dionat4n
JavaEvangelist
![[Avatar]](/images/avatar/513d6bdbaed51319e9aa9f84a7f7518e.jpg)
Membro desde: 04/06/2008 21:08:05
Mensagens: 309
Localização: Porto Alegre (RS)
Offline
|
Mark_Ameba wrote:Gostei.
Mas vou procurar para ver como a JVM faz mais internamente.
Se encontrar, por favor escreva um livro sobre isso, porque o que menos tem é literatura específica do funcionamento da JVM.
|
http://dionatanweblog.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 16:10:55
|
Mark_Ameba
Forum Spammer
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.jpg)
Membro desde: 11/04/2007 18:18:20
Mensagens: 3312
Localização: São Paulo/SP
Offline
|
Agora eu desesti de procurar. :p
|
Projeto Mark-Utils no Google Code!
Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.
Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
It's more useful to have a fun game with old graphics, than a boring game with good graphics.
Quer aprender a fazer jogos? : Créditos ao ViniGodoy
Each of their nuggets of wisdom contracted to a sound bite:
Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2009 07:05:54
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17442
Localização: SP
Offline
|
O que você pode procurar é o wiki do pessoal do OpenJDK; lá há alguma coisa.
http://wikis.sun.com/display/HotSpotInternals/PerformanceTechniques
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2009 22:37:29
|
Mark_Ameba
Forum Spammer
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.jpg)
Membro desde: 11/04/2007 18:18:20
Mensagens: 3312
Localização: São Paulo/SP
Offline
|
Eu procurei no OpenJDK sobre Reflection e não tinha achado... mas valeu vou olhar o link.
|
Projeto Mark-Utils no Google Code!
Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.
Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
It's more useful to have a fun game with old graphics, than a boring game with good graphics.
Quer aprender a fazer jogos? : Créditos ao ViniGodoy
Each of their nuggets of wisdom contracted to a sound bite:
Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2009 08:34:52
|
joaosiqueira
Thread.start()
Membro desde: 08/01/2009 08:23:56
Mensagens: 40
Offline
|
Nossa esse post foi demais, o que gerou de debate e polemica...
Isso prova como algo simples pode se tornar complexo, devido a amplitude de recursos de uma boa linguagem de prograçao.
Abraços a todos!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2009 10:05:21
|
Marcio Duran
Forum Spammer
![[Avatar]](/images/avatar/df0e19d29493ef2136fc3e2fc029c054.jpg)
Membro desde: 23/01/2008 11:14:35
Mensagens: 1905
Offline
|
joaosiqueira wrote:Nossa esse post foi demais, o que gerou de debate e polemica...
Isso prova como algo simples pode se tornar complexo, devido a amplitude de recursos de uma boa linguagem de prograçao.
Abraços a todos!
Para quem quiser melhor informações sobre Reflection
Tutorial Java Reflection
|
Consultor Open Source
Comunidade JavaLivros
Twitter Comunidade JavaLivros
Novo Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2009 10:08:34
|
joaosiqueira
Thread.start()
Membro desde: 08/01/2009 08:23:56
Mensagens: 40
Offline
|
Valeu Marcio Duran,
Esse artigo de Reflections me ajudou bastante.
Obrigado!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2009 12:18:50
|
Mark_Ameba
Forum Spammer
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.jpg)
Membro desde: 11/04/2007 18:18:20
Mensagens: 3312
Localização: São Paulo/SP
Offline
|
Uma parte ali que eu nao conhecia era sobre as Proxys com Reflection.. eu sabia sobre elas mas não sabia que fazia parte.
|
Projeto Mark-Utils no Google Code!
Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.
Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
It's more useful to have a fun game with old graphics, than a boring game with good graphics.
Quer aprender a fazer jogos? : Créditos ao ViniGodoy
Each of their nuggets of wisdom contracted to a sound bite:
Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 10:11:33
|
joaosiqueira
Thread.start()
Membro desde: 08/01/2009 08:23:56
Mensagens: 40
Offline
|
Marcio Duran,
So trazendo o mundo hacking no GUJ.. eheheh
muito bom!!!
This message was edited 2 times. Last update was at 20/01/2009 10:12:18
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 13:52:58
|
thiagoh
HelloWorld
![[Avatar]](/images/avatar/a40dd893c0c55a729d56d7b96c2d1963.jpg)
Membro desde: 30/04/2007 23:01:04
Mensagens: 13
Offline
|
Veja bem, é uma questão de lógica. Uma classe é uma estrutura em que existem metodos e variáveis.
Mas quando um metodo é definido não importa se ele é estático ou dinamico a estrutura dele será a mesma, ou seja, o trecho de código que o método estático ou dinâmico (no compilador) sao quase iguais (semanticamente falando) o que mudam são as posições de memória pois metodos estáticos nao podem referenciar variaveis de uma instância.
O mesmo não é verdade para uma váriavel estática, que está sim economiza espaço de memória.
Veja o código:
Em:
No entanto em:
|
|
|
 |
|
|