Decompiling Java - Nolan, Godfrey (Expert's voice in Java., 2004)
Both Java and .NET use the idea of a "virtual machine," or VM. And while VMs are useful for some purposes, they undermine the security of your source code, because creation can be reversed, or decompiled. Which makes this one-of-a-kind book extremely useful: you must understand decompilation, to properly protect your intellectual property. For example, how secure is your code after you run an obfuscator? The book will answer questions like this, and provide more thorough information about Java byte codes and the Java Virtual Machine (JVM) than any other book on the market. This book redresses the imbalance by providing insights into the features and limitations of today's decompilers and obfuscators, and offering a detailed look at what JVMs actually do.