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]