commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luis Neves <>
Subject Re: [jxpath] Java code from JXpath expression
Date Tue, 07 Mar 2006 22:39:19 GMT

Torsten Curdt wrote:
>>> Well, I am no expert but I think this cannot be done without huge 
>>> hacks. Why
>>> you want to do this? Do you want to use it as a code generation tool?
>> Yes... sort of.
>> I'm having some performance issues related to the use of reflection, I 
>> was thinking to "extract" the Java code from the JXPath expression and 
>> then use Janino to compile it, this way I would use reflection only 
>> once (to generate the code).
> IMHO that's an ugly approach ...rather I would try to improve jxpath.

You are certainly entitled to your opinion :-)
I will take the example used in the JXPath user guide to illustrate what I want.

public class Employee {
     public Address getHomeAddress(){
public class Address {
     public String getStreetNumber(){

Employee emp = new Employee();

String jxpath_exp = "homeAddress/streetNumber"
String javaCode = JXPathContext.getJavaCode(Employee.class, jxpath_exp);
ExpressionEvaluator ee = new ExpressionEvaluator(javaCode, ...); // Janino
String sNumber = (String) ee.evaluate(new Object[] {emp} );

Maybe because my sense of aesthetics is skewed I fail to see the ugliness you speak of, but
I'm more than willing to be educated.

> When caching reflection you can get the same speed as native (at least
> in some areas).

Could you please elaborate on this...  I don't understand what exactly should be cached.
The result of the evaluation? Maybe I'm missing something but if the Context object is always
changing is there a point in 
"caching reflection"?

  Another option would be to generate byte code internally
> (like XSLTC does)

Ok... that sure is a possibility,  any pointers on how/where to start?
Although I'm a heavy user of JXPath I'm ashamed to admit that I barely know it's inner workings

  Going through the source code stage just to avoid
> reflection speed sounds like the wrong approach to me.

It's just a possibility, what I really want is not to use reflection.


Luis Neves

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message