We apply speculative multithreading to sequential Java programs in software to achieve speedup on existing multiprocessors. A common speculation library supports both Java bytecode interpreter and JIT compiler implementations. Initial profiling results indicate three main optimizations: adaptive return value prediction, online fork heuristics, and in-order nested method level speculation.