ProGuard is a shrinker, optimizer, obfuscator, and preverifier for Java bytecode. It detects and removes unused classes, fields, methods, and attributes. It optimizes methods and removes dead code. It renames the remaining classes, fields, and methods using short, meaningless names. Finally, it preverifies the processed code for Java 6 or higher, or for Java Micro Edition. The resulting code is more compact, more efficient, and more difficult to reverse-engineer. Advantages of ProGuard compared to other Java shrinkers and obfuscators are compact template-based configuration, memory efficiency, and speed. It is mostly popular for embedded development and for commercial development, and is integrated in Oracle's Wireless Toolkit, in Intel's TXE SDK, and in Google's Android SDK.