InfoQ eMag: Java Agents and Bytecode
Java bytecode programming is not for the faint of heart, but in a world where new JVM languages, fancy profilers, and proxying frameworks are prevalent, it can be a powerful tool not just for reengineering existing code, but for creating clean, reusable, and reduced coupling architectures.
In this eMag we have curated articles on bytecode manipulation, including how to manipulate bytecode using three important frameworks: Javassist, ASM, and ByteBuddy, as well as several higher level use cases where developers will benefit from understanding bytecode.
Java Agents and Bytecode eMag include:
- Living In The Matrix With Bytecode Manipulation - Ashley Puls examines three common byte code manipulation frameworks: ASM, CGLib, and Javassist (Java Programming Assistant), showing how these tools work and why frameworks like Spring use them.
- Easily Create Java Agents with Byte Buddy - In this article Rafael Winterhalter, creator of the bytecode manipulation tool Byte Buddy, provides detailed guidance on how to easily create Java agents using Byte Buddy.
- Java Bytecode: Bending the Rules - Few developers ever work with Java bytecode directly, but bytecode format is not difficult to understand. In this article Rafael Winterhalter takes us on a tour of Java bytecode & some of its capabilities
- Five Advanced Debugging Techniques Every Java Developer Should Know - With architectures becoming more distributed and code more asynchronous, pinpointing and resolving errors in production is harder than ever. In this article we investigate five advanced techniques that can help you get to the root cause of painful bugs in production more quickly, without adding material overhead.
- Secrets of the Bytecode Ninjas - Java is defined by the Java Language Spec, but the resulting bytecode is defined by a completely separate standard. This article looks at the structure of class files and how to create them directly.
- Java’s secret weapon: invokedynamic - invokedynamic was the first new Java bytecode since Java 1.0 and was crucial in implementing the “headline” features of Java 8 (such as lambdas and default methods). In this article, we take a deep dive into invokedynamic and explain why it is such a powerful tool for the Java platform and for JVM languages such as JRuby and Nashorn.
InfoQ eMags are professionally designed, downloadable collections of popular InfoQ content - articles, interviews, presentations, and research - covering the latest software development technologies, trends, and topics.