JDK-4879835 : Provide the dynamic bytecode instrumentation capability, as found in JFluid
  • Type: Enhancement
  • Component: tools
  • Sub-Component: hprof
  • Affected Version: 1.4.2
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2003-06-17
  • Updated: 2005-04-20
  • Resolved: 2005-04-20
Related Reports
Duplicate :  

Name: rmT116609			Date: 06/17/2003

We would like to see the JVM technology for dynamic bytecode instrumentation productized in some future JDK version, preferably JDK 1.5. Such a technology is available in the JFluid experimental project by Sun Labs (see http://research.sun.com/projects/jfluid). It enables tools to dynamically instrument and de-instrument bytecodes of running Java applications, usually in order to obtain performance information. However, we understand that the same functionality can also be used for other purposes, e.g. code coverage, fault injection, or even patching bugs without stopping a program.

We also understand that the JFluid JVM provides a mechanism that keeps the above
instrumentation capability "always on". That is, it enables tools to attach to, and instrument, any program, even one running in a production mode, without any special JVM settings. Such an option, though probably it should be considered separately, is also very desirable to have.

JFluid or technology similar allows for applications to be dynamically instrumented with diagnostics, monitoring, and other management features that improve the manageability of J2SE and J2EE applications and servers.
(Review ID: 185678) 

EVALUATION The bug fixes and performance work needed so that the NetBeans Profiler (JFluid) can run well with the JDK have been integrated into mustang (6.0) and also 5.0 update 4. See 5109602, 5079751, 6200138, and 6203233. ###@###.### 2005-03-21 09:35:08 GMT It's now time to close this bug! All the bug fixes and performance work to make the NetBeans Profiler (JFluid) work really well with JDK5.0 and mustang (6.0) is complete. The changes are in mustang since b26 (download the latest mustang snapshot from https://mustang.dev.java.net/). For JDK5.0 the changes have been back-ported to 5.0u4 - sorry it's not 5.0u3 but the changes are too extensive and 5.0u3 was too far along to integrate them late in the schedule. The other news is that milestone 6 of the NetBeans Profiler has been released. (download it from http://profiler.netbeans.org/). In milestone 6 the profiling agent has been ported to JVMTI (the new tools interface added in JDK1.5 via JSR-163). ###@###.### 2005-04-20 08:14:22 GMT

PUBLIC COMMENTS This RFE requests dynamic bytecode instrumentation "as found in JFluid". Some background -- dynamic bytecode instrumentation was added to JVMDI in J2SE 1.4 -- the function is RedefineClasses. This functionality is also available in the higher layers of JPDA: JDWP and JDI. JSR-163 is defining new tool interfaces for J2SE 1.5 -- relevant to this RFE are the new JVMTI and JPLIS interfaces. JVMTI (which will superceed JVMDI and JVMPI in a subsequent release) supplies RedefineClasses as well as an enhanced ClassFileLoadHook (as mentioned in the JDC comment). JPLIS will supply this functionality to in-process Java programming language code. The one difference in the JFluid support is that replacement can be at method granularity rather than class granularity. ###@###.### 2003-08-06