I've been writing articles about Java™ since 1999, published first by JavaWorld and then by several different zones within IBM® developerWorks®. My recent articles on developerWorks are listed below, with the newest articles on each topic listed first.

Java Web services series (ongoing)

The year ahead in Java Web services: Introduction to the series, and to the changes coming for SOAP Web services in 2006

Java classworking toolkit series (ongoing)

Generics with ASM: Java generics signatures in the binary class representation, and the basics of using the ASM bytecode framework for working with generics

Reflecting generics: Exploring how the Java reflection APIs can be used to dig out generic type information at runtime

Combining source and bytecode generation: A look at how I'm implementing source code enhancement as an alternative to bytecode enhancement for JiBX 2.0

Inside JiBX code generation: A look at the techniques I used to handle bytecode generation for the JiBX XML data binding framework, including the features I added on top of BCEL to make it more usable

Use J2SE 5.0 features on older JVMs: Using Retroweaver to adapt classfiles generated by the J2SE 5.0 compiler for execution on older JVMs, including support for J2SE 5.0-specific features such as generics

Annotations with ASM: Using the ASM bytecode framework to read annotations, with the example application of generating toString() methods for classes from annotations as the classes are being loaded into the JVM

ASM classworking: Trying out the ASM bytecode framework to evaluate performance and ease of use in a comparison with the older BCEL and Javassist frameworks

Performance tracing with aspects: Converting the AOP logging example to a performance trace, and using it to look into Apache Axis performance

Putting aspects to work: Using the AspectWerkz framework for AOP with standard Java programs, with logging as an example aspect

Cover your code with Hansel and Gretel: A look at two open source tools for checking code coverage in testing

XML transport performance series (2004)

Improve XML transport performance, Part 2: Comparing the document size and processing overhead for XML documents represented as plain text, gzipped text, or a binary encoding

Improve XML transport performance, Part 1: Discussing the tradeoffs in bandwidth vs. processing overhead for XML document exchange

Java programming dynamics series (2004)

Replacing reflection with code generation: Demonstrating how Java reflection can be replaced by dynamic code generation at runtime, and measuring the potential performance benefits

Bytecode engineering with BCEL: Using the Byte Code Engineering Library (BCEL) to work with bytecode at the individual instruction level

Aspect-oriented changes with Javassist: Using Javassist for systematic transformation of binary classes

Transforming classes on-the-fly: Modifying classes with Javassist as they're being loaded into the JVM