Educational resource for learning the ethics, history and process of decompilation. With sections on various approaches.
Lengthy article describes what Java decompilers are and what tools are available for developers.
Free Java decompiler also works as an optimizer that transforms class files in various ways. See an example of how it works.