A brief history of garbage collection
Anatomy of a flawed microbenchmark
Are all stateful Web applications broken?
Be a good (event) listener
Building a better HashMap
Characterizing thread safety
Coaxing J2EE out of the container
Concurrency made simple (sort of)
Concurrent collections classes
Dealing with InterruptedException
Decorating with dynamic proxies
Dynamic compilation and performance measurement
Enable initialization atomicity
Fixing the Java Memory Model, Part 1
Fixing the Java Memory Model, Part 2
Garbage collection and performance
Garbage collection in the HotSpot JVM
Generics gotchas
Going atomic
Going wild with generics, Part 1
Going wild with generics, Part 2
Good housekeeping practices
Hashing it out
Hey, where'd my thread go?
I have to document THAT?
Instrumenting applications with JMX
Introduction to nonblocking algorithms
Is that your final answer?
Kill bugs dead
Make database queries without the database
Managing volatility
More flexible, scalable locking in JDK 5.0
Performance management -- do you have a plan?
Plugging memory leaks with soft references
Plugging memory leaks with weak references
Safe construction techniques
Screen-scraping with XQuery
Should you use JMS in your next enterprise application?
State replication in the Web tier
Stick a fork in it, Part 1
Stick a fork in it, Part 2
Synchronization optimizations in Mustang
Testing with leverage, Part 1
Testing with leverage, Part 2
Testing with leverage, Part 3
The closures debate
The exceptions debate
The pseudo-typedef antipattern
Thread pools and work queues
To mutate or not to mutate?
Understanding JTS -- An introduction to transactions
Understanding JTS -- Balancing safety and performance
Understanding JTS -- The magic behind the scenes
Urban performance legends
Urban performance legends, revisited
Using Java 5 language features in earlier JDKs
Where's your point?
Whose object is it, anyway?