Apache XBean :: ASM Shaded (Repackaging) Framework: In-Depth Analysis of Performance Improvement Effects on Java Class Libraries
public class ExampleLibrary {
public void performOperation(int value) {
}
}
<dependencies>
<!-- XBean framework dependencies -->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-asm-shaded</artifactId>
<version>4.15</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
import org.apache.xbean.asm.shaded.org.objectweb.asm.ClassWriter;
import org.apache.xbean.asm.shaded.org.objectweb.asm.MethodVisitor;
import org.apache.xbean.asm.shaded.org.objectweb.asm.Opcodes;
public class ExampleLibraryOptimized {
public void performOperation(int value) {
System.out.println("Performing optimized operation...");
}
public byte[] generateOptimizedBytecode() {
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "ExampleLibrary", null, "java/lang/Object", null);
MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "performOperation", "(I)V", null, null);
mv.visitCode();
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
mv.visitLdcInsn("Performing optimized operation...");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
mv.visitInsn(Opcodes.RETURN);
mv.visitMaxs(2, 1);
mv.visitEnd();
cw.visitEnd();
return cw.toByteArray();
}
}