We perform a characterization of traces in Java programs. We collect traces in RedSpot, our trace collection system for the Jupiter Java Virtual Machine, using the SPECjvm98 and Java Grande benchmarks. We characterize these traces according to their number, length, several forms of coverage, predictability, and execution patterns. We find that traces can be used to group benchmarks into categories, represent a program compactly, focus optimization on only the most frequently executed instructions, and predict the control flow of a program.