No code changes, no rebuild
The OpenTelemetry Java agent instruments supported libraries at class-load time. Your servlet container, JDBC driver, HTTP client, and messaging library start producing spans because of a JVM flag, not because you edited them. For an existing Java service that nobody wants to refactor, this is the cheapest observability you can buy.