Hi,

I recently thought too of a Reflection API and it surely would be
very useful addition.
We should start to gather proposals now, it should be however
implemented
after Release 5.0 becomes final.

Cheers
        Markus


> I have been thinking of the reflection replacement and how it 
> might work.
> It seems to me that one would only want to optimize certain classes in
> their application.  It would be a nightmare if we turned an 
> application
> with 50 classes into a sprawling nightmare of 500 classes as 
> we create a
> separate class for each method.  I like the idea of having a tagging
> interface that you would implement if you knew the class 
> would be accessed
> through reflect.  On class load, the classloader would notice 
> the interface
> and perform byte code manipulation before handing the class off to the
> verifier.
> 
> Creating a classloader for this purpose would be no problem, 
> but what if we
> had other byte code level tools?  The original reason that I started
> looking at BCEL was make it easier to generate bound and 
> constrained fields
> (ala Java Beans).  If you named your field b_myfield then an
> accessor/mutator would automatically be created along with 
> the code that
> would fire a property change when the mutator was called.  If 
> you named
> your field c_myfield then the above would happen plus the 
> mutator would
> fire a vetoeable change.
> 
> It is conceivable that I would want to do both in the same class and I
> don't want to have to change the source of my classloader and 
> recompile.
> Maybe as part of this project we can create a more flexible 
> classloader
> with an invoker chain that can be controlled by a properties 
> (maybe xml)
> file.  The idea would be that we would list the interface to 
> look for (like
> OptimizeForReflect or BCELBean) and then put the fully 
> qualified classname
> for the handler that would be responsible for handling that particular
> interface (like 
> org.apache.bcel.handlers.OptimizeForReflectHandler).  The
> handler interface would just have one method that we would pass an
> org.apace.bcel.classfile.JavaClass into.
> 
> As an answer to your question about building a reflection 
> replacement, I
> would say I am in.  I think we should include some useful 
> tools right in
> the BCEL package.  BCEL is pretty intimidating and I think 
> that offering
> some tools (that include the source code of real world 
> solutions using BCEL
> as a by-product) would make BCEL more accessible.  The reflection
> replacement is a perfect place to start.  I would say we 
> should package it
> in the same jar as the rest of BCEL and keep it under the 
> same umbrella as
> the BCEL project instead of creating a separate project.
> 
> I rambled enough, tell me what you think.
> 
> -Phil
> 
> 
> 
>                                                               
>                         
>                     Jim Redman                                
>                         
>                     <jim@ergotech        To:     BCEL Users 
> List                      
>                     .com>                
> <[EMAIL PROTECTED]>               
>                                          cc:                  
>                         
>                     05/18/2002           Subject:     Re: 
> Emulating                   
>                     06:01 AM             
> java.lang.reflect.AccessibleObject           
>                     Please                                    
>                         
>                     respond to                                
>                         
>                     "BCEL Users                               
>                         
>                     List"                                     
>                         
>                                                               
>                         
>                                                               
>                         
> 
> 
> 
> 
> Do we have critical mass to build an reflection replacement as an open
> source project?  The time we could really use it is porting to CLDC -
> the J2ME standard that does not support reflection.
> 
> I have something similar for floating points (the standard does not
> support floating point although most of the implementations tend to).
> It takes out the floating point opcode and replaces with fixed point.
> 
> Jim
> 
> --
> 
> Jim Redman
> (505) 662 5156
> http://www.ergotech.com
> 
> --
> To unsubscribe, e-mail:   
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>






--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

Reply via email to