Daniil Kirilyuk created QPID-8601:
-------------------------------------

             Summary: [Broker-J] Broker-J instrumentation agent
                 Key: QPID-8601
                 URL: https://issues.apache.org/jira/browse/QPID-8601
             Project: Qpid
          Issue Type: Improvement
          Components: Broker-J
    Affects Versions: qpid-java-broker-8.0.6
            Reporter: Daniil Kirilyuk


Broker model objects heavily rely on java reflection. 

Java version 7/8 introduced reflection alternatives allowing to access class 
fields as well as call class methods. Brief review of those alternatives can be 
found in this [blog 
post|https://www.optaplanner.org/blog/2018/01/09/JavaReflectionButMuchFaster.html].

There are further changes coming, e.g. [JEP 416|https://openjdk.org/jeps/416] 
(implemented in Java 18), having as a goal reimplementation of 
java.lang.reflect.Method, Constructor, and Field on top of java.lang.invoke 
method handles. Jackson databind library already has an 
[issue|https://github.com/FasterXML/jackson-databind/issues/2083] directed to 
replace reflection calls with method handles. Similar approach is used in 
[spring 
data|https://github.com/spring-projects/spring-data-commons/blob/main/src/main/java/org/springframework/data/mapping/model/ClassGeneratingPropertyAccessorFactory.java]
 framework as well.

We suggest to implement a static instrumentation object, which will replace 
reflection method invocation with the invocations of static final MethodHandle 
instances.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to