javap ships with every JDK and is the tool real Java engineers reach for to confirm whether the compiler turned a string concatenation into a StringBuilder chain or whether a lambda captured more than expected. Reading invokevirtual vs. invokestatic by hand here is the same skill that underlies bytecode-manipulation libraries like ASM and Byte Buddy, which power APM agents such as Datadog's and New Relic's.